Назад | Перейти на главную страницу

OpenVPN и маршрутизация

У меня есть сервер, на котором запущен openvpn, и у меня небольшая проблема.

Весь мой трафик пересылается в VPN, и когда я использую такой веб-сайт, как «whatismyip», я вижу IP-адрес сервера, поэтому эта часть работает.

Но когда я подключаюсь к сайту, размещенному на том же сервере, что и VPN, я вижу свой реальный IP-адрес вместо локального IP-адреса, такого как 10.8.0.2 (в журналах apache2).

Может ли кто-нибудь помочь мне решить эту проблему?

Чтобы направить весь трафик через сервер VPN, клиент VPN устанавливает маршрут по умолчанию для клиентской машины к туннельному устройству. Однако исходящие зашифрованные пакеты, создаваемые VPN-клиентом, необходимо направлять непосредственно на VPN-сервер (а не обратно в VPN-клиент), и поэтому существует определенный маршрут, созданный для VPN-сервера, выходящего через локальный шлюз. Таблица маршрутизации выглядит примерно так (где 1.2.3.4 - публичный IP-адрес VPN-сервера):

192.168.0.0/24 dev eth0     # Local network
1.2.3.4/32 via 192.168.0.1  # Route to VPN server
default via 10.8.0.2        # Everything else via VPN client

Когда вы получаете доступ к другой службе на сервере VPN, она сопоставляется с этим конкретным маршрутом и направляется непосредственно в Интернет.

Есть несколько способов решить эту проблему:

  1. Используйте частный IP-адрес VPN-сервера при доступе к другим службам на нем (например, 10.8.0.1 вместо 1.2.3.4). В идеале это должно быть сделано с помощью DNS-сервера на сервере VPN, обеспечивающего разделение DNS для клиентов VPN.
  2. Используйте выделенный IP-адрес для VPN-сервера.
  3. Настройте маршрутизацию политики на основе портов на клиенте, чтобы только пакеты, предназначенные для сервера VPN с номером порта VPN, направлялись непосредственно в Интернет.