我使用以下命令添加特定接口作为受信任区域
firewall-cmd --zone=trusted --change-interface=eth0
Run Code Online (Sandbox Code Playgroud)
现在假设我有多个接口(如 eth0、eth1、bond0、bond1),并且我想通过执行在 bash 脚本中编写的上述命令将所有接口添加一次。
通过执行一次上述命令来添加所有接口的语法和命令是什么?
在 Debian 9 上,我安装了firewalld(版本0.4.4.2-1)。
sudo firewall-cmd --get-active-zones显示没有输出。并echo $?显示退出状态为 0 ( EXIT_SUCCESS)。为什么?
我有一个网络接口eth0,由ip link(以及环回接口lo。
我应该说我的防火墙配置似乎大部分正常工作。FWIW,我已将默认区域从 更改为public,MyZone定义如下:
$ sudo cat /etc/firewalld/zones/MyZone.xml\n<?xml version="1.0" encoding="utf-8"?>\n<zone>\n <short>My Zone</short>\n <service name="ssh"/>\n <service name="https"/>\n <!-- ... --> \n</zone>\nRun Code Online (Sandbox Code Playgroud)\n\n如果我尝试使用另一台计算机进行连接,我可以访问 SSH 和 HTTPS 服务。如果我ncat -l -p 8000在服务器上运行并尝试连接ncat my-server 8000,则连接会被正确阻止。(Ncat: No route to host. 并tcpdump显示生成了 ICMP …
在 Centos 7 上,我希望 Docker 容器能够访问主机,因此我尝试将 docker0 添加到受信任区域:
# firewall-cmd --permanent --zone=trusted --add-interface=docker0
The interface is under control of NetworkManager and already bound to 'trusted'
The interface is under control of NetworkManager, setting zone to 'trusted'.
success
# firewall-cmd --get-zone-of-interface=docker0
no zone
Run Code Online (Sandbox Code Playgroud)
这曾经可以工作,但无论出于何种原因都不能在此服务器上使用。我也试过firewall-cmd --reload,没有。好像 firewalld 命令被完全忽略了。NetworkManager 消息似乎很可疑,firewalld 和 NetworkManager 是否可能存在某种冲突?
出于绝望,我也尝试过:
在接口配置中nmcli connection modify docker0 connection.zone trusted正确设置了ZONE=trusted,但 firewalld 仍然显示接口不在受信任区域中。
这里发生了什么?
需要进行哪些特定更改,以便本地 IP 上的 CentOS 7 安装192.168.1.6可以telnet到另一个本地 IP上的CentOS 7 安装192.168.1.5?
如您所见,可以192.168.1.6PING192.168.1.5如下:
[root@localhost /]# ping 192.168.1.5
PING 192.168.1.5 (192.168.1.5) 56(84) bytes of data.
64 bytes from 192.168.1.5: icmp_seq=1 ttl=64 time=0.515 ms
64 bytes from 192.168.1.5: icmp_seq=2 ttl=64 time=0.565 ms
^C
--- 192.168.1.5 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.515/0.540/0.565/0.025 ms
Run Code Online (Sandbox Code Playgroud)
但telnetFROM 192.168.1.6TO192.168.1.5失败如下:
[root@localhost /]# telnet 192.168.1.5
Trying …Run Code Online (Sandbox Code Playgroud) 我使用的是 CentOS 7.6 版本,并且安装了测试 Wireguard VPN 服务器。整个安装和配置非常简单,至少根据文档,所以我做了什么,我安装了wireguard-tools、wireguard-dkms和linux-headers
下一步是,我生成了服务器的私钥和公钥,并将服务器的配置写为:
[Interface]
Address = 10.7.0.1/24
ListenPort = 34777
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
AllowedIPs = 10.7.0.2/32
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
AllowedIPs = 10.7.0.3/32
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
AllowedIPs = 10.7.0.4/32
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
AllowedIPs = 10.7.0.5/32
Run Code Online (Sandbox Code Playgroud)
从服务器端,我在防火墙上打开了端口 34777 udp,并设置 sysctl -w net.ipv4.ip_forward(启用转发),因为该服务器应该假设将流量从客户端转发到 VPN 服务器子网中的其他服务器。现在让我们假设这个服务器的公共 IP 是 11.11.11.11/23
在客户端,配置如下所示:
[Interface]
Address = 10.7.0.4/24
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
AllowedIPs = 10.7.0.1/32,11.11.11.0/23 (for having route to 11.11.11.0/23 subnet) or 0.0.0.0/0 …Run Code Online (Sandbox Code Playgroud) 我尝试在我的 CentOS-7-Router 上使用 firewalld 设置 SNAT,就像这里描述的那样,加上Karl Rupps 的解释,但我最终像Eric一样。我还阅读了一些其他文档,但无法使其正常工作,因此我的客户端 IP 被转换为另一个源 IP。
两个都
firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -p tcp -o enp1s0 -d 192.168.15.105 -j SNAT --to-source 192.168.25.121
或者
firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -p tcp -s 192.168.15.105/32 -j SNAT --to-source 192.168.25.121
给出一个“成功”。我做了一个firewall-cmd --reload。但是,如果我尝试检查带有iptables -t nat -nvL POSTROUTING规则的表,则未列出。
但是,如果我再次应用上述规则之一,firewalld 会警告我,例如Warning: ALREADY_ENABLED: rule '['-p', 'tcp', '-o', 'enp1s0', '-d', '192.168.15.105', '-j', 'SNAT', '--to-source', '192.168.25.121']' already is …
在 RHEL 7 服务器上,/etc/hosts.allow拥有多个具有完全访问权限的 IP 地址。防火墙(用 确认firewall-cmd),没有定义特定的源,默认区域允许某些端口和服务。哪个优先?或者举一个具体的例子,如果 中列出的 IP 地址/etc/hosts.allow尝试使用防火墙规则不允许的端口/服务连接到服务器,它可以连接吗?
FirewallD是 Fedora 18 中的默认防火墙。我已经使用iptables 了很长时间并且有一个自定义配置,我需要它来记录 ip 流量。我不习惯新的图形界面,它似乎缺少旧图形界面中的许多功能,可以轻松加载。
我尝试使用以下命令重新启用旧的 iptables:
# systemctl stop firewalld.service
# systemctl start iptables.service
# systemctl start ip6tables.service
Run Code Online (Sandbox Code Playgroud)
消息日志显示:
systemd 1 使用 iptables 启动 IPv4 防火墙。
systemd 1 使用 ip6tables 启动 IPv6 防火墙。
但是从systemctl -t service -a,我可以看到尽管已加载,但它们仍然处于非活动状态和死亡状态。
不过,我尝试加载自定义配置
iptables-restore < iptables.conf
Run Code Online (Sandbox Code Playgroud)
但收到了一系列警告:
警告:状态匹配已过时。请改用 conntrack。
警告:状态匹配已过时。请改用 conntrack。
警告:状态匹配已过时。请改用 conntrack。
警告:状态匹配已过时。请改用 conntrack。
警告:状态匹配已过时。请改用 conntrack。
我应该怎么做才能让 iptables 恢复工作?
我正在尝试在 CentOS 7 中打开一些端口。
我可以使用以下命令打开一个端口:
firewall-cmd --direct --add-rule ipv4 filter IN_public_allow 0 -m tcp -p tcp --dport 7199 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
通过检查 via iptables -L -n,我得到了设置成功的确认:
Chain IN_public_allow (1 references)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:7199
Run Code Online (Sandbox Code Playgroud)
不幸的是,我无法使更改永久化。即使使用这样的--permanent选项:
firewall-cmd --direct --permanent --add-rule ipv4 filter IN_public_allow 0 -m tcp -p tcp --dport 7199 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
关于如何解决这个问题的任何想法?为什么该--permanent选项无法正常工作?
我尝试在 RHEL 7.2 上使用关闭 iptables
chkconfig iptables off
在服务 iptables 上读取信息时出错:没有这样的文件或目录
也试过/etc/init.d/iptables stop了,有
-bash: /etc/init.d/iptables: 没有那个文件或目录
然后我用谷歌搜索了一下,得到了这个:
systemctl status firewalld
iptables 和 firewalld 有什么区别?你如何关闭iptables?
如何赋予机器最大权限?