Добрый день. Пытаюсь дать доступ сайта на гостевой машине к самому себе.
Текущие настройки iptables:
Правила на хостовой машине iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
LOG tcp -- anywhere anywhere tcp dpt:http LOG level warn prefix "LOG INPUT: "
LIBVIRT_INP all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere ГостеваяМашинаIP state NEW tcp dpt:ssh
ACCEPT tcp -- anywhere ГостеваяМашинаIP state NEW tcp dpt:ftp
ACCEPT tcp -- anywhere ГостеваяМашинаIP state NEW tcp dpt:http
ACCEPT tcp -- anywhere ГостеваяМашинаIP state NEW tcp dpt:http-alt
ACCEPT tcp -- anywhere ГостеваяМашинаIP state NEW tcp dpt:https
LIBVIRT_FWX all -- anywhere anywhere
LIBVIRT_FWI all -- anywhere anywhere
LIBVIRT_FWO all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
LOG tcp -- anywhere anywhere tcp dpt:http LOG level warn prefix "LOG OUT: "
LIBVIRT_OUT all -- anywhere anywhere
Chain LIBVIRT_FWI (1 references)
target prot opt source destination
ACCEPT all -- anywhere 192.168.122.0/24 ctstate RELATED,ESTABLISHED
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
Chain LIBVIRT_FWO (1 references)
target prot opt source destination
ACCEPT all -- 192.168.122.0/24 anywhere
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
Chain LIBVIRT_FWX (1 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
Chain LIBVIRT_INP (1 references)
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpt:bootps
ACCEPT tcp -- anywhere anywhere tcp dpt:67
Chain LIBVIRT_OUT (1 references)
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpt:bootpc
ACCEPT tcp -- anywhere anywhere tcp dpt:68
Правила на хостовой машине iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
LOG tcp -- anywhere anywhere tcp dpt:http LOG level warn prefix "LOG PRE: "
DNAT tcp -- anywhere внешнийIP tcp dpt:2022 to:ГостеваяМашинаIP:22
DNAT tcp -- anywhere внешнийIP tcp dpt:ftp to:ГостеваяМашинаIP:21
DNAT tcp -- anywhere внешнийIP tcp dpt:http to:ГостеваяМашинаIP:80
DNAT tcp -- anywhere внешнийIP tcp dpt:http-alt to:ГостеваяМашинаIP:8080
DNAT tcp -- anywhere внешнийIP tcp dpt:https to:ГостеваяМашинаIP:443
Chain INPUT (policy ACCEPT)
target prot opt source destination
LOG tcp -- anywhere anywhere tcp dpt:http LOG level warn prefix "LOG NATINPUT: "
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
LOG tcp -- anywhere anywhere tcp dpt:http LOG level warn prefix "LOG POST: "
LIBVIRT_PRT all -- anywhere anywhere
Chain LIBVIRT_PRT (1 references)
target prot opt source destination
RETURN all -- 192.168.122.0/24 base-address.mcast.net/24
RETURN all -- 192.168.122.0/24 255.255.255.255
MASQUERADE tcp -- 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535
MASQUERADE udp -- 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535
MASQUERADE all -- 192.168.122.0/24 !192.168.122.0/24
Команды с гостевой машины
curl domain или
nc ВнешнийIP 80 дают одинаковую ситуацию в логах
LOG PRE: IN=virbr0 OUT= SRC=ГостевойМашиныIP DST=ВнешнийIP LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=12537 DF PROTO=TCP SPT=57604 DPT=80 WINDOW=64240 RES=0x00 SYN URGP=0
LOG INPUT: IN=virbr0 OUT= SRC=ГостевойМашиныIP DST=ВнешнийIP LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=12537 DF PROTO=TCP SPT=57604 DPT=80 WINDOW=64240 RES=0x00 SYN URGP=0
LOG NATINPUT: IN=virbr0 OUT= SRC=ГостевойМашиныIP DST=ВнешнийIP LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=12537 DF PROTO=TCP SPT=57604 DPT=80 WINDOW=64240 RES=0x00 SYN URGP=0
На схеме выглядит так
На хостовой машине
ss -tulpn не показывает ничего слушающего на 80 порту. Да и другие порты я проверял - такой же путь пакетов.
Почему они в INPUT попадают? Как их направить в интернет или обратно на гостевую машину? Знаю, что можно hosts гостевой машины написать домен сайта под localhost, но этот вариант не универсальный.