Как настроить OpenVPN, чтобы позволить VPN-клиентам получать доступ ко всем серверам внутри локальной сети сервера?

12

Сетевой IP-адрес моего сервера - 192.168.1.1, а веб-сервер интрасети - 192.168.1.2. Демон OpenVPN настроен для предоставления клиентам адресов 192.168.2. *.

В push "route 192.168.1.0 255.255.255.0"конфиге есть строка, которая, как я ожидаю, позволит VPN-клиентам получить доступ ко всей сети 192.168.1.0, но они могут получить доступ только к 192.168.1.1 - самому VPN-серверу.

Я попытался включения net.ipv4.ip_forward = 1в /etc/sysctl.confно это не помогает.

Есть идеи?

PS: на сервере работает Ubuntu 12.04.
PPS: OpenVPN работает в tunрежиме по UDP.

Иван
источник
Уважаемый @FrandsHansen, я принимаю только ответы, которые в то же время 1. являются логически правильными ответами на вопросы, 2. были проверены мной на работу.
Иван

Ответы:

19

Убедитесь, что IP-пересылка включена

echo 1 > /proc/sys/net/ipv4/ip_forward

Кроме того, для того, чтобы толчок маршрута работал, серверам внутри также необходимо знать маршрут к вашему IP-адресу клиента OpenVPN. Таким образом, они должны будут знать маршрут до 192.168.2.0/24

Скорее всего, вы можете заставить iptables выполнять маршрутизацию через маскарад, используя

/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/sbin/iptables -A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
Френдс Хансен
источник
echo 1 > /proc/sys/net/ipv4/ip_forwardдает -bash: /proc/sys/net/ipv4/ip_forward: Permission denied- что это значит в этом случае?
Иван
Скорее всего это означает, что вы не делаете это как root. Попробуйте сделать это как root
Frands Hansen
Это точно такой же эффект sudo. Каким должен быть результат?
Иван
1
Помещение sudo перед командой не добавит привилегии к файлу (после>), поэтому вам нужно перейти в root и затем сделать это.
Друзья Хансен
1
или используйтеecho 1 | sudo tee
ygrek
2

Если ваша сеть LAN действительно 192.168.1.0/24, то вы можете получить много проблем. Потому что большинство маршрутизаторов имеют эту сеть по умолчанию. Таким образом, когда вы находитесь в гостевой сети, ваш компьютер может получить IP-адрес из сети 192.168.1.0/24. Таким образом, вы не можете получить доступ к вашей удаленной сети, но гостевой сети. Я предлагаю выбрать другую сеть для вашей локальной сети и VPN. например, 192.170.15.0/24 для локальной сети и 10.0.5.0/xx для vpn. XX зависит от того, сколько VPN-клиентов подключаются к локальной сети.

вот мой скрипт fw для openvpn

#!/bin/sh

iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A INPUT -i tap+ -j ACCEPT
iptables -A FORWARD -i tap+ -j ACCEPT

# Allow packets from private subnets
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -j ACCEPT

# i have multiple vpn networks
# 192.123.123.0/24 = LAN
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.9.0.0/30 -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.9.1.0/30 -o eth1 -d 192.123.123.39 -j MASQUERADE # to single server access only

echo 1 > /proc/sys/net/ipv4/ip_forward
Гунтис
источник
Нет, на самом деле это не 192.168.1.0, просто две разные сети 192.168. #. 0. Спасибо за ответ.
Иван
Если вам нужно, я могу поделиться своими настройками сервера openvpn и конфигурации клиента.
Гунтис