ROS动态IP端口映射

2017年03月24日 技术资料 23306 views 0

年前升级200M电信光线后,一直对路由器不满意,正好回购公司淘汰的Dell OP7010,再买个I350四网口千兆网卡,EXSI开启搞起。Dell是Q77系列的主板+I5 3470的cpu,装Exsi6.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://itcat.cn(已绑定ADSL获取的IP地址,本站没开HTTPS访问也没做绑定,这边只是做演示),可以直接打开网站

2、内网直接访问https://itcat.cn,可以直接打开网站

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/域名访问了。

ROS动态IP端口映射 第1张

ROS动态IP端口映射 第2张


2、内网和外网访问以及IP显示问题

ROS动态IP端口映射 第3张

由于使用的是ADSL PPPoE拨号动态获取IP地址,所以会有一条srcnat策略,Action设置为“masquerade”,masquerade是srcnat的一个特例,主要用在无固定ip网关的情况下,比如adsl拨号等。由于NAT方设置较masquerade复杂,加上现在大量的ROS教程都是以masquerade方式共享上网,所以目前在用的ROS大多数采用masquerade设置共享。如果不进行设置客户端显示IP都会是网关地址。

修改这条srcnat策略,“Out.Interface”设为!LAN,这边LAN-bridge1是桥接了所有内网网口。

ROS动态IP端口映射 第4张


创建一条srcnat策略,其中“Chain”设为srcnat,“Src.Address”设为10.0.0.0/23(根据子网掩码设置),“Action”设为masquerade

ROS动态IP端口映射 第5张

ROS动态IP端口映射 第6张


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] }


ROS动态IP端口映射 第7张


system --> schedule,新建一个计划,Interval是间隔时间,其中的443-ip是上面创建的脚本名称

ROS动态IP端口映射 第8张

到此端口映射已经完成,内网外网都可以访问。



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这台的网站了。

ROS动态IP端口映射 第9张

ROS动态IP端口映射 第10张

回流,就是将内网源地址为网段的所有机器对所有目标地址的需求全都进行源地址转换为外网IP。所有从外网回来的数据通过外网IP再回传到内网的机器,这样就保证了内网上网正常,但这样的效率下降到原来的50%,对于masquerade来共享上网时,内网访问内网服务器显示的IP是网关地址还是外网IP是一样的,所以明显不合算。

👍好活当赏🧧