我已經使用 libvirt 和預設 NAT 橋創建了一個 VM guest 虛擬機器。 (主機和來賓 Ubuntu 14.04 伺服器)為 SSH 建立允許規則並在來賓上啟用 ufw 後,我無法再連接到來賓。
來自(來賓的)系統日誌:
10 月 6 日 17:36:51 ubuntu 內核:[ 5969.693057] [UFW 塊] IN=eth0 OUT=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是Host的IP,Guest是192.168.122.152。我不知道為什麼 ufw 會阻止主機/NAT 允許的 IP。
如果我在來賓上停用 ufw,我可以透過 SSH 從主機進行連接,不會出現任何問題。
編輯:為了澄清,這些是客人的日誌。 NAT 路由正在工作。問題似乎出在虛擬機器來賓端。
答案1
經過多次嘗試和錯誤我終於找到了解決方案:
代替:
Anywhere ALLOW IN 192.168.122.0/24 22/tcp
正確的規則應該是:
22/tcp ALLOW IN 192.168.122.0/24
我錯誤地指定了來源連接埠而不是目標連接埠。這是由於使用 ufwallow 命令的縮寫形式引起的:
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