先决条件是:
HostA: (can access public machine, can't access hostA and hostB) CentOS 7
HostB: (private machine, I can login, and it can access hostA and hostC, ) CentOS 7
HostC: (private machine, svn server, IP:)
我需要将 hostA 连接到“svn co http://hostC_IP:port/svn_repository”。
我在 hostB 上设置了一个“screen -dmS svn ssh -R HostAPublicIP:11002:HostC_IP:80 user@HostA_PublicIP -p2222”,这样 hostA 就可以通过“svn cohttp://127.0.0.1:11002/svn_repository”. 效果很好。
但是还有一个问题,就是svn仓库有外部链接,HostA无法checkout外部仓库(外部仓库的地址和HostC_IP一样),于是想到了一个办法:用“ip forward”来解决。
具体做法是,使用原地址进行检测,并将“HostC_IP:80”通过ssh隧道转发到“127.0.0.1:11002”:
sudo sysctl -w net.ipv4.conf.all.route_localnet=1
sudo iptables -t nat -A POSTROUTING -p tcp -d HostC_IP --dport 80 -j SNAT --to-source 127.0.0.1
# /proc/sys/net/ipv4/ip_forward=1 has setted
它不起作用。
我该怎么做才能让它正常运行或者它根本不可能运行?
答案1
很难理解你的问题,但如果看一下提到的规则,看起来你需要使用 -DNAT --to-dest