Я создал гостевую виртуальную машину с помощью libvirt с мостом NAT по умолчанию. (Хост и гостевой сервер Ubuntu 14.04) После создания разрешающих правил для SSH и включения UFW на гостевой машине я больше не могу подключиться к гостевой машине.
Из системного журнала (гостя):
6 окт 17:36:51 ядро ubuntu: [ 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 ОКНО=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 блокирует разрешенный IP-адрес хоста/NAT.
Если я отключу UFW на гостевой машине, то смогу подключиться с хоста по SSH без проблем.
edit: для ясности, это логи гостя. Маршрутизация 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