尝试各种组网工具都无法访问局域网的原因终于被找到了

282 天前
 peasant

以前一直用的 CentOS7 ,感觉 iptables 太复杂用着不方便就一直用的 firewalld ,后来换了 Debian 系统,习惯性的依然安装 firewalld 使用。

firewalld 开启包转发也很简单,一条命令即可
firewall-cmd --permanent --add-masquerade

使用 firewall-cmd --list-all 可以看到当前的设置
public (active)
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:   services: dhcpv6-client dns http https ssh
  ports: 1080/tcp
  protocols:
  forward: yes
  masquerade: yes
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

看上去一切都很好,开放端口确实是都生效了,按我的理解开启的包转发也应该是生效的,但是组网后就是访问不了局域网,折腾放弃好几次,今天终于发现问题在哪了。
interfaces:
问题就是这一条,没有指定网卡名称……,放行端口可以不指定网卡,但是开启包转发必须指定网卡。
使用下面的命令把 ens3 网卡加入到 public 的 interface 里就能正常转发了,这时候只要组网工具的路由配置正确就能正常访问网络了。
firewall-cmd --zone=public --change-interface=ens3 --permanent

当然修改以后需要执行一下 firewall-cmd --reload 来让修改生效

1645 次点击
所在节点    宽带症候群
2 条回复
jasonyang9
282 天前
从 firewalld 切到 nftables 美滋滋
billlee
282 天前
masquerade 不是包转发,是 SNAT. 所以必须指定一个网卡才知道要转换成什么地址

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1025729

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX