Исправление маршрута и iptables для интерфейса OpenVPN tun0 с выбранной и безопасной маршрутизацией

Исправление маршрута и iptables для интерфейса OpenVPN tun0 с выбранной и безопасной маршрутизацией

Я настроил свой маршрутизатор на использование сторонних VPN для максимальной безопасности. Поскольку интернет-провайдеры, которых я использую, заблокировали все известные протоколы VPN, включая протоколы OpenVPN, поэтому я вынужден настроить свой маршрутизатор на использование http-прокси, чтобы OpenVPN мог скрыть свой отпечаток от цензурирующего брандмауэра интернет-провайдера.

Тем не менее, я использую сторонний коммерческий VPN и их конфигурационный файл(ы) OpenVPN TCP,
чтобы сделать неограниченный Интернет доступным для моих подключенных устройств.

Поскольку клиенту OpenVPN для подключения к серверу необходим http-прокси, я сначала настраиваю http-прокси на своем маршрутизаторе, а затем подключаю клиент OpenVPN к Интернету.

Обратите внимание, что и http-прокси, и клиент OpenVPN работают натакой жеМаршрутизатор OpenWRT,нетотдельные устройства!

Тем не менее, поскольку многие коммерческие поставщики VPN на своих серверах OpenVPN передают свои настройки маршрута и шлюза на своего клиента после того, как клиент устанавливает соединение, все клиентские интерфейсы локальной сети, включая процессор маршрутизатора, вынуждены использовать перенаправленный клиентский интернет-трафик, и в результате прокси-процесс, работающий на маршрутизаторе, который должен получать свой интернет напрямую из глобальной сети, вынужден использовать интернет-интерфейс tun0, и через несколько секунд он выходит из строя, и, как следствие, клиент OpenVPN выходит из строя слишком поздно.

Чтобы предотвратить вышеупомянутую проблему, я добавилбез тягикоманда вклиент.ovpnфайл.

Обратите внимание, что поскольку я использую коммерческие VPN-сервисы,У меня нет доступа к их серверам OpenVPN.! и мой роутер используетiptables(fw3)а не nftables(fw4), поэтому файл client.ovpn выглядит следующим образом:

` клиент dev tun0 proto tcp remote XX.YY.ZZ.RR 443 nobind auth-user-pass cred.txt

persist-tun
......
http-proxy 192.168.55.1 1080 auto
http-proxy-retry
route-nopull

`

Приведенная выше конфигурация без проблем подключается к серверу OpenVPN (коммерческий сервер) и создает интерфейс tun0 на моем маршрутизаторе OpenWRT.

Я могу без проблем трассировать веб-сайт через устройство tun0,

#traceroute -i tun0 www.yahoo.com
traceroute to www.yahoo.com (87.248.119.251), 30 hops max, 46 byte packets
 1  *  10.124.148.1 (10.124.148.1)  1357.499 ms  195.523 ms
 2  vlan112.as02.stk1.se.m247.ro (146.70.16.241)  199.262 ms  190.672 ms  *

Тем не менее, поскольку я не извлекаю никаких настроек маршрутов и брандмауэра с сервера OpenVPN, мне следует создать свои собственные правила маршрутов и iptables, как только будет создан этот интерфейс tun0.

Но прежде чем объяснять дальше, я должен упомянуть, что локальный IP-адрес моего маршрутизатора — 192.168.55.1, а устройства br-lan (мост локальной сети) получают свои IP-адреса из пула адресов DHCP 192.168.55.65-192.168.55.126 или, лучше сказать, диапазона (255.255.255.192/26).

Моя цель и намерение — настроить маршрутизатор следующим образом:

[a] все устройства в br-lan (диапазон 192.168.55.65-192.168.55.126)кроме самого роутера 192.168.55.1должен получать весь свой интернет-трафик, включая ssh,dns,icmp,tcp,udp... с устройства tun0.

