LINUX 内网设备将服务映射到公网地址

环境描述:安全

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

相关文章
相关标签/搜索