OpenVPN — понимание таблицы маршрутизации + как направить трафик только на определенный IP через VPN

OpenVPN — понимание таблицы маршрутизации + как направить трафик только на определенный IP через VPN

Я подключаюсь к 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? Похоже, это шлюз vpn...

Почему пункт назначения 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 

решение1

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

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

А что насчет 10.7.7.1? Похоже, это шлюз vpn...

Вероятно, да

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

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

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

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

А что, если я захочу:

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

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

можно ли сделать так, чтобы он устанавливался автоматически при запуске VPN?

да, см. выше

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

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