Unix&Linuxまたはネットワークエンジニアリングにこの質問をする必要があるかどうかはわかりません。
これは本当のシーンです。
[ホスト1]----[キャリアランクNAT]---->AWS<----[キャリアランクNAT]----[ホスト2]
モデレーター1そしてホスト2逆方向SSH(autossh)を介してAWS Boxに接続すると、必要に応じてシェル接続が可能になり、必要に応じて他のポートを公開できます。
ホスト2バックアップダンプを次の場所にプッシュします。モデレーター1SCPを定期的に使用してください。実際にはありますホスト2×10データダンプボックスをプッシュします。最も近い AWS の場所はボックスの位置から離れているため、遅延時間が高くなります。
ボックス間にSSHトンネルを確立するためにAWSボックスをランデブーポイントとして使用できますか?私はIPv6トンネリングプロキシについて知っていますが、その地域のISPはまだそれを採用していません(20年が遅すぎました…くそ!)。私は以下に基づいてソリューションを探しています。
- TCP/UDPホールパンチング(実際の実装)
- AWS の UPnP/NAT-PMP サービス
- Chromeリモートデスクトップなどのツールを使用してハッキングして、VNCの代わりにSSHポートを公開します。
- その他のルーターサービス。
- その他の実用的な方法。
ボックスはほとんどCentOS 6/7を実行します。
答え1
しかし、これは必ずしも必要ではありません。 iptablesを使用して、ホスト1またはホスト2リバースローカルポートを外部ポートとして公開できます。 SSHリバーストンネルでhost2を接続するとします。
user2@host2 $ ssh -R 9999:localhost:22 [email protected]
これで、リスニングポートaws.com:9999をaws [localport:9999]に転送できます。 AWS サーバーから:
[email protected] # iptables -t nat -I PREROUTING -p tcp --dport 9999 -j DNAT --to 127.0.0.1:9999
これで、ホスト2からホスト1に接続できます。
user1@host1 $ ssh [email protected] -p 9999
ビンゴ。次のように接続します。
[Host1] --> [aws:port9999] --> [awsの逆方向トンネル: 127.0.0.1:9999] --> [Host2]
この接続が使用されなくなった場合は、iptableレコードを削除する必要があります。
[email protected] # iptables -t nat -A PREROUTING -p tcp --dport 9999 -j DNAT --to 127.0.0.1:9999
このソリューションの欠点は、ホスト2が外部ポート9999を介してすべての人に公開されることです。ログインするにはパスワードを入力する必要がありますが、パスワードが公開されています。
UPD:ローカル転送を有効にする必要があるかもしれません。
awsuser@aws # ls echo 1 > /proc/sys/net/ipv4/conf/all/route_localnet
または、すべてのインターフェイスで有効にする代わりに、収益インターフェイスでのみ有効にします。
awsuser@aws # ls echo 1 > /proc/sys/net/ipv4/conf/eth0/accept_local