Вопрос или проблема
Моя домашняя топология:
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)
Сервер 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) на наличие ошибок.