Вопрос или проблема
У меня следующая структура сети:
Все, что синего, это клиент VPN (кроме очевидного сервера)
С моей стороны клиента (которая находится в верхней части, где написано “Мой сайт”), если я включаю “redirect-gateway”, я могу получить доступ к туннелю (все адреса 10.10.10.x и 172.16.a.b), но не могу получить доступ к интернету/LAN. Без этого я не могу получить доступ к туннелю, но могу получить доступ к интернету.
Конфигурация сервера:
port 1194
proto udp
dev tun
ca keys/comp-ca/ca.crt
cert keys/comp-ca/comp-svr.crt
key keys/comp-ca/comp-svr.key
dh keys/comp-ca/dh2048.pem
server 10.10.10.1 255.255.255.0
crl-verify keys/comp-ca/crl.pem
ifconfig-pool-persist servers/compSVR/logs/ipp.txt
cipher AES-128-CBC
user root
group root
status servers/compSVR/logs/openvpn-status.log
log-append servers/compSVR/logs/openvpn.log
verb 2
mute 20
max-clients 200
management 127.0.0.1 7505
keepalive 10 120
client-config-dir /etc/openvpn/servers/compSVR/ccd
client-to-client
comp-lzo
persist-key
persist-tun
ccd-exclusive
push "route 192.168.2.0 255.255.255.0"
push "route 192.168.100.0 255.255.255.0"
Конфигурация клиента:
client
proto udp
dev tun
ca ca.crt
dh dh2048.pem
cert clientlocal.crt
key clientlocal.key
remote 192.168.100.200 1194
cipher AES-128-CBC
verb 2
mute 20
keepalive 10 120
comp-lzo
persist-key
persist-tun
float
resolv-retry infinite
nobind
ccd:
ifconfig-push 10.10.10.177 10.10.10.178
iroute 192.168.100.100 255.255.255.0
iroute 172.16.0.0 255.255.0.0
push "route 192.168.100.0 255.255.255.0"
push "route 172.16.0.0 255.255.0.0"
Также я знаю, что 192.168.100.200 – это локальный адрес, поэтому VPN бесполезен, но я подключаюсь к своему VPN-серверу, чтобы протестировать его локально.
Я хочу иметь возможность получать доступ как к туннелю (и его подсетям), так и к интернету одновременно. Как я уже упоминал, используя эту конфигурацию, как только я подключаюсь к серверу, я вижу только туннель. Я пытался проверить журналы, чтобы узнать, есть ли там что-то, что может дать мне подсказки, но ничего.
Мой клиент – это машина с Windows 7, а сервер – Ubuntu. Я не уверен, есть ли маршруты, которые мешают подключению к интернету.
Вот некоторые примеры маршрутов:
Без VPN:
0.0.0.0 0.0.0.0 192.168.100.100 192.168.100.73 10
127.0.0.0 255.0.0.0 Связано 127.0.0.1 306
127.0.0.1 255.255.255.255 Связано 127.0.0.1 306
127.255.255.255 255.255.255.255 Связано 127.0.0.1 306
172.16.0.0 255.255.0.0 192.168.100.100 192.168.100.73 12
192.168.40.0 255.255.255.0 Связано 192.168.40.1 276
192.168.40.1 255.255.255.255 Связано 192.168.40.1 276
192.168.40.255 255.255.255.255 Связано 192.168.40.1 276
192.168.100.0 255.255.255.0 Связано 192.168.100.73 266
192.168.100.73 255.255.255.255 Связано 192.168.100.73 266
192.168.100.255 255.255.255.255 Связано 192.168.100.73 266
192.168.197.0 255.255.255.0 Связано 192.168.197.1 276
192.168.197.1 255.255.255.255 Связано 192.168.197.1 276
192.168.197.255 255.255.255.255 Связано 192.168.197.1 276
224.0.0.0 240.0.0.0 Связано 127.0.0.1 306
224.0.0.0 240.0.0.0 Связано 192.168.40.1 276
224.0.0.0 240.0.0.0 Связано 192.168.197.1 276
224.0.0.0 240.0.0.0 Связано 192.168.100.73 266
255.255.255.255 255.255.255.255 Связано 127.0.0.1 306
255.255.255.255 255.255.255.255 Связано 192.168.40.1 276
255.255.255.255 255.255.255.255 Связано 192.168.197.1 276
255.255.255.255 255.255.255.255 Связано 192.168.100.73 266
С “redirect-gateway”:
0.0.0.0 0.0.0.0 10.10.10.114 10.10.10.113 31
10.10.10.0 255.255.255.0 10.10.10.114 10.10.10.113 31
10.10.10.112 255.255.255.252 Связано 10.10.10.113 286
10.10.10.113 255.255.255.255 Связано 10.10.10.113 286
10.10.10.115 255.255.255.255 Связано 10.10.10.113 286
127.0.0.0 255.0.0.0 Связано 127.0.0.1 306
127.0.0.1 255.255.255.255 Связано 127.0.0.1 306
127.255.255.255 255.255.255.255 Связано 127.0.0.1 306
172.16.0.0 255.255.0.0 192.168.100.100 192.168.100.73 12
192.168.2.0 255.255.255.0 10.10.10.114 10.10.10.113 31
192.168.40.0 255.255.255.0 Связано 192.168.40.1 276
192.168.40.1 255.255.255.255 Связано 192.168.40.1 276
192.168.40.255 255.255.255.255 Связано 192.168.40.1 276
192.168.100.0 255.255.255.0 Связано 192.168.100.73 266
192.168.100.73 255.255.255.255 Связано 192.168.100.73 266
192.168.100.200 255.255.255.255 192.168.100.100 192.168.100.73 11
192.168.100.255 255.255.255.255 Связано 192.168.100.73 266
192.168.197.0 255.255.255.0 Связано 192.168.197.1 276
192.168.197.1 255.255.255.255 Связано 192.168.197.1 276
192.168.197.255 255.255.255.255 Связано 192.168.197.1 276
224.0.0.0 240.0.0.0 Связано 127.0.0.1 306
224.0.0.0 240.0.0.0 Связано 10.10.10.113 286
224.0.0.0 240.0.0.0 Связано 192.168.40.1 276
224.0.0.0 240.0.0.0 Связано 192.168.197.1 276
224.0.0.0 240.0.0.0 Связано 192.168.100.73 266
255.255.255.255 255.255.255.255 Связано 127.0.0.1 306
255.255.255.255 255.255.255.255 Связано 10.10.10.113 286
255.255.255.255 255.255.255.255 Связано 192.168.40.1 276
255.255.255.255 255.255.255.255 Связано 192.168.197.1 276
255.255.255.255 255.255.255.255 Связано 192.168.100.73 266
Без “redirect-gateway”:
0.0.0.0 0.0.0.0 192.168.100.100 192.168.100.73 11
10.10.10.0 255.255.255.0 10.10.10.114 10.10.10.113 31
10.10.10.112 255.255.255.252 Связано 10.10.10.113 286
10.10.10.113 255.255.255.255 Связано 10.10.10.113 286
10.10.10.115 255.255.255.255 Связано 10.10.10.113 286
127.0.0.0 255.0.0.0 Связано 127.0.0.1 306
127.0.0.1 255.255.255.255 Связано 127.0.0.1 306
127.255.255.255 255.255.255.255 Связано 127.0.0.1 306
172.16.0.0 255.255.0.0 192.168.100.100 192.168.100.73 12
192.168.2.0 255.255.255.0 10.10.10.114 10.10.10.113 31
192.168.40.0 255.255.255.0 Связано 192.168.40.1 276
192.168.40.1 255.255.255.255 Связано 192.168.40.1 276
192.168.40.255 255.255.255.255 Связано 192.168.40.1 276
192.168.100.0 255.255.255.0 Связано 192.168.100.73 266
192.168.100.73 255.255.255.255 Связано 192.168.100.73 266
192.168.100.255 255.255.255.255 Связано 192.168.100.73 266
192.168.197.0 255.255.255.0 Связано 192.168.197.1 276
192.168.197.1 255.255.255.255 Связано 192.168.197.1 276
192.168.197.255 255.255.255.255 Связано 192.168.197.1 276
224.0.0.0 240.0.0.0 Связано 127.0.0.1 306
224.0.0.0 240.0.0.0 Связано 10.10.10.113 286
224.0.0.0 240.0.0.0 Связано 192.168.40.1 276
224.0.0.0 240.0.0.0 Связано 192.168.197.1 276
224.0.0.0 240.0.0.0 Связано 192.168.100.73 266
255.255.255.255 255.255.255.255 Связано 127.0.0.1 306
255.255.255.255 255.255.255.255 Связано 10.10.10.113 286
255.255.255.255 255.255.255.255 Связано 192.168.40.1 276
255.255.255.255 255.255.255.255 Связано 192.168.197.1 276
255.255.255.255 255.255.255.255 Связано 192.168.100.73 266
Я думаю, что проблемы связаны с таблицей маршрутов (выше), которая передается в Windows.
Первая проблема заключается в том, что вы тестируете это на сегменте локальной сети 192.168.100.0/24
– это можно сделать, но вы сталкиваетесь с проблемами конфликтов адресов. Например, по умолчанию вы достигаете сервера 192.168.100.200
через устройство Ethernet, но как только вы настраиваете VPN, вы перенаправляете 192.168.100.0/24
в туннель с помощью push "route 192.168.100.0 255.255.255.0"
.
Вторая проблема заключается в том, что VPN-сервер может быть неправильно настроен для пересылки пакетов, которые приходят из VPN с redirect-gateway
. Вот почему вы теряете доступ к локальному LAN и интернету – ваши пакеты поступают от клиента к серверу, но не пересылаются.
Спорим, что решение такое же, как здесь: OpenVPN не является шлюзом по умолчанию для всего трафика – прочитайте часть про sysctl
и iptables
и дайте нам знать, помогло ли это.
Ответ или решение
Решение проблемы с OpenVPN: Неправильная работа "redirect-gateway"
Введение
Проблема, о которой идет речь, связана с неправильной работой функции redirect-gateway
в конфигурации OpenVPN. Подобные ситуации довольно распространены, особенно при локальном тестировании VPN-соединений. Данная статья поможет вам разобраться в проблемах настройки и предоставит рекомендации по их устранению.
Описание проблемы
Существует две основные проблемы:
-
Конфликт адресов в локальной сети: При использовании сети 192.168.100.0/24 возникает конфликт с адресом сервера VPN (192.168.100.200). Когда вы применяете
push "route 192.168.100.0 255.255.255.0"
, трафик, предназначенный для вашего локального сети, на самом деле отправляется через туннель. Это приводит к тому, что клиент не может получить доступ к интернету и локальной сети одновременно. -
Настройки маршрутизации и правила форвардинга: После активации
redirect-gateway
, маршруты, которые используются для отправки пакетов, могут стать неправильными, если VPN-сервер не настроен должным образом для их обработки. Трафик от клиента до сервера может достигать сервера, но не будет перенаправляться на интернет.
Рекомендации по настройке
-
Изменить конфигурацию серверной части:
- Проверьте, чтобы на сервере был включен IP-форвардинг. Для этого выполните:
echo 1 > /proc/sys/net/ipv4/ip_forward
- Для постоянного действия после перезагрузки, добавьте в файл
/etc/sysctl.conf
:net.ipv4.ip_forward = 1
- Примените изменения:
sysctl -p
- Проверьте, чтобы на сервере был включен IP-форвардинг. Для этого выполните:
-
Настройки iptables:
- Убедитесь, что у вас есть правила iptables, позволяющие маршрутизацию трафика. Например:
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE
- Убедитесь, что у вас есть правила iptables, позволяющие маршрутизацию трафика. Например:
-
Корректные маршруты на клиенте:
- После подключения к VPN с
redirect-gateway
, проверьте таблицу маршрутов на клиенте. Для обеспечения доступа к интернету необходимо, чтобы маршрут 0.0.0.0/0 был направлен на интерфейс VPN, а маршруты для локальной сети корректно обрабатывались.
- После подключения к VPN с
-
Проверка логов:
- Анализируйте логи как на стороне клиента, так и на сервере. Включите более высокий уровень логирования (например,
verb 4
), чтобы получить более подробную информацию о маршрутах и соединениях, которые проходят через OpenVPN.
- Анализируйте логи как на стороне клиента, так и на сервере. Включите более высокий уровень логирования (например,
-
Тестирование:
- После изменения конфигурации перезапустите сервис OpenVPN на сервере:
systemctl restart openvpn@<имя вашего сервера>
- Затем подключитесь к VPN и проверьте доступность интернет-ресурсов и локальных адресов, используя команду
ping
.
- После изменения конфигурации перезапустите сервис OpenVPN на сервере:
Заключение
Разбор конкретных настроек и переносится в конфигурацию OpenVPN поможет решить проблему с доступностью интернет и локальной сети по БП (базовой производительности). Следуя вышеуказанным рекомендациям, вы сможете добиться одновременного доступа к локальным ресурсам и интернету, используя OpenVPN и функцию redirect-gateway
.
Если у вас возникли дополнительные вопросы или сложности, рекомендую обратиться к документации OpenVPN или сообществу специалистов для получения дальнейшей помощи.