Vilgelm
@Vilgelm

Почему трафик может пойти через гейт в другой подсети?

Дано: есть несколько виртуальных машин, которые функционируют по принципу Whonix.

Выглядит это так:

Есть виртуальная машина-клиент на Windows (разных версий), которая имеет только один сетевой интерфейс - внутреннюю сеть хоста (vboxnetX). Для машины-клиента машина-роутер выступает в качестве гейта, настройки сети заданы вручную, DHCP на внутренней сети хоста отключен, IPv6 не настроен.

Вывод ipconfig с машины-клиента
Ethernet adapter Local Area Connection:
 
   Connection-specific DNS Suffix  . :
   IPv4 Address. . . . . . . . . . . : 192.168.59.3
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.59.2


Есть виртуальная машина, которая выступает в качестве роутера на Debian 8. Она имеет два активных сетевых интерфейса: первый - это Virtualbox NAT (интерфейс eth0), который смотрит в интернет, второй - внутренняя сеть хоста (vboxnetX, интерфейс eth1). Внутри этой машины крутится клиент OpenVPN (интерфейс tun0), а так же настроен iptables таким образом, чтобы трафик который прилетал на vboxnetX переадресовывался в tun0.

iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  anywhere             192.168.0.105        tcp dpt:3389 to:192.168.59.3
DNAT       udp  --  anywhere             192.168.0.105        udp dpt:3389 to:192.168.59.3

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  192.168.59.0/24      anywhere


Содержимое rules.v4 из пакета iptables-persistent
# Generated by iptables-save v1.4.21 on Tue Jan 10 06:34:32 2017
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -d 192.168.0.105/32 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.59.3
-A PREROUTING -d 192.168.0.105/32 -p udp -m udp --dport 3389 -j DNAT --to-destination 192.168.59.3
-A POSTROUTING -s 192.168.59.0/24 -o tun0 -j MASQUERADE
COMMIT
# Completed on Tue Jan 10 06:34:32 2017
# Generated by iptables-save v1.4.21 on Tue Jan 10 06:34:32 2017
*filter
:INPUT ACCEPT [22:1576]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [13:2428]
-A FORWARD -d 192.168.59.3/32 -i eth0 -o eth1 -p tcp -m tcp --dport 3389 -j ACCEPT
-A FORWARD -d 192.168.59.3/32 -i eth0 -o eth1 -p udp -m udp --dport 3389 -j ACCEPT
COMMIT
# Completed on Tue Jan 10 06:34:32 2017


ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:62:93:74
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe62:9374/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:77680 errors:0 dropped:0 overruns:0 frame:0
          TX packets:78106 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:47807022 (45.5 MiB)  TX bytes:16905507 (16.1 MiB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:d5:fb:77
          inet addr:192.168.59.2  Bcast:192.168.59.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fed5:fb77/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:84768 errors:0 dropped:0 overruns:0 frame:0
          TX packets:75861 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:12748244 (12.1 MiB)  TX bytes:42846609 (40.8 MiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.8.0.6  P-t-P:10.8.0.5  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:72307 errors:0 dropped:0 overruns:0 frame:0
          TX packets:76625 errors:0 dropped:1248 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:41513425 (39.5 MiB)  TX bytes:10803026 (10.3 MiB)


Схематично сеть выглядит так:
g1swsfg-t16uteswvo4sc5myiu8.png

Таких машин много (около 15), для каждой группы (роутер+клиент) выделен свой отдельный виртуальный адаптер (отдельная сеть).

Все это прекрасно работало годами, однако вчера я заметил что на одной из машин (192.168.64.3) после запуска по какой-то причине вышла в сеть через гейт расположенный по адресу 192.168.58.2 (и соответственно внешний IP адрес показывался от VPN поднятой на этой машине-роутере).

Как оказалось на машине роутере 192.168.58.2 я забыл закомментировать в правилах iptables строчку, которая редиректила трафик с 192.168.64.0/24 в VPN, поэтому пришедший трафик из чужой сети был обработан, однако как в принципе возможна ситуация, при которой при ручных настройках сети трафик может пойти через гейт в другой сети, при том что нигде в настройках машины-клиента он не указан?

Буду признателен за любые догадки.
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы