Я пытаюсь настроить маршрутизацию из своей локальной сети в vmbr1
в публичный интерфейс vmbr0
. У моего компьютера IP 192.168.0.1
на vmbr1
интерфейс. Я настроил следующее правило пост-маршрутизации: iptables -t nat -A POSTROUTING -o vmbr0 -j MASQUERADE
В качестве теста проверяю DNS-сервер Google 8.8.4.4
с другого компьютера 192.168.0.101
который имеет 192.168.0.1
настроен как шлюз по умолчанию.
С помощью iptables -t nat -L -v
, Я вижу, что некоторые пакеты попадают в фильтр, но по скорости увеличения становится ясно, что правильные пакеты - нет.
Chain POSTROUTING (policy ACCEPT 5 packets, 300 bytes)
pkts bytes target prot opt in out source destination
24 8358 MASQUERADE all -- any vmbr0 anywhere anywhere
Из tcpdump -i vmbr0
, Я вижу, что пакеты покидают интерфейс без редактирования.
18:41:35.162157 IP 192.168.0.101 > google-public-dns-b.google.com: ICMP echo request, id 1872, seq 996, length 64
18:41:36.170172 IP 192.168.0.101 > google-public-dns-b.google.com: ICMP echo request, id 1872, seq 997, length 64
18:41:37.178164 IP 192.168.0.101 > google-public-dns-b.google.com: ICMP echo request, id 1872, seq 998, length 64
Вот моя конфигурация сети:
iface eth0 inet manual
auto vmbr1
iface vmbr1 inet static
address 192.168.0.1
netmask 255.255.255.0
bridge_ports dummy0
bridge_stp off
bridge_fd 0
#NAT
auto vmbr0
iface vmbr0 inet static
address 151.80.1.13
netmask 255.255.255.0
gateway 151.80.1.254
broadcast 151.80.1.255
bridge_ports eth0
bridge_stp off
bridge_fd 0
network 151.80.1.0
И маршруты:
Destination Gateway Genmask Flags Metric Ref Use Iface
default 151.80.1.254 0.0.0.0 UG 0 0 0 vmbr0
151.80.1.0 * 255.255.255.0 U 0 0 0 vmbr0
192.168.0.0 * 255.255.255.0 U 0 0 0 vmbr1
Я тоже пробовал iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
но это тоже не сработало.
Редактировать: Оказалось, что установка bridge_ports на dummy0 была проблемой. Кто-нибудь может объяснить почему?