
NAT Tunnel: NAT 뒤에서 손쉽게 서비스를 제공합니다
공인 IP와 필터링되지 않은 포트에 접근할 수 있는 서버가 있다면, 해당 서버에서 NAT Tunnel (NT) 서버를 실행하고, NAT 뒤에 있는 자신의 장비에서 NT 클라이언트를 실행할 수 있습니다. 서버에는 두 개의 열린 포트가 필요합니다. 하나는 NT 클라이언트와의 통신용 (--admin), 다른 하나는 일반 클라이언트가 연결하기 위한 포트 (--public: 사용자들이 사용할 포트) 입니다.
NT 클라이언트는 서버의 admin IP/포트로 연결을 엽니다. 서버가 새 연결을 수신하면 NT 클라이언트에 신호를 보내고, 클라이언트는 서버에 새로운 터널 연결을 생성합니다. 이 터널은 NT 클라이언트 측의 원하는 서비스 (--local)에 연결됩니다.
NT 클라이언트와 NT 서버 간의 admin 인터페이스 연결은 공유 비밀(shared secret)로 보호되어 무단 사용을 방지합니다. 패킷을 가로챌 수 있는 공격자는 비밀의 복잡성이 부족할 경우 해독할 수 있습니다. 최소 10개의 무작위 문자와 숫자를 권장합니다.
예시: 로컬 머신의 80번 포트에서 HTTP 서버를 수신 중입니다. 이를 클라우드 서버/VPS 등의 공인 IP에서 7000번 포트로 이용 가능하게 만들고 싶습니다. 제어 채널을 위해 클라우드 서버의 8000번 포트를 사용합니다.
서버:
natsrv.py --mode server --secret s3cretP4ss --public 0.0.0.0:7000 --admin 0.0.0.0:8000
클라이언트:
natsrv.py --mode client --secret s3cretP4ss --local localhost:80 --admin example.com:8000