
我有 2 台虛擬機,一台具有私人 IP 位址(位於 NAT 後面),另一台具有公用 IP 位址。我用 NAT 創建了 SSH 隧道。目標是將公共虛擬機器連接到 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 上回應。的隧道介面。我對 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)