|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
动态IP的ADSL端口映射详解
适用环境:
ros 2.9.27
原理: 大家平时都在打电话,你打过去,对方要回答你,一直到挂机。有时候出现故障,你能听见对方说话,而对方却听不见你说什么,
也有反过来的,你听不到对方的回答,对方却能听到你的声音,这两种情况,你的电话交谈都是没法进行下去的。
网络访问也一样,有一个信息的请求方,和一个信息的回答方,缺一不可。
因此,端口映射要包括这两个方面,才能正确的连接。
访问者发送请求到服务器,路由上用dst-nat来进行转接,意思就是把访问者访问的地址转接到一个最终的被访问这地址
被访问者收到请求后,就回答访问的请求,路由上用src-nat来转接
经常有人说映射不成功,其中的原因之一,很多都是只做了dst-nat,而没有做src-nat。试想一下,你打了一个人的电话,却听不见对方的声音,你打的电话能叫做成功吗?有的人只做了dst-nat也能成功,是因为在其他的设置方面,无意的完成了src-nat的功能
动态IP的ADSL,由于其IP地址是经常变化的,所以不适合用IP做参数来映射,ROS提供了接口这个参数,而ADSL的接口名是不变的,因此用接口名来做参数就可行,意思是只要访问这个接口,就把他转接到指定的IP上去,而不管这个接口是什么IP
实际例子:
明白了原理之后,就用一个实际的例子进行试验
实验环境:ADSL的接口名为TEL-ADSL,内网HTTP服务器IP为192.168.0.10
先做dst-nat:
chain=dstnat
protocol=tcp
src-port=80 记得这里是src-port,而不是dat-port,意思是服务器80端口的回答
out-interface=TEL-ADSL 关键就在这里,不用dst-address而用这个,因为是从外面来的访问,所以是in接口
action=dst-nat
to-address=192.168.0.10
to-port=80
然后做src-nat:
chain=srcnat
protocol=tcp
dst-port=80
in-interface=TEL-ADSL 是回答外网,所以是out接口,可以不选,若是有多外线的情况下,建议选上,以保证回答的数据走的是访问者来的线路,试想一下,如果你用移动的打电话,对方用连通的回答你,电话能打成吗?
action=masquerade 用这个不必指定IP,固定IP的线路可以用src-dat
脚本代码:
/ip firewall nat
add chain=dstnat in-interface=TEL-ADSL protocol=tcp dst-port=80 action=dst-nat \
to-addresses=192.168.0.10 to-ports=80 \
comment="测试ADSL端口映射--用户发出请求" disabled=no
add chain=srcnat out-interface=TEL-ADSL src-address=192.168.0.10 protocol=tcp \
src-port=80 action=masquerade comment="测试ADSL端口映射--服务器回应" \
disabled=no
你把ADSL名字和服务器IP换成你的就可以了
图片: 如图
故障处理:
如果这样不成功的话,就要查找其他方面的原因,影响网络的因素是多方面的,原则就是一个:要有一个完整的信息回路,根据这一原则检查访问者的数据是否能成功到达被访问者,被访问者的回答是否能顺利回到访问者
[ 本帖最后由 hcb 于 2008-1-19 11:57 编辑 ] |
-
|