OpenVPN - Понять таблицу маршрутизации + Как маршрутизировать только трафик на определенный ip через VPN

12

Я подключаюсь к VPN-сервису, используя OpenVPN, и все работает нормально. Когда я подключаюсь, это правила, которые устанавливаются автоматически:

root@linux:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:AA:1B:01:AC:FB  
          inet addr:192.168.1.201  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:46867 errors:0 dropped:0 overruns:0 frame:0
          TX packets:29742 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:37977382 (36.2 MiB)  TX bytes:5098121 (4.8 MiB)
          Interrupt:16 

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.7.7.126  P-t-P:10.7.7.125  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:23284 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5817 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:31366374 (29.9 MiB)  TX bytes:308591 (301.3 KiB)

root@linux:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.7.7.125      128.0.0.0       UG    0      0        0 tun0
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
5.120.121.114   192.168.1.1     255.255.255.255 UGH   0      0        0 eth0
10.7.7.1        10.7.7.125      255.255.255.255 UGH   0      0        0 tun0
10.7.7.125      *               255.255.255.255 UH    0      0        0 tun0
128.0.0.0       10.7.7.125      128.0.0.0       UG    0      0        0 tun0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0

Вот что я понимаю:

  • мой локальный IP-адрес 192.168.1.201
  • локальный шлюз 191.168.1.1
  • 5.120.121.114 - это публичный ip VPN
  • tun0 - это VPN-туннель, моя машина имеет адрес 10.7.7.126
  • 10.7.7.125 - это ptp-адрес, который я понимаю, это другой «конец» VPN

Что касается таблицы маршрутизации, я понимаю, что:

  • по умолчанию весь трафик отправляется через интерфейс 10.7.7.125 на Tun0 (но почему эта маска?)
  • 10.7.7.1 доступен через tun0
  • публичный ip из vpn доступен через eth0

Я не понимаю второй шлюз по умолчанию, это по умолчанию, когда vpn не активен, он просто обойден?

А как насчет 10.7.7.1? Похоже, это ворота ВПН ...

Почему пункт назначения 128.0.0.0?

OpenVPN автоматически создает все эти правила. Но на основании чего они созданы?

Я не могу контролировать серверную часть VPN, а только конфигурацию клиента.

А что если я бы хотел:

  • заставить весь трафик на 216.58.213.174 проходить через VPN tun0, а все остальное - на eth0?
  • можно ли установить его автоматически при запуске VPN?

Спасибо за ваше предложение и поддержку в понимании этого.

Кр, дк

РЕДАКТИРОВАТЬ:

root@linux:~# ip route list
0.0.0.0/1 via 10.7.7.125 dev tun0 
default via 192.168.1.1 dev eth0 
5.152.210.249 via 192.168.1.1 dev eth0 
10.7.7.1 via 10.7.7.125 dev tun0 
10.7.7.125 dev tun0  src 10.7.7.126 
128.0.0.0/1 via 10.7.7.125 dev tun0 
192.168.1.0/24 dev eth0  src 192.168.1.201 
d82k
источник
1
Только мои 2 цента: используйте, ip route listчтобы получить лучший обзор ваших маршрутов. Кроме того, потому что ifconfig и route находятся на пути к устареванию в LInux ...

Ответы:

15

Я не понимаю второй шлюз по умолчанию, это по умолчанию, когда vpn не активен, он просто обойден?

Это один из способов взлома OpenVPN для маршрутизации трафика через ваш туннель при сохранении шлюза по умолчанию. Маршруты 0.0.0.0/1 и 128.0.0.0/1 имеют приоритет над маршрутом 0.0.0.0/0, так как они более конкретны, но при этом соответствуют всем адресам. Ищите «def1» в документации OpenVPN для более подробной информации.

А как насчет 10.7.7.1? Похоже, это ворота ВПН ...

Вероятно, да

OpenVPN автоматически создает все эти правила. Но на основании чего они созданы?

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

Я не могу контролировать серверную часть VPN, а только конфигурацию клиента.

Да, но клиент легко настраивается, так что вы можете переопределить практически все, что сервер хочет, чтобы ваш клиент делал. Тем не менее, вам необходимо выполнить основные требования вашего провайдера для подключения. Вам также следует проверить «Условия использования» вашего провайдера, чтобы убедиться, что вы не разозлите его.

А что если я бы хотел:

заставить весь трафик на 216.58.213.174 проходить через VPN tun0, а все остальное - на eth0?

Да, включите «маршрут 216.58.213.174 255.255.255.255 10.7.7.125» в вашу конфигурацию. Это должно настроить желаемый маршрут. Вы сможете сохранить другие маршруты, удалив опцию «redirect-gateway» из вашей конфигурации.

можно ли установить его автоматически при запуске VPN?

да смотри выше

Все варианты, которые я описал и многое другое, можно найти в онлайн-документации OpenVPN. https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage

smokes2345
источник
Большое, большое спасибо !!! Я провел дни, роясь в мелочах сети, пытаясь понять милый маленький трюк с 0.0.0.0/1 и 128.0.0.0/1. В конце концов, мне просто нужно было добавить полностью избыточный маршрут, кроме случаев, когда VPN включен.
rlduffy