Моя проблема заключается в следующем: когда я подключаюсь из Интернета к своей локальной сети через OpenVPN, все, что я могу достичь, - это сервер OpenVPN (по IP-адресу локальной сети и IP-адресу внутри VPN). Когда я добавляю обратные маршруты на КАЖДОМ клиенте LAN, связь возможна. Но делать это для каждого клиента в моей локальной сети утомительно и не очень удобно. Поскольку мой VPN-сервер не находится на том же компьютере, что и мой шлюз по умолчанию, я прочитал в различных инструкциях, что мне нужно добавить обратный маршрут в свой шлюз, и все должно работать нормально. Однако в моем случае это не так. Буду признателен за каждый ввод и посоветую, как я могу отладить проблему. Может я чего-то упускаю или неправильно настроен.
Моя сетевая настройка:
LAN: 10.0.0.0/24
VPN: 10.4.0.0/24
несколько других клиентов LAN в 10.0.0.0/24
статический маршрут, установленный в ipFire: Сеть 10.4.0.0/24 через шлюз 10.0.0.6 (без него шлюз недоступен через vpn)
ip forwarding на малине включен
Конфигурация OpenVPN: (ненужные части удалены)
dev tun
port 1194
proto udp
mode server
server 10.4.0.0 255.255.255.0
push "route 10.0.0.0 255.255.255.0"
client-to-client
comp-lzo yes
таблица маршрутизации на распи (vpn сервер):
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default ipfire.home 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 * 255.255.255.0 U 0 0 0 eth0
10.4.0.0 10.4.0.2 255.255.255.0 UG 0 0 0 tun0
10.4.0.2 * 255.255.255.255 UH 0 0 0 tun0
Поскольку с вашей текущей конфигурацией шлюз сам может достигать VPN-клиентов, вы знаете, что его таблица маршрутизации и все на VPN-сервере должны быть правильными. Вероятно, что правила брандмауэра на шлюзе не настроены так, чтобы разрешить пересылку трафика с других хостов обратно на сервер VPN.
В частности, я догадываюсь, что брандмауэр настроен так, что пересылка по умолчанию запрещена и что она разрешена только из LAN в WAN. Если я прав, то следующее правило заставит его работать:
iptables -I FORWARD -s 10.0.0.0/24 -d 10.4.0.0/24 -j ACCEPT
При желании вы можете сделать это более конкретным, добавив -i eth0 -o eth0
, заменив имя интерфейса вашей локальной сети на eth0.