路由器从外向内访问(端口转发)及从内向外访问(NAT)的配置

路由器从外向内访问(端口转发)及从内向外访问(NAT)的配置

描述需求

最近工作上有一个需求,大致意思就是解决路由器内外访问的问题。这个问题可以分成两部分,一个是外部设备(如服务器)能主动访问路由器局域网内的主机,另一个就是内部的主机需要能够访问外部的服务器。

从内向外访问

对于从内向外访问,大家应该不陌生。我们使用手机连上WiFi上网就是一个例子,里面如何实现的大家可能就没那么关心了。

从外向内访问

主动从外向内访问就麻烦了,这里需要公网IP,而这个实在就是珍稀资源了。当然可以从网上找一些内网穿透的工具,免费的也有,推荐个Nqrok吧,也是能够用。

前提条件

因为要从外向内访问,没有公网IP基本就GG了,可以向运行商申请(有点难,电信可以试试)。接下来的内容默认拥有一个公网IP,这也是一种妥协,如果每个设备都有一个唯一的IP,我这要干的事都不用麻烦了。

解决思路

本人使用的是一个openwrt系统的路由器,设置的东西还挺多的,也了解一些计算机网络的知识。对于从内向外访问就像给别人发微信,别人回的微信也能收到,是一个NAT的应用。只使用一个IP的话,从外向内访问就要用到端口转发了。

端口转发

端口转发的概念我不背了,有兴趣谷歌,大致意思就是路由器会将发给指定IP和端口的内容,转发到别的IP和端口。我们要用的就是将发给唯一公网IP的内容,转发给我们的内部设备。

地址转换协议(NAT)

地址转换协议(NAT)是一个能记住向外访问请求的东西,也就是说局域网的设备通过路由器访问了公网服务器,当服务器返回消息的时候,路由器通过记住的请求,准确的转发给之前发请求的设备。NAT肯定不止这么点东西,但是我们要用到的就是让所有出去的请求都使用唯一的IP。

环境搭建

接下来项模拟吧,大概用到两个路由器模拟两个网络,两个电脑用来模拟服务端和客户端。如果没有那么多路由器和电脑的话,直接将模拟的外部设备接到内部网络路由器WAN口上也行,内部设备用手机连上WiFi也可以,但是外部设备访问内部设备就需要一个手机端的调试软件了。

外部网络模拟

先使用一台路由器配置个外部网络,这里比较简单,直接设置LAN口地址就行,例如我这配置的是

配置项 配置值
协议 静态地址
IP 10.10.18.1
子网掩码 255.255.0.0
网关 10.10.18.1

外部设备配置

使用一台电脑作为外部设备,接下来的测试需要用它来当服务端或者客户端,配置如下

配置项 配置值
IP 10.10.18.102
子网掩码 255.255.0.0
网关 10.10.18.1

内部网络配置

内部网络配置是这部分内容的关键,需要分别配置LAN口和WAN口,一个用来接入外部网络,一个用于连接内部设备,构建局域网,这里使用的是192.168.0.0/16网段。

对于WAN口配置如下,未使用DHCP

配置项 配置值
协议 静态地址
IP 10.10.18.121
子网掩码 255.255.0.0
网关 10.10.18.1

对于LAN口配置如下

配置项 配置值
协议 静态地址
IP 192.168.121.1
子网掩码 255.255.0.0
网关 192.168.121.1

内部设备配置

内部设备就是在192.168.0.0/16网段下局域网运行的设备,因为需求,希望此设备既能主动访问外面,又能被外面访问。先来看配置吧,具体操作后续说明,配置如下

配置项 配置值
协议 静态地址
IP 192.168.0.158
子网掩码 255.255.0.0
网关 192.168.121.1

设置端口转发

端口转发:将外部设备对路由器的访问转移到内部指定设备。

接下来可能会有些不同,我这是openwrt上的配置,如果大家是其他路由器的话就参考参考吧!

选择 网络 - 防火墙

路由器从外向内访问(端口转发)及从内向外访问(NAT)的配置_第1张图片

设置接收转发

在基本设置界面,设置基本设置转发 – 接收,保存应用并重启设备。
路由器从外向内访问(端口转发)及从内向外访问(NAT)的配置_第2张图片

选择 端口转发页面

路由器从外向内访问(端口转发)及从内向外访问(NAT)的配置_第3张图片

在底部添加转发规则

设置WAN口对某端口的访问转发到内部指定IP和端口
路由器从外向内访问(端口转发)及从内向外访问(NAT)的配置_第4张图片

设置NAT规则

NAT(网络地址转换):修改内部向外通信报文的源IP,并发送

选择 防火墙 – 通信规则页面

路由器从外向内访问(端口转发)及从内向外访问(NAT)的配置_第5张图片

步骤二:在底部Source NAT栏设置规则
路由器从外向内访问(端口转发)及从内向外访问(NAT)的配置_第6张图片

实际使用

举例:

内部设备:

配置项 配置值
IP 192.168.0.158
Mask 255.255.0.0
Gateway 192.168.121.1

外部设备:

配置项 配置值
IP 10.10.18.102
Mask 255.255.0.0
Gateway 10.10.18.1

路由器WAN :

配置项 配置值
IP 10.10.18.121
Mask 255.255.0.0
Gateway 10.10.18.1

路由器LAN:

配置项 配置值
IP 192.168.121.1
Mask 255.255.0.0
Gateway 192.168.121.1

转发规则:

WAN port at 60000 => LAN 192.168.0.158 at 60000

NAT规则:

LAN => WAN use IP 10.10.18.121 

使用UDP访问

内部访问外部

类型 IP 端口号
客户端 192.168.0.158 60000
服务端 10.10.0.102 60000

外部访问内部

类型 IP 端口号
客户端 10.10.18.102 60000
服务端 10.10.18.121 60000

使用TCP连接

内部设备作为服务端,外部设备作为客户端

类别 发送IP 发送端口 被接收IP 接收端口
服务端 192.168.0.158 60000 10.10.18.102 12345
客户端 10.10.18.102 12345 10.10.18.121 60000

外部设备作为服务端,内部设备作为客户端

类别 发送IP 发送端口 被接收IP 接收端口
服务端 10.10.18.102 60000 10.10.18.121 12345
客户端 192.168.0.158 12345 10.10.18.102 60000

速度测试

因为需要,还希望测试一下端口转发的速率。使用FTP功能测试,工具:IPOP 4.1(强烈推荐,是一个调试工具大合集,体积小单文件,谷歌搜索就能下)。下面是我简单测试的结果,一边启动ftp服务,另一边用文件夹去访问复制文件就行,可以在任务管理器里面看网速。

添加转发规则

转发规则:WAN port at 21=> LAN 192.168.0.158 at 21

IPOP开启FTP服务端

使用IPOP软件服务里面的FTP服务,选好目录,配好账号密码,点start就可以了。
路由器从外向内访问(端口转发)及从内向外访问(NAT)的配置_第7张图片

测试结果

使用WAN口作为FTP服务端

LAN => WAN 40Mbps
WAN => LAN 98Mbps

使用LAN口作为FTP服务端

LAN => WAN 30Mbps
WAN => LAN 98Mbps

可以看到,其实使用端口转发功能影响并不大的,关于速率的不同我猜是电脑的问题。

你可能感兴趣的:(Openwrt,路由器,openwrt,网关,网络)