内网地址映射到公网地址

环境描述:

1.设备A IP:192.168.0.2 位置: 公司内网地址

2.设备B IP:1.1.1.1 位置: 阿里云公网服务器

设备A为内网服务器,但是能够连接外网,只是不让外网访问,设备B为阿里云公网服务器。

应甲方要求,需要在指定的设备A上部署环境、服务,但是进行功能测试时,要通过公网通信。

设备A只有内网IP,可以访问公网,但是公网无法主动访问设备A,所以现在需要把设备A上的服务映射到设备B上。

映射过程:

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,改变原始请求的目的地址(端口)

在设备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端口

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值