以前一直用的 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 来让修改生效
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.