|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
环境:
ros 2.9.27
eth1:接外网固定IP:58.252.30.136/29
eth2:接内网,IP为:192.168.0.7/24 内网中另有一WEB服务器:192.168.0.2/24
目的:
希望重外网能够访问到该WEB服务器
测试:
查看了网上的很多资料,大多数的都是ROS2.9.6或更早的版本,ROS2.9.27中找不到这些资料所描述的内容,看了不少的视频教程,以及用脚本生成器生成的脚本,其方法基本上都是一样的,就是在nat里面加一条dstnat规则,如用脚本生成器V1.4得到如下:
/ ip firewall nat add chain=dstnat dst-address=(58.252.30.136) protocol=tcp dst-port=80 to-addresses=(192.168.0.2) to-ports=80 action=dst-nat comment="WEB SERVER"
把脚本导入ROS后测试 http://58.252.30.136
发现打不开网页,把系统做到最简化排出其他干扰,反复多次都是如此
意外的是,我在内网192.168.0.10上测试http:58.252.30.136时确实正常的,按照网上的资料,几乎都是说要做回流才可以在内网中使用的,测试结果看来,根本不用做回流,dstnat本身已经做好回流了
经过两天的反复实验(本人理论水平太差,只要用笨办法一一试验了),发现加一条srcnat规则就可以了,代码为:
/ ip firewall nat add chain=srcnat protocol=tcp dst-address=192.168.0.2 dst-port=80 action=masquerade comment="WEB-MAIL SERVER"
然后从外网测试 http://58.252.30.136 正常,终于是搞定了!!
再看WEB服务器上的日志,发现的记录是内网网关192.168.0.7的访问记录,而不是外网的IP地址,弄了好久还解决不了,郁闷
结论:
1,网上搜索到的资料,对于ROS2.9.27来说,大多是不正确的
2,除了做dstnat以外,还要做srcnat才能正确映射
3,不需要做回流
4,留下难题等高人指点,如何让内网服务器看到的是真实的访问者的IP,而不是内网的网关IP
以上结论,若存在错误,请高手指正 |
|