[b] По соображениям безопасности, если интерфейс tun0 отсутствует или не отвечает от интерфейса tun0, весь интернет-трафик устройств br-lan (диапазон 192.168.55.65-192.168.55.126), за исключением маршрутизатора, должен быть заблокирован от Интернета, что означает, что все упомянутые устройства должны получать доступ к Интернету только в том случае, если tun0 включен и отвечает.нет других альтернатив, таких как взвешенные маршруты, альтернативные путипринимаются.

[c] Все устройства br-lanвключаямаршрутизатор, принтеры, ПК, NAS, .. должны иметь возможность находить друг друга и взаимодействовать друг с другом в одной подсети без каких-либо ограничений.

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

pull-filter игнорирует "redirect-gateway"илимаршрут 192.168.55.64 255.255.255.192 но приведенные выше команды несколько раз приводили к зависанию, и я не мог получить доступ к веб-странице маршрутизатора, кроме того, ни одна из них не работала так, как ожидалось.

Более того, я вручную выполнил следующий скрипт после создания tun0, но он не позволил интернет-трафику проходить через tun0 на устройствах br-lan.

Я создал таблицу ovpn в следующем файле

/etc/iproute2/rt_tables
#reserved values
#
128     prelocal
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
1       ovpn

и

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

iptables -A FORWARD -i br-lan -o tun0 -s 192.168.55.64/26 -j ACCEPT
iptables -A FORWARD -i tun0 -o br-lan -j ACCEPT

iptables -A INPUT -i tun0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

ip route add default dev tun0 table ovpn
ip route add 192.168.55.64/26 dev br-lan table ovpn

ip rule add from 192.168.55.64/26 table ovpn

Я много гуглил, чтобы найти решение, но я почти уверен, что мне следует рассматривать tun0 как простой полу-wan-интерфейс.

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

#route -n  
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.8.1     0.0.0.0         UG    0      0        0 phy1-sta0
10.124.148.0    0.0.0.0         255.255.254.0   U     0      0        0 tun0
192.168.8.0     0.0.0.0         255.255.255.0   U     0      0        0 phy1-sta0
192.168.55.0    0.0.0.0         255.255.255.0   U     0      0        0 br-lan

и более

#ip route show
default via 192.168.8.1 dev phy1-sta0 proto static src 192.168.8.118
10.124.148.0/23 dev tun0 proto kernel scope link src 10.124.148.113
192.168.8.0/24 dev phy1-sta0 proto kernel scope link src 192.168.8.118
192.168.55.0/24 dev br-lan proto kernel scope link src 192.168.55.1

Буду признателен за любую подсказку или решение для этой цели, я новичок в маршрутизации и iptables.

Кстати, я не знаю, как сделать необходимые конфигурации, такие какif_tun0_up.shиif_tun0_down.shавтоматизировано для автоматического создания и очистки маршрутов в файле client.ovpn.

Имея возможность сделатьдиапазон LAN-устройств(br-lan)кроме маршрутизаторачтобы получить свой интернет-трафик от VPN-провайдера.

Обеспечение безопасности и блокировкапользователи локальной сети не имеют доступа к ограниченномунебезопасныйинтернет. Автоматизациязадача создания и удалениямаршруты и правила iptablesс открытиеизакрытиеинтерфейс tun0.

решение1

Не полный ответ, но может направить вас в нужном направлении. В client.ovpn я бы указал, к какой сети вы хотите перейти через vpn, следующим утверждением в client.ovpn. Например:

route 10.0.0.0 255.255.255.0 vpn_gateway

Поскольку вы используете коммерческого провайдера, устройства tun0 получают IP-адрес из его пула, поэтому я бы не рекомендовал делать устройства lan доступными. В большинстве случаев это IP-адрес, защищенный брандмауэром, без открытых портов для нужных вам служб. Это клиентский vpn. Если вы хотите сделать свою lan доступной через vpn, вам нужен site-to-site vpn с вашим собственным vpn-сервером.

Связанный контент