UFW 阻止 NAT 中的流量

UFW 阻止 NAT 中的流量

我已经使用带有默认 NAT Bridge 的 libvirt 创建了一个 VM 客户机。(主机和客户机 Ubuntu 14.04 服务器)在客户机上创建 SSH 允许规则并启用 ufw 后,我无法再连接到客户机。

从系统日志(来宾的):

10月6日 17:36:51 ubuntu 内核:[5969.693057] [UFW BLOCK] IN=eth0   
输出=MAC=52:54:00:ea:b5:2e:fe:54:00:ea:b5:2e:08:00 SRC=192.168.122.1
DST=192.168.122.152 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=5379 DF PROTO=TCP
SPT=34376 DPT=22 窗口=29200 RES=0x00 SYN URGP=0

ufw 的状态(在客户机上):

root@ubuntu:~# ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
Anywhere                   ALLOW IN    148.251.139.136 22/tcp
Anywhere                   ALLOW IN    148.251.139.133 22/tcp
Anywhere                   ALLOW IN    141.7.0.0/16 22/tcp
Anywhere                   ALLOW IN    192.168.122.0/24 22/tcp
Anywhere                   ALLOW IN    192.168.122.1 22/tcp

148.251.139.136 是主机的 IP,客户机是 192.168.122.152。我不知道为什么 ufw 会阻止主机/NAT 允许的 IP。

如果我在客户机上禁用 ufw,我可以通过 SSH 从主机连接而不会出现问题。

编辑:澄清一下,这些是来宾的日志。NAT 路由正在运行。问题似乎出在 VM 来宾端。

答案1

经过多次反复尝试后我终于找到了解决方案:

代替:

Anywhere                   ALLOW IN    192.168.122.0/24 22/tcp

正确的规则应该是:

 22/tcp                     ALLOW IN    192.168.122.0/24

我错误地指定了源端口而不是目标端口。这是由于使用 ufw allow 命令的缩写形式造成的:

ufw allow from 192.168.122.0/24 port 22  proto tcp  

正确形式:

ufw allow from 192.168.122.0/24 to any port 22 proto tcp

相关内容