
NAT Tunnel: NATの背後から簡単にサービスを提供するためのツール
パブリックIPとフィルタリングされていないポートを持つサーバーにアクセスできる場合、そのサーバーでNAT Tunnel (NT) サーバーを実行し、NATの内側の自分のマシンでNTクライアントを実行できます。 サーバーは2つのオープンポートを必要とします: 1つはNTクライアントとの通信用 (--admin)、もう1つは通常のクライアントが接続するためのポート (--public: これはユーザーに使わせたいポートです)。
NTクライアントはサーバーの管理IP/ポートに接続を開きます。サーバーが新しい接続を受け取ると、NTクライアントに通知し、NTクライアントは新しいトンネル接続をサーバーに作成し、その接続はNTクライアント側の目的のサービス (--local) に接続されます。
管理インターフェース上のNTクライアントとNTサーバー間の接続は、共有シークレットによって不正使用から保護されています。パケットを傍受できる攻撃者は、シークレットの複雑さが不十分であれば解読できる可能性があります。少なくとも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