H3C路由器设置NAT回环、端口回流
起因
- 当用本地服务器作为frp的服务端时,需要在路由器上设置端口映射,将公网ip和本地ip映射起来,用于作为frps的公网,这一步很简单一般都会有可视化界面来实现,但实际测试时发现问题:
- 当非局域网内通过frp访问时,正常。
- 当本地服务器所在同一局域网内访问时,不通。
- 一开始还以为是frp有什么问题,后来多方查证,才明白是路由相关的问题,而且这也不能算是问题,是路由器的正常现象,但是也可以通过设置来解决此问题。
准备
-
路由器:H3C MSR830-10BEI
-
串口连接线,用于连接电脑和路由器的console口,一端是网线头,一端是9针头的(类似显示器线接头,台式机后边可能会有此接口,笔记本没有则还需要一个转usb的转换头)
-
电脑,安装SecureCRT软件,用于串口连接
开始
- 连接线9针头一端接电脑上,网线头一端接路由器console端口上(路由器上有标识)
- 电脑上打开SecureCRT,同时需要到【计算机】选择【属性】--【设备管理器】--【端口】查看当前连接的端口是哪个,然后点“快速连接”来配置连接参数,按照下图设置:
- 连接成功会显示
<H3C>
字样。
相关命令
- 首先要弄明白自己路由的外网口(wan口)和内网口(lan口),可以登录路由后台,在【系统工具】 -- 【配置管理】可以看到所有的配置行,其中
interface
开头的就是网口相关,但是有很多个,并不容易区分,我的还是相对比较简单区分,内网口带关键字vlan,所以一下就分辨出来了interface Vlan-interface1
,外网口则不好找,一开始以为是interface GigabitEthernet0/0
,但后来发现并不是,由于我们一开始做了nat映射,所以在配置文件中找nat server protocol
关键字,看它是在哪个interface下,最终发现是interface Dialer0
. - 进入系统配置,命令:
sys
,会提示按Ctrl + Z
退出,此命令等同于system-view
,也可能提示无法登录等,可以输入命令super
,然后输入密码,我的是admin
,再次sys
就可以登录了此时提示符会由<H3C>
变成[H3C]
。 - 配置ACL 2000,允许对内部网络中192.168.1.0/24网段的报文进行地址转换:
- 命令:
acl basic 2000
,进入acl 2000配置,网上也有很多说是acl number 2000
,可能不同机器不一样,都试下。 - 命令:
rule permit source 192.168.1.0 0.0.0.255
,根据实际的192.168.x.x的网段来 - 命令:
quit
,退出
- 命令:
- 在外网口配置Easy IP方式的出方向动态地址转换,使得内网主机访问内网服务器的报文可以使用外网口的IP地址进行源地址转换:
- 命令:
interface Dialer0
,进入外网口配置 - 命令:
nat outbound 2000
,设置outbound - 命令:
quit
,退出
- 命令:
- 在内网口上开启NAT hairpin功能:
- 命令:
interface Vlan-interface1
,进入内网口配置 - 命令:
nat hairpin enable
,开启hairpin - 命令:
quit
,退出
- 命令:
- 以上配置完成后,正常来说是可以访问了,不需要重启,但是我的路由并不能,网上查找后又加入了一条命令:
security-zone intra-zone default permit
- 如果想删除某个上述命令,则需要用命令:
undo xxxx
,例如进入内网口配置后命令undo nat hairpin enable
来取消开启
结尾
- 后续完善的还有很多,但和路由设置没太多关系了,例如自动解析域名到公网IP,以免断网后公网IP变更导致frp失败等
- 本身对路由配置并不了解,记录下来,可能后续还会用到,以免忘了
- 最后是换了个刷了OpenWrt的路由器,不需要自己配置回环,而且自带自动解析域名等各种功能,比自己折腾这些好多了,哈哈!