环境说明:
1 .设备A IP:192.168.0.2位置:公司内部网址
2 .设备B IP: 1.1.1.1位置: Alibaba云公网服务器
设备a是内部网服务器,但只能连接到外部网,而设备b是AlibabaCloud (阿里巴巴云)公用服务器。
根据甲方要求,必须在指定的设备a上配置环境、服务,进行功能测试时,通过公用网进行通信。
设备a只能通过内部网IP访问公共网络,但由于公共网络无法主动访问设备a,因此必须将设备a上的服务映射到设备b。
映射过程:
1 .通过ssh端口转发将设备a的服务映射到设备b (因为设备b不能主动连接到设备a,因此在设备a上执行ssh远程端口映射) ) )。
在设备a上运行: ssh-oserveraliveinterval=60-f-n-r 80803360192.168.0.233608443 test @1.1.1. 1
该命令的作用是将本机的服务端口8443映射到设备b(1.1.1.1) )的8080端口,用户访问设备b的8080端口时,请求将转发到本地的8443端口具体来说,实现SSH隧道传输的方法在此不赘述。 如果你感兴趣,请自己搜索资料。
Tips :现在需要添加名为-o ServerAliveInterval=60的参数。 如果不添加此参数,ssh将在没有长时间操作的情况下超时并断开映射。 此参数每60秒向sh服务器发送一个keep-alive包,以保持ssh连接并防止超时
2 .经过步骤1的操作,此时可以看到设备b上监听的8080端口。 但是,可以看出监听的IP是127.0.0.1的环回地址。 (ssh远程映射只能映射到远程设备127,不能进行任何更改。 ) 127无法从外部直接访问,因此此处需要在防火墙上创建DNAT以更改原始请求的目标地址。
在设备b上运行: iptables-tnat-a prerouting-ptcp-- dport 8443-jdn at---to-destination 127.0.0.133608080
此命令的作用是将访问本机8443端口的TCP消息转发到本机127.0.0.1上的8080端口
tips :如果iptables添加了以上规则,则必须修改内核参数,因为出于安全原因,Linux系统不允许将请求转发到环回地址127.0.0.1。
sysctl-wnet.IP v4.conf.eth0. route _ localnet=1
此时,可以将消息DNAT到第127地址。
经过以上两个阶段的操作,当前访问1.1.1.1:8443端口将访问192.168.0.2中的8443端口