OpenVPN может получить доступ к VPC, но интернет-трафик теряется.

Вопрос или проблема

Я создаю VPN для доступа к VPC, но хочу, чтобы остальной трафик не проходил через VPN.

Я смог получить доступ к VPC через VPN, но при подключении к нему теряю доступ к интернету.

Вот конфигурация моего сервера:

port 1194
proto udp
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/vpn.crt
key /etc/openvpn/server/vpn.key 
dh /etc/openvpn/server/dh.pem
topology subnet
server 172.16.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
push "route 10.0.0.0 255.255.0.0"
keepalive 10 120
tls-auth /etc/openvpn/server/ta.key 0
cipher AES-256-GCM
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log-append  /var/log/openvpn/openvpn.log
verb 3
explicit-exit-notify 1
data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305

Я добавил этот iptable на сервер для доступа к VPC:

sudo iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -d 10.0.0.0/8 -j MASQUERADE

А вот мой файл .ovpn для клиента:

client
dev tun
proto udp
remote XXXXXXXXXXXXX 1194
resolv-retry infinite
nobind
persist-key
persist-tun
cipher AES-256-GCM
data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305
verb 3
ca [inline]
cert [inline]
key [inline]
tls-auth [inline] 1
pull
<ca>....

При подключении к VPN на клиенте добавляется маршрут с назначением 0.0.0.0 и шлюзом на VPN сервер, я думаю, это и есть проблема, но не знаю, как избежать этого.

~ route -n
Таблица маршрутов IP ядра
Назначение       Шлюз           Маска сети      Флаг Метрика Ссылка Использ. Интерфейс
0.0.0.0         172.16.0.1    0.0.0.0         UG    50     0        0 tun0
0.0.0.0         192.168.1.1   0.0.0.0         UG    100    0        0 eno1
10.0.0.0        172.16.0.1    255.255.0.0     UG    50     0        0 tun0
[**VPN IP**]    192.168.1.1   255.255.255.255 UGH   50     0        0 eno1
172.16.0.0      0.0.0.0       255.255.255.0   U     50     0        0 tun0
192.168.1.0     0.0.0.0       255.255.255.0   U     100    0        0 eno1
192.168.1.1     0.0.0.0       255.255.255.255 UH    50     0        0 eno1

Я использую стандартный менеджер сети Ubuntu для импорта файла .ovpn и подключения к VPN.

Хорошо, похоже, это проблема с менеджером сети Ubuntu.

Я использовал OpenVPN Connect, и с этим приложением на Windows и Mac все работает нормально, а также на Linux, используя командную строку:

sudo openvpn --config settings.ovpn

Ответ или решение

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

Настройки на сервере

Ваш сервер OpenVPN настроен правильно для доступа к VPC, однако для конфигурации маршрутизации, чтобы интернет-трафик не отправлялся через VPN, нужно скорректировать параметры, которые отправляет сервер клиентам.

  1. Удалите команду push для маршрута по умолчанию: Убедитесь, что в конфигурации сервера нет команды, которая передает клиенту маршрут по умолчанию. Проверьте ваш файл конфигурации сервера на наличие строки push "redirect-gateway def1" или другой аналогичной.

  2. Попробуйте использовать push для маршрута к VPC: Вместо маршрута по умолчанию, который нарушает соединение с интернетом, вы хотите добавить маршрут только для вашего VPC:

    push "route 10.0.0.0 255.255.0.0"

    Судя по вашему вопросу, эта команда уже включена в ваш конфиг, так что это правильный шаг.

Настройки на клиенте

На стороне клиента вы также можете изменить, как OpenVPN обрабатывает маршрутизацию.

  1. Удаление маршрута по умолчанию: Попробуйте добавить в ваш клиентский файл .ovpn следующую строку, чтобы отключить получение маршрута по умолчанию:

    route-nopull

    Это предотвратит установку маршрута по умолчанию через VPN, и пользовательский трафик будет следовать через ваш обычный интернет-шлюз.

  2. Добавьте маршруты для VPC: Убедитесь, что маршруты для VPC установлены, добавив следующий маршрут в файл .ovpn, который вы используете:

    route 10.0.0.0 255.255.0.0

Установка и использование OpenVPN на Ubuntu

Так как вы заметили, что проблема может быть связана с Network Manager в Ubuntu, вы можете рассмотреть возможность использования командной строки для запуска OpenVPN, как это делаете вы с sudo openvpn --config settings.ovpn.

Пример конфигурации

В конечном итоге, вот пример вашей клиентской конфигурации .ovpn, которому нужно следовать:

client
dev tun
proto udp
remote XXXXXXXXXXXXX 1194
resolv-retry infinite
nobind
persist-key
persist-tun
cipher AES-256-GCM
data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305
verb 3
route-nopull
route 10.0.0.0 255.255.0.0
<ca>
....
</ca>
<cert>
....
</cert>
<key>
....
</key>
tls-auth [inline] 1

Заключение

После внесения указанных изменений, ваши клиенты должны иметь возможность подключаться к вашему VPC через VPN, не теряя доступ к интернету. Если проблемы продолжаются, рекомендуется провести дополнительные проверки на стороне клиента, чтобы удостовериться в отсутствии конфликта с другими сетевыми настройками или программами.

Оцените материал
Добавить комментарий

Капча загружается...