年前升级200M电信光线后,一直对路由器不满意,正好回购公司淘汰的Dell OP7010,再买个I350四网口千兆网卡,ESXi开启搞起。Dell是Q77系列的主板+I5 3470的cpu,装ESXi6.x,支持VT-D,可以使用网卡直通,再装上ROS6.x和Nas黑群晖,开启ros和nas后,空载的时候使用功率计检测在30w左右。很满意了,毕竟是台式的CPU。
废话不多说了,下面主要讲讲RouterOS解决ADSL动态IP端口映射和显示IP问题。
环境:ADSL动态IP,ROS网关10.0.0.1,内网IP:10.0.0.9,端口:443,主要用于网站web,https访问(NAS建的Web Station)
需求:1、外网直接访问域名https://www.myxzy.com(已绑定ADSL获取的IP地址,本站没开HTTPS访问也没做绑定,这边只是做演示),可以直接打开网站
2、内网直接访问https://www.myxzy.com,可以直接打开网站
3、可以正常获取外网客户端访问IP
详细图文操作:
1、端口映射
使用Winbox打开ROS路由器,打开IP --> Firewall --> NAT,创建一条dstnat策略,其中“Chain”设为dstnat,“Dst.Address”设为ADSL获取到的公网IP地址,“Protocol”设为6(tcp),“Dst.Port”设为443,“Action”设为dst-nat,“To Address”设为10.0.0.9,“To Ports”设为443。
右击该条策略,选择“comment”,输入“443”,名字可以随便输,但是和脚本中用到的要一样的。
端口映射已经可以了,外部网路可以通过公网IP/域名访问了内网10.0.0.9这台的网站了,但是内网用户不能通过公网IP/域名访问了。
2、内网和外网访问以及IP显示问题
由于使用的是ADSL PPPoE拨号动态获取IP地址,所以会有一条srcnat策略,Action设置为“masquerade”,masquerade是srcnat的一个特例,主要用在无固定ip网关的情况下,比如adsl拨号等。由于NAT方设置较masquerade复杂,加上现在大量的ROS教程都是以masquerade方式共享上网,所以目前在用的ROS大多数采用masquerade设置共享。如果不进行设置客户端显示IP都会是网关地址。
修改这条srcnat策略,“Out.Interface”设为!LAN,这边LAN-bridge1是桥接了所有内网网口。
创建一条srcnat策略,其中“Chain”设为srcnat,“Src.Address”设为10.0.0.0/23(根据子网掩码设置),“Action”设为masquerade
3、脚本更新公网IP地址
由于是动态IP地址,每次会有不一样的,所以这边需要添加一个脚本用于更新公网IP地址。
system --> script,新建一个脚本,ADSL-PPPoE是创建的PPPoE拨号的名称,443是策略的名称
:global ipaddr [/ip address get [/ip address find interface=ADSL-PPPoE] address] :set ipaddr [:pick $ipaddr 0 ([len $ipaddr] -3)] :global oldip [/ip firewall nat get [/ip firewall nat find comment="443"] dst-address] :if ($ipaddr != $oldip) do={ :log info [/ip firewall nat set [/ip firewall nat find comment="443"] dst-address=$ipaddr] }
system --> schedule,新建一个计划,Interval是间隔时间,其中的443-ip是上面创建的脚本名称
到此端口映射已经完成,内网外网都可以访问。
4、回流设置(建议不用设置该策略)
创建一条srcnat策略,其中“Chain”设为srcnat,“Src.Address”设为10.0.0.0/24,“Dst.Address”设为10.0.0.9,“Protocol”设为6(tcp),“Dst.Port”设为443,“Action”设为src-nat,“To Address”设为ADSL获取到的公网IP地址,“To Ports”设为443。
右击该条策略,选择“comment”,输入“443_2”,名字可以随便输,但是和脚本中用到的要一样的。
回流设置好了,内网用户可以通过公网IP/域名访问了内网10.0.0.9这台的网站了。
回流,就是将内网源地址为网段的所有机器对所有目标地址的需求全都进行源地址转换为外网IP。所有从外网回来的数据通过外网IP再回传到内网的机器,这样就保证了内网上网正常,但这样的效率下降到原来的50%,对于masquerade来共享上网时,内网访问内网服务器显示的IP是网关地址还是外网IP是一样的,所以明显不合算。
目前有 9 条评论
游客1900201250 2019-10-13 14:274楼
这个回流不行评论
星之宇 2019-10-13 14:30
@游客1900201250:单个回流,一般也不建议做回流,内网服务器识别内网ip没有什么问题的。回复
游客2015768081 2019-09-30 21:453楼
大神,请教如何设置ros的pppoe服务器,让客户端每次拨号时候,从ros获取到的内网ip是随机的?也就是同一个客户端每次拨号获取到的内网ip都不是同一个的意思。我的目的就是希望客户端每次拨号都能获取到不同的外网IP。在ros上已经对pppoe服务器的pool的ip段进行分组,对应每一条的外网ip。感谢!!评论
星之宇 2019-09-30 21:53
@游客2015768081:这个脚本可以实现,不过比较麻烦。思路就是未用的地址池按时间刷新下去,连的时候刷新到哪个用哪个。回复
游客2015768081 2019-09-30 21:58
@星之宇:我是菜鸟不懂写脚本。不管怎样还是感谢大神给的思路。谢谢回复
游客2028815949 2019-04-29 15:412楼
大神。你这教程,out.interface list怎么选择LAN-bridge1呢??评论
星之宇 2019-04-29 15:42
@游客2028815949:没看到前面有个!回复
pyatang 2017-11-13 10:341楼
楼主好,目前我准备树莓派搭建一个微型服务器,光猫是重庆区域的 ZXHN F650, 下联是苹果的airport express ,光猫目前是桥接状态,找人远程设置的,尚未获得管理员密码。在airport express 上设置好PNAT 后, 通过ssh(映射端口号22222) 无法访问。 获得的公网IP, 无法ping 通 , 手机能用traceroute 追踪到。请问是否有可能是光猫上联的 OLT 禁 ping 呢?评论
星之宇 2017-11-13 10:42
@pyatang:首先公网ip地址要和苹果路由器获取到的地址一样?
其次中兴光猫内网测试会有问题,建议使用外网测试回复