Маршрутизация трафика между подсетями с помощью iptables

339
PyroAVR

У меня есть виртуальная машина KVM, которая действует как шлюз VPN для сети других виртуальных (и в конечном итоге физических) машин. У меня настроен гипервизор с отводом для каждой машины и мостом для их подключения, чтобы они все использовали одну подсеть и могли общаться друг с другом. Теперь мне нужен VPN-шлюз для пересылки пакетов из его интерфейса к остальной части сети. Для примера, скажем, подсеть VPN есть 192.168.15.0/24, а подсеть виртуальной машины есть 192.168.10.0/24. Шлюз VPN находится на, 192.168.15.1а пример удаленного компьютера имеет адрес 192.168.15.5. Я думаю, что при установке статического маршрута на удаленном компьютере ip route add 192.168.10.0/24 via 192.168.15.1 dev <tap device>пакеты будут перенаправлены на шлюз VPN, а затем будет иметь правило iptables, напримерiptables -A FORWARD -s 192.168.15.0/24 -d 192.168.10.0/24 -j ACCEPT VPN-шлюзом позволит пакетам достигать места назначения до тех пор, покаip_forwardвключен. Я могу показать, что пакеты поступают с удаленного компьютера на шлюз, но ping 192.168.10.5с удаленного компьютера возвращается:From 192.168.10.5 icmp_seq=1 Destination Net Unknown.

Есть мысли о том, как решить эту проблему?

Изменить 1 : Удаленный компьютер имеет соответствующий маршрут к шлюзу через VPN.

2
Есть ли у удаленного компьютера маршрут для этой сети через VPN? grawity 6 лет назад 0
@ Да, это так! Я добавлю это в описание. PyroAVR 6 лет назад 0
Есть ли в iptables VPN-шлюз какие-либо другие правила в цепочке FORWARD? grawity 6 лет назад 0
@grawity no, вот содержимое: `Цепочка INPUT (policy ACCEPT) цель целевого объекта prot opt ​​источник Цепь FORWARD (policy ACCEPT) целевого объекта prot opt ​​источник назначения Chain OUTPUT (policy ACCEPT) цель prot opt ​​источник назначения` PyroAVR 6 лет назад 0

1 ответ на вопрос

1
PyroAVR

Я понял! Проблема была с маршрутизацией VPN. VPN не была настроена в режиме коммутатора, поэтому было невозможно маршрутизировать пакеты, которые требовали пересылки через шлюз. Я использую tinc vpn, поэтому добавив Mode = switchк tinc.confна шлюзе и клиенты сделали свое дело!