环境描述:安全
1.设备A IP:192.168.0.2 位置: 上海 2.设备B IP:1.1.1.1 位置: 北京
设备A为甲方提供的实验室中的设备,设备B为乙方公网设备。
应甲方要求,须要在指定的设备A上部署环境、服务,可是进行功能测试时,要经过公网通讯。
设备A只有内网IP,能够访问公网,可是公网没法主动访问设备A,因此如今须要把设备A上的服务映射到设备B上。ssh
映射过程:tcp
1.经过SSH端口转发,将设备A的服务映射到设备B上(由于设备B没法主动链接设备A,因此要在设备A上进行SSH远程端口映射)测试
在设备A上执行:ssh -o ServerAliveInterval=60 -f -N -R 8080:192.168.0.2:8443 test@1.1.1.1 此命令的做用为:将本机上的服务端口8443,映射到设备B(1.1.1.1)的8080端口,当用户访问设备B的8080端口时,请求会转发到本机的8443端口上,具体是如何实现SSH隧道转发,这里再也不描述,有兴趣能够本身搜索资料。 Tips:这里有一个参数 -o ServerAliveInterval=60 必需要加上,不加此参数在长时间无操做的状况下ssh会超时,致使映射断开,此参数为每隔60s向ssh server端发送keep-alive包,保持ssh链接,防止超时
2.通过步骤1的操做,此时已经能够在设备B上看到监听的8080端口了,可是你会发现监听的IP为127.0.0.1这个回环地址(ssh远程映射只能映射远程设备的127上,没有任何办法能够改变),127是没法被外界直接访问的,因此这里咱们还须要经过防火墙作一个DNAT,改变原始请求的目的地址(端口)code
在设备B上执行:iptables -t nat -A PREROUTING -p tcp --dport 8443 -j DNAT --to-destination 127.0.0.1:8080 此命令的做用为:将访问本机8443端口的TCP报文转发至本机的127.0.0.1的8080端口上 Tips:iptables添加以上规则时,Linux系统出于安全考虑,是不容许将请求转发至127.0.0.1这个回环地址上的,因此咱们须要修改内核参数。 sysctl -w net.ipv4.conf.eth0.route_localnet=1 此时就能够将报文DNAT到127地址了。
通过以上两步操做,如今访问1.1.1.1:8443端口即访问192.168.0.2的8443端口server