Дано: есть несколько виртуальных машин, которые функционируют по принципу 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 -LChain 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
ifconfigeth0 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)
Схематично сеть выглядит так:
Таких машин много (около 15), для каждой группы (роутер+клиент) выделен свой отдельный виртуальный адаптер (отдельная сеть).
Все это прекрасно работало годами, однако вчера я заметил что на одной из машин (192.168.64.3) после запуска по какой-то причине вышла в сеть через гейт расположенный по адресу 192.168.58.2 (и соответственно внешний IP адрес показывался от VPN поднятой на этой машине-роутере).
Как оказалось на машине роутере 192.168.58.2 я забыл закомментировать в правилах iptables строчку, которая редиректила трафик с 192.168.64.0/24 в VPN, поэтому пришедший трафик из чужой сети был обработан, однако как в принципе возможна ситуация, при которой при ручных настройках сети трафик может пойти через гейт в другой сети, при том что нигде в настройках машины-клиента он не указан?
Буду признателен за любые догадки.