SSHトンネルポート転送

SSHトンネルポート転送

私は 2 つの VM を持っています。1 つはプライベート IP アドレス (NAT の背後)、もう 1 つはパブリック IP アドレスです。NAT を使用して SSH トンネルを作成しました。目標は、パブリック VM を NAT の背後のネットワークに接続し、それを介してトラフィックを転送することです。ポイントは、このネットワークで実行されるアプリケーションを、パブリック サーバー上の同様のアプリケーションで偽装することです (テスト目的)。

そこで私は次のようなものを作りました:

トンネルを有効にする

sudo ssh [email protected] -w 0:0

アドレッシング

ifconfig tun0 10.253.253.1/30 pointopoint 10.253.253.2 - Local

ifconfig tun0 10.253.253.2/30 pointopoint 10.253.253.1 - Remote

内部ネットワークへのルートの追加

ip route add 10.0.3.0/24 via 10.253.253.1

双方向通信用(これについてはよく分かりません)

sudo arp -sD 10.253.253.1 ens18 pub

ローカルでのポート転送

sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -I FORWARD 1 -s 10.253.253.1 -j ACCEPT
sudo iptables -I FORWARD 1 -d 10.253.253.1 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s 10.253.253.1 -j MASQUERADE

そして実際、これはほぼ機能しています。ローカル ホストでアプリケーション サービスをオフにすると、リモート ホストにトラフィックが転送されます。ただし、大きな問題があります。このローカル サーバーはポート 4660 で要求を送信し、他の (内部アプリケーション) はポート 4661 で応答します。ポート 4661 のすべての着信トラフィックをポート 4660 へのトンネル インターフェイスに転送するための追加ルールが必要なようです。これをどのように処理しますか? 私は iptables にあまり詳しくありませんが、次のようなことを試しましたが、うまくいきませんでした。

iptables -A PREROUTING -t nat -i eth0 -p udp --dport 4661 -j DNAT --to 10.253.253.1:4660
iptables -A FORWARD -p udp -d 10.253.253.1 --dport 4660 -j ACCEPT

答え1

はい、動作させました:

iptables -A PREROUTING -t nat -i eth0 -p udp --dport 4661 -j DNAT --to 10.253.253.2:4661(remote tun address)

関連情報