LINUX.ORG.RU
решено ФорумAdmin

Не получается пробросить соединение в виртуалку

 , ,


0

1

Имеется такая топология сети

Интернет -> роутер -> хостовая машина -> виртуалка

Роутер и хостовая машина в одной подсети. Хостовая машина и виртуалка в другой.

Правила iptables

Chain PREROUTING (policy ACCEPT 2311 packets, 268K bytes)
 pkts bytes target     prot opt in     out     source               destination
   24  1216 DNAT       tcp  --  *      *       0.0.0.0/0            x.x.x.x (external ip)         tcp dpt:y to:192.168.122.106:y (подсеть kvm)

Chain POSTROUTING (policy ACCEPT 2076 packets, 187K bytes)
 pkts bytes target     prot opt in     out     source               destination
 1189 61828 MASQUERADE  tcp  --  *      *       192.168.122.0/24    !192.168.122.0/24     masq ports: 1024-65535
 3685  251K MASQUERADE  udp  --  *      *       192.168.122.0/24    !192.168.122.0/24     masq ports: 1024-65535

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
77293   86M ACCEPT     all  --  *      virbr0  0.0.0.0/0            192.168.122.0/24     ctstate NEW,RELATED,ESTABLISHED
 1398 1509K ACCEPT     all  --  *      virbr0  0.0.0.0/0            192.168.122.0/24     ctstate RELATED,ESTABLISHED
56997 6653K ACCEPT     all  --  virbr0 *       192.168.122.0/24     0.0.0.0/0

В прероутинге пакеты обрабатываются (как видно 24 пакета пришло), но толи в виртуалку не попадают, толи вернутся не могут.

На роутере порт открыт и проброшен, в самой вирталке порт открыт и принимает соединения (с хостовой машины могу подключится без проблем)

Что я делаю не так?

★★

Правила с хоста или роутера? На хосте пакетам можно ходить между интерфейсами? С роутера виртуалка пингуется, порт открывается? Маршруты? И откройте для себя tcpdump все сразу встанет на свои места.

naszar
()

iptables-save, tpcpdump, да и вообще нат не нужен - пропиши роут 192.168.122.0/24 via хост-машина.

anton_jugatsu ★★★★
()

Глупый вопрос: sysctl net.ipv4.ip_forward ?

ival ★★
()

а форвадинг на хостовой машине включен ? А на роутере порт проброшен на хостовую машину? А tcpdump-ом посмотреть на пакеты не пробывали ?
Если это правила с роутера то они не верные.

demsi
()
Последнее исправление: demsi (всего исправлений: 2)

naszar

Правила с хоста или роутера?

Хоста, на роутере там ужасно зарезанный шелл, там ничего толком не посмотреть. Порт там проброшен, с роутера я просбрасываю порты на хост без проблем, изве на хост я попасть могу без проблем.

На хосте пакетам можно ходить между интерфейсами?

Если текущих правил форварда достаточно, то - да. В виртуалках есть интернет, он как-то проходит по всей цепочке же.

С роутера виртуалка пингуется?

Нет

Маршруты?

 target            gateway          source    proto    scope    dev tbl
default        192.168.1.1                   static          enp3s0 
192.168.1.0/ 24                    192.168.1.33   kernel     link enp3s0 
192.168.122.0/ 24                   192.168.122.1   kernel     link virbr0
192.168.1.33              local    192.168.1.33   kernel     host enp3s0 local
192.168.122.1              local   192.168.122.1   kernel     host virbr0 local

192.168.1.0/24 подсеть там, где хост и роутер, интерфейс enp3s0

192.168.122.0/24 подсеть хоста и вирутуалок, интерфейс virbr0

ival

Глупый вопрос: sysctl net.ipv4.ip_forward ?

1, естественно. Я был в гугле, прежде, чем сюда постить.

demsi

А на роутере порт проброшен на хостовую машину?

Да, на хост.

Правила, с хостовой машины.

Dantix ★★
() автор топика

так как все на слуху и нет нормальной схемы с подписями адресов предположу такой вариант:

ext_ip-router-int_ip --> int_ip-host-virt_ip --> virt_ip_guest

1) на роутере надо пробрасывать порт на virt_ip_guest

2) на роутере route add virt_ip_guest int_ip-host

3) на хосте отключите фаервол и только если работает включайте и редактируйте правила

4) если проброс порта на хост работает, может стоит гостя повесить в бридж:

ext_ip-router-int_ip --> bridge_int_ip-host --> int_ip_guest

nerve ★★
()

Фух, разобрался, всем спасибо. Ошибка была в том, что я пытался перенаправлять пакеты на хосте с внешнего айпи, а не с хостового. Меня сбило с толку, что счетчик пакетов увеличивается у этого правила.

24  1216 DNAT       tcp  --  *      *       0.0.0.0/0            x.x.x.x (external ip)         tcp dpt:y to:192.168.122.106:y (подсеть kvm)

как только я поменял на

Chain PREROUTING (policy ACCEPT 1202 packets, 135K bytes)
 pkts bytes target     prot opt in     out     source               destination
    9   476 DNAT       tcp  --  *      *       0.0.0.0/0            192.168.1.xx         tcp dpt:y to:192.168.122.106

Сразу начали пакеты реджектится на форварде, где я это заметил, и после добавления нужного правила, все взлетело.

Dantix ★★
() автор топика
Последнее исправление: Dantix (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.