我在 CentOS 7 上安装了 docker 并且我正在运行 firewallD。
从我的容器内部,转到主机(默认 172.17.42.1)
开启防火墙
container# nc -v 172.17.42.1 4243
nc: connect to 172.17.42.1 port 4243 (tcp) failed: No route to host
Run Code Online (Sandbox Code Playgroud)
防火墙关闭
container# nc -v 172.17.42.1 4243
Connection to 172.17.42.1 4243 port [tcp/*] succeeded!
Run Code Online (Sandbox Code Playgroud)
我已经阅读了 firewalld 上的文档,但我并不完全理解它们。有没有办法简单地允许 docker 容器中的所有内容(我猜在 docker0 适配器上)不受限制地访问主机?
我想设置 CentOS 7 防火墙,以便除了我列入白名单的原始 IP 地址之外的所有传入请求都将被阻止。对于白名单 IP 地址,所有端口都应该可以访问。
我能找到几个解决方案(不确定它们是否有效),iptables但 CentOS 7 使用firewalld. 我找不到类似的东西可以用firewall-cmd命令来实现。
接口位于公共区域。我也已经将所有服务移至公共区域。
我还没有找到有关此的灌篮文档,所以让我们开始吧。
在 CentOS 7.1 主机上,我已经阅读了 linuxconfig HOW-TO,包括firewall-cmd条目,并且我有一个可导出的文件系统。
[root@<server> ~]# firewall-cmd --list-all
internal (default, active)
interfaces: enp5s0
sources: 192.168.10.0/24
services: dhcpv6-client ipp-client mdns ssh
ports: 2049/tcp
masquerade: no
forward-ports:
rich rules:
[root@<server> ~]# showmount -e localhost
Export list for localhost:
/export/home/<user> *.localdomain
Run Code Online (Sandbox Code Playgroud)
但是,如果我showmount从客户端,我仍然有问题。
[root@<client> ~]# showmount -e <server>.localdomain
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
Run Code Online (Sandbox Code Playgroud)
现在,我如何确定这是防火墙问题?简单。关闭防火墙。服务器端:
[root@<server> ~]# systemctl stop firewalld
Run Code Online (Sandbox Code Playgroud)
和客户端:
[root@<client> ~]# showmount -e <server>.localdomain …Run Code Online (Sandbox Code Playgroud) 在CentOS 7服务器中,我输入firewall-cmd --list-all,它给了我以下信息:
public (default, active)
interfaces: enp3s0
sources:
services: dhcpv6-client https ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
Run Code Online (Sandbox Code Playgroud)
什么是 dhcpv6-client 服务?它有什么作用?删除它有什么影响?
我阅读了 维基百科页面dhcpv6,但它没有具体告诉我该服务的用途CentOS 7 Firewalld。
该服务器可通过https和emailvia访问mydomain.com,但它是一个私有服务器,只能通过https已知ip地址列表访问。此外,该服务器可以接收来自已知电子邮件地址列表的电子邮件。是否dhcpv6-client需要该服务来协调已知ip https请求中的域地址以及与已知电子邮件地址交换电子邮件?
我需要在 Centos 7 上使用firewalld.
我在 Centos 6.5 上使用了 iptables,只需要添加以下几行/etc/sysconfig/iptables:
-A POSTROUTING -s "10.0.0.0/24" -o "wlan0" -j MASQUERADE
-A FORWARD -p tcp -s 10.0.0.0/24 -d 0.0.0.0/0 -j ACCEPT
run the command: echo 1 > /proc/sys/net/ipv4/ip_forward
open port 443.Run Code Online (Sandbox Code Playgroud) 我正在运行 Fedora 20,想看看我的防火墙在后台做什么。是否可以查看 FirewallD 阻止的流量日志?
我无法删除任何预配置的区域。
[root@fabian ~]# firewall-cmd --permanent --delete-zone=block
Error: BUILTIN_ZONE: block
[root@fabian ~]#
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?如果我只是删除相应的区域文件,firewalld 将不会启动。
如果不能做到这一点,为什么不能摆脱这个内置区域?只是看着预定义的空防火墙让我呕吐:
[root@fabian ~]# firewall-cmd --list-all-zones
block
interfaces:
sources:
services:
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
dmz
interfaces:
sources:
services:
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
drop
interfaces:
sources:
services:
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
external (active)
interfaces: enp0s26u1u1
sources:
services:
ports:
masquerade: yes
forward-ports:
icmp-blocks:
rich rules:
home
interfaces:
sources:
services:
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
internal (default, active)
interfaces: enp4s0 …Run Code Online (Sandbox Code Playgroud) 如何让 RHEL7 的防火墙通过 SNMP 连接?
当我在计算机上执行此命令时:
systemctl stop firewalld
Run Code Online (Sandbox Code Playgroud)
所有 SNMP 数据包都顺利通过。当我重新启动 firewalld 时,所有数据包都被阻止了。当然,我在防火墙运行的情况下尝试了几种配置,例如:
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 161 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
或者
firewall-cmd --zone=public --add-port=161/tcp --permanent
Run Code Online (Sandbox Code Playgroud)
我没有收到任何错误消息,但 SNMP 仍处于超时状态。
有没有一种简单的方法来显示已使用打开的所有端口的完整列表firewalld?
我知道命令firewall-cmd --list-all,但它只显示服务名称,而不是这些服务定义为打开的端口。
例如:
[root@myserver log]# firewall-cmd --list-all
dmz (active)
target: default
icmp-block-inversion: no
interfaces: ens160
sources:
services: ssh squid my-icap
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Run Code Online (Sandbox Code Playgroud)
我知道我可以进入这些服务中的每一个的定义文件,以查看它们将哪些端口定义为开放端口,但似乎应该有一种单行方式来执行此操作,而我只是缺少它。
而且我不是在寻找netstat:它会告诉我是否有什么东西正在侦听某个端口,这与是否可以从另一台主机访问该端口是一个不同的问题。
我正在尝试配置 firewalld(Fedora 21),以便响应从使用临时 UDP 源端口的客户端应用程序发送到多播目标的 MDNS 查询。响应是单播的。序列是这样的(使用wireshark捕获)
启用了添加端口 5353 UDP 的 firewalld mdns 服务,但这对响应没有帮助。
任何指针将不胜感激。