Проблема с OpenVPN и маршрутизацией на OpenWRT

Вопрос или проблема

Моя домашняя топология:

router1 (192.168.1.1) – сервер D-Link dsl2540u с статическим IP, доступным из Интернета (ADSL через ppoe). 4 LAN порта.


router2 (192.168.1.2) – D-Link DIR-300 с OpenWRT. Выполняет роль точки доступа WiFi. 4 LAN порта + WAN порт.


                             Домашний ПК (подключается к router1 через DHCP)
                            |                           
интернет ------ router1-----
                            |
                             router2 (сервер OpenVPN на OpenWRT)

На router1 я настроил NAT виртуальные серверы и могу подключаться к своему маршрутизатору через SSH или OpenVPN (tcp на порту 443)

DSL-2540u NAT Виртуальные серверы

Сервер OpenVPN работает отлично, и весь трафик проходит через tun интерфейс после подключения.

Конфигурация сервера OpenVPN (если важно):

--script-security 2
mode        server
dev               tun
port              443
proto             tcp

server            10.0.0.0 255.255.255.0
push "redirect-gateway def1"
push "dhcp-option DNS 192.168.1.1" # Измените на IP адрес вашего LAN маршрутизатора
push "route 192.168.1.0 255.255.255.0" # Измените на вашу сеть

client-config-dir ccd
client-to-client
tls-server
dh                /etc/openvpn/dh2048.pem
ca                /etc/openvpn/CA_cert.pem
cert              /etc/openvpn/certs/server.pem
key               /etc/openvpn/keys/server.pem
crl-verify        /etc/openvpn/crl/crl.pem
tls-auth          /etc/openvpn/ta.key 0
#comp-lzo
keepalive         10 120
tun-mtu           1500
mssfix            1450
persist-key
persist-tun
verb              3
log /var/log/openvpn.log

Моя цель – OpenVPN туннель с доступом в Интернет через мой домашний router1. На данный момент я могу подключаться к серверу OpenVPN, но весь трафик, который проходит через туннель, не достигает Интернета.

Правила брандмауэра на router2 (OpenWRT):

iptables -t nat -A prerouting_wan -p tcp --dport 443 -j ACCEPT
iptables -A input_wan -p tcp --dport 443 -j ACCEPT

iptables -t nat -A prerouting_lan -p tcp --dport 443 -j ACCEPT
iptables -A input_lan -p tcp --dport 443 -j ACCEPT


iptables -I INPUT -i tun+ -j ACCEPT
iptables -I FORWARD -i tun+ -j ACCEPT
iptables -I OUTPUT -o tun+ -j ACCEPT
iptables -I FORWARD -o tun+ -j ACCEPT

Это определенно проблема с маршрутизацией, но у меня недостаточно знаний, чтобы ее решить.

Вы должны добавить сеть 10.0.0.0/24, маршрутизируемую на шлюз 192.168.1.2, как статический маршрут на router1. Это не связано с NAT.

Ответ или решение

Для правильной настройки OpenVPN на OpenWRT и решения проблемы с маршрутизацией трафика через туннель, необходимо выполнить несколько шагов.

1. Сеть и маршрутизация

Сначала нужно убедиться, что Router1 (192.168.1.1) знает, как маршрутизировать трафик для сети OpenVPN (10.0.0.0/24). Для этого необходимо добавить статический маршрут на Router1:

  • Войдите в админскую панель Router1.
  • Найдите раздел "Маршрутизация" или "Static Route".
  • Добавьте новый маршрут:
    • Destination: 10.0.0.0
    • Subnet Mask: 255.255.255.0
    • Gateway: 192.168.1.2 (IP адрес Router2)

Это позволит Router1 знать, что трафик на 10.0.0.0/24 следует направлять на Router2.

2. Настройка OpenWRT

Ваша конфигурация OpenVPN уже выглядит в целом правильно, однако важно убедиться, что при обработке трафика через интерфейсы, настройки брандмауэра и NAT правильно применяются.

Правила брандмауэра

Убедитесь, что на Router2 ваши текущие правила брандмауэра позволят проходить трафику из туннеля:

iptables -I INPUT -i tun+ -j ACCEPT
iptables -I FORWARD -i tun+ -j ACCEPT
iptables -I OUTPUT -o tun+ -j ACCEPT
iptables -I FORWARD -o tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -o br-lan -j ACCEPT
iptables -A FORWARD -i br-lan -o tun+ -j ACCEPT

Эти правила обеспечат, что трафик из интерфейса tun+ (OpenVPN) сможет проходить через локальную сеть (br-lan).

NAT

Также необходимо настроить NAT для трафика, который идет через OpenVPN. Это делается с помощью следующей команды:

iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE

Здесь eth0 это ваш WAN интерфейс на Router2, который использует Router1 для доступа к Интернету.

3. Проверка конфигурации DNS

Вы указали DNS-сервер как 192.168.1.1, хотя это IP Router1. Убедитесь, что это правильно, и если вы хотите использовать общий DNS-сервер, можно указать, например, 8.8.8.8 (Google DNS) или 1.1.1.1 (Cloudflare).

4. Перезагрузка и проверка

После внесения всех изменений рекомендуется перезагрузить Router2 и Router1, чтобы все новые маршруты и правила вступили в силу. Затем подключите клиент к OpenVPN и проверьте, проходил ли трафик через туннель, используя команды traceroute и проверку IP-адреса на сайте, например, whatismyip.com.

Итоги

Если все настройки выполнены правильно, вы должны иметь возможность маршрутизировать трафик с клиентского устройства через OpenVPN и далее к Интернету через Router1 и его подключение ADSL. Если возникнут дополнительные вопросы или если что-то будет работать не так, проверьте журналы OpenVPN и журналы системного журнала (syslog) на наличие ошибок.

Оцените материал
Добавить комментарий

Капча загружается...