Ich habe mit libvirt einen VM-Gast mit der Standard-NAT-Bridge erstellt. (Host und Gast Ubuntu 14.04 Server) Nachdem ich Zulassungsregeln für SSH erstellt und ufw aktiviert habe – auf dem Gast – kann ich keine Verbindung mehr zum Gast herstellen.
Aus dem Syslog (des Gastes):
6. Okt. 17:36:51 Ubuntu-Kernel: [ 5969.693057] [UFW BLOCK] 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 FENSTER=29200 RES=0x00 SYN URGP=0
Status von ufw (auf dem Gast):
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 ist die IP des Hosts, die des Gasts ist 192.168.122.152. Ich habe keine Ahnung, warum ufw die zulässige IP des Hosts/NAT blockiert.
Wenn ich ufw auf dem Gast deaktiviere, kann ich problemlos vom Host aus eine Verbindung per SSH herstellen.
edit: zur Klarstellung, dies sind Logs des Gastes. NAT-Routing funktioniert. Das Problem scheint auf der VM-Gastseite zu liegen.
Antwort1
nach langem Herumprobieren habe ich endlich die Lösung gefunden:
anstatt:
Anywhere ALLOW IN 192.168.122.0/24 22/tcp
die richtige Regel müsste lauten:
22/tcp ALLOW IN 192.168.122.0/24
ich habe fälschlicherweise den Quellport statt des Zielports angegeben. Dies wurde durch die Verwendung der Kurzform des ufw allow-Befehls verursacht:
ufw allow from 192.168.122.0/24 port 22 proto tcp
richtige Form:
ufw allow from 192.168.122.0/24 to any port 22 proto tcp