以前一直用的 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 来让修改生效
1
jasonyang9 247 天前 via Android
从 firewalld 切到 nftables 美滋滋
|
2
billlee 247 天前 via Android 2
masquerade 不是包转发,是 SNAT. 所以必须指定一个网卡才知道要转换成什么地址
|