环境描述:1.设备AIP:192.168.0.2地点:上海2.设备BIP:1.1.1.1地点:北京设备A是甲方提供的实验室A中的设备,设备B为乙方公网设备,应甲方要求,需要在指定设备A上部署环境和服务,但功能测试必须通过公网互通。设备A只有内网IP,可以访问公网,但是公网不能主动访问设备A,所以现在需要将设备A上的服务映射到设备B上。映射过程:1.通过SSH端口转发,将设备A的服务映射到设备B(因为设备B不能主动连接到设备A,必须在设备A上进行SSH远程端口映射)在设备A上执行:ssh-oServerAliveInterval=60-f-N-R8080:192.168.0.2:8443test@1.1.1.1这条命令的作用是将本机的服务端口8443映射到设备B(1.1.1.1)的8080端口,当用户访问设备B的8080端口时,请求将被转发到本地机器的8443端口。如何实现SSH隧道转发这里不再赘述。有兴趣的可以自行搜索资料。Tips:有个参数-oServerAliveInterval=60是必须加的。如果没有这个参数,ssh如果长时间没有操作就会超时,导致映射断开。这个参数是每60s向ssh服务器发送一次keep-。alive包,保持ssh连接,防止超时2.经过步骤1的操作,已经可以看到设备B上监听8080端口了,但是会发现监听IP是127.0.0.1的环回地址(sshremote映射只能映射到远程设备的127,没办法改变),127不能被外界直接访问,所以这里我们还需要通过防火墙做一个DNAT来改变目的地址(端口)原始请求在设备B上执行:iptables-tnat-APREROUTING-ptcp--dport8443-jDNAT--to-destination127.0.0.1:8080该命令的作用是转发访问的TCP包本机8443端口到本地127.0.0.1的8080端口提示:当iptables添加以上规则时,linux系统出于安全考虑不允许将请求转发到127.0.0.1的回环地址,所以我们需要修改内核参数。sysctl-wnet.ipv4.conf.eth0.route_localnet=1现在就可以把数据包DNAT到地址127了,经过上面两步,现在访问1.1.1.1:8443端口,访问192.168.0.2的8443端口
