自己编译了一个OpenWRT作为主路由,但是一开始端口转发无效,经过一番摸索,端口转发问题解决,但是在内网使用ddns外网+端口号无法访问又出现了,经过另外的折腾终于解决,现在记录一下,希望对存在类似问题的朋友有帮助。

OpenWRT版本号:
固件版本 OpenWrt R22.1.1 / LuCI Master (git-21.335.48743-5f363d9)
内核版本 5.10.93

一、端口转发失效的问题
有人说是内核的问题,有人说是docker的问题,再重新编译也比较麻烦,看看能不能省事哪里设置一下最好能解决。经过测试,有人说要在防火墙–自定义规则里面设置命令,我试了下,可以了。命令如下:

iptables -t nat -I PREROUTING -i pppoe-WAN -p tcp --dport 9180 -j DNAT --to-destination 10.0.0.1:80

上面这条命令,“pppoe-WAN”是自己WAN口的名称,如果不一样自行替换一下,“9180”是转发出去的外网端口,“10.0.0.1:80”是自己内网设备IP以及它的端口,自行替换。然后重启路由器就可以了。

二、NAT环回失效问题

  1. ssh连接openwrt系统后,编辑/etc/sysctl.d/11-br-netfilter.conf文件,确认后面的值是0,如果不是,需要改为0。
 net.bridge.bridge-nf-call-arptables=0
 net.bridge.bridge-nf-call-ip6tables=0
 net.bridge.bridge-nf-call-iptables=0
  1. 编辑/etc/sysctl.conf文件。文件内容可能是空的,把上面三行内容复制进sysctl.conf文件,保存退出。
  2. ssh内输入sysctl -p命令,查看输出结果是不是第一条下面的那三条内容。
  3. 最后,输入/etc/init.d/sysctl restart 。

上面的内容,我也是网上找的的,设置完成后,还是不行,文章来源是使用openwrt作为拨号主路由使用中关于端口回流失效的问题
后来我在无意间发现,OpenWRT的端口转发中有一个“启用 NAT 环回”的选项,默认是启用状态。我就想,上面文章中的设置就是启用NAT环回,这里再启用会不会冲突了呢?我就把“启用 NAT 环回”的选项取消掉了,试了一下,居然成功了,简直不可思议。
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