我有一个集群配置,其中一台机器充当网关(称为master
),以及几台仅具有私有 IP 地址的机器(将其称为s01
)s09
。
我最近安装ufw
并master
注意到网关后面的机器不再能够访问外部互联网(wget google.com
失败)。
我查看了日志,看到了类似这样的行。
[609940.531858] [UFW BLOCK] IN=eth1 OUT=eth0 MAC=00:25:90:0c:e0:5b:00:25:90:32:3c:9e:08:00 SRC=192.168.0.178 DST=172.217.6.78 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=58107 DF PROTO=TCP SPT=59584 DPT=80 WINDOW=29200 RES=0x00 SYN URGP=0 MARK=0x9
我将以下规则添加到ufw
.
ufw allow from 192.168.0.178
ufw reload
这是状态的输出ufw
。
Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
Anywhere ALLOW 192.168.0.178
22 ALLOW Anywhere (v6)
不幸的是,wget
仍然失败,并且我仍然UFW BLOCK
在日志中看到更多类似上面的行。
如何正确配置 ufw 以允许来自网关后面的主机的出站流量?
答案1
经过一番调查,发现UFW默认是拒绝转发请求的。一种潜在的解决方案是编辑/etc/default/ufw
和设置DEFAULT_FORWARD_POLICY="ACCEPT"
,但这似乎不安全。
相反,我将以下规则添加到/etc/ufw/before.rules
.
# Eth0 is public, Eth1 is private.
-A FORWARD -i eth1 -o eth0 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i eth0 -o eth1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT