Рейтинг:0

Маршрут OpenVPN к самому серверу через туннель

флаг cn

Я хочу использовать соединение OpenVPN для доступа к своим локальным ресурсам. У меня есть iptables установить, чтобы разрешить подключение из 192.168.1.0/24 подсеть. Когда я подключаюсь со своего телефона или компьютера с Windows, все работает отлично. Но когда я пытаюсь подключиться из Ubuntu, это не так.

После проверки tcpdump и читая много логов я вижу, что пакеты из Ubuntu имеют SRC=настоящий белый ip в то время как для телефона или Windows SRC=IP-адрес локального туннеля и он работает так, как ожидалось.

Затем я проверил свои маршруты при подключении к VPN и обнаружил следующее (предположим 77.77.77.77 - OpenVPN-сервер, 192.168.8.1 - мой роутер):

Шлюз назначения Флаги Генмаски Метрика Ссылка Использование Iface
0.0.0.0 192.168.255.5 0.0.0.0 UG 50 0 0 tun0
0.0.0.0 192.168.8.1 0.0.0.0 УГ 600 0 0 wlp2s0
77.77.77.77 192.168.8.1 255.255.255.255 UGH 600 0 0 wlp2s0
192.168.8.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp2s0
192.168.8.1 0.0.0.0 255.255.255.255 UH 600 0 0 wlp2s0
192.168.255.1 192.168.255.5 255.255.255.255 UGH 50 0 0 tun0
192.168.255.5 0.0.0.0 255.255.255.255 UH 50 0 0 tun0

Я считаю, что корень моей проблемы:

77.77.77.77 192.168.8.1 255.255.255.255 UGH 600 0 0 wlp2s0

поскольку он говорит использовать мой маршрутизатор в качестве шлюза для доступа к самому VPN-серверу. В результате вместо туннельного IP-адреса я вижу свой реальный IP-адрес.

Но я не понимаю, как это исправить. Я уже пытался изменить маршрут вручную, чтобы направить трафик на сервер через туннель, но это не помогло:

77.77.77.77 192.168.255.5 255.255.255.255 UGH 600 0 0 tun0

Итак, если все мое расследование было правильно понято, для решения проблемы мне нужно направить трафик на сам vpn-сервер через туннель вместо шлюза по умолчанию. я полагал перенаправление-шлюз def1 директива должна перенаправлять ВСЕ трафик через VPN, включая самого себя.Но похоже, что нет.

Мой server.conf:

сервер 192.168.255.0 255.255.255.0
глагол 3
ключ /etc/openvpn/pki/private/vpn.example.com.key
ca /etc/openvpn/pki/ca.crt
сертификат /etc/openvpn/pki/issued/vpn.example.com.crt
дх /etc/openvpn/pki/dh.pem
tls-аутентификация /etc/openvpn/pki/ta.key
ключевое направление 0
поддержка 10 60
постоянный ключ
упорный тун
прото удп
порт 1194
разработчик tun0
статус /tmp/openvpn-status.log
пользователь никто
группа
маршрут 192.168.254.0 255.255.255.0
нажмите «блокировать снаружи DNS»
нажмите «dhcp-опция DNS 192.168.1.1»
нажмите "dhcp-option DOMAIN lan"

Мой клиент.ovpn:

клиент
ни к чему
разработчик тун
сервер удаленного сертификата tls
удаленный vpn.example.com 1194 udp
...сертификаты...
ключевое направление 1
перенаправление-шлюз def1
Tom Yan avatar
флаг in
Кажется, вы говорите о двух отдельных, не связанных между собой проблемах. Доступ к другим службам на хосте вашего VPN-сервера или других хостах в локальной сети сервера не имеет ничего общего с маршрутом удаленного адреса. Уточните, пожалуйста, вашу цель (не делая диких догадок) и настройку (например,независимо от того, находится ли хост вашего VPN-сервера за NAT или настроен публичный IP-адрес непосредственно на нем)
ihorc avatar
флаг cn
Я хочу получить доступ к службе, размещенной на моем VPN-сервере, по доменному имени, например. https://mysite.example.com, который указывает на 77.77.77.77. Хост VPN-сервера находится за NAT, но все настройки брандмауэра и переадресации портов выполнены правильно, так как я могу получить к нему доступ, как и ожидалось, с других устройств с той же конфигурацией. Кроме того, все отлично работает без ограничения на 192.168.1.0/24 от публики. Единственная проблема заключается в том, что linux-клиент показывает свой реальный IP-адрес вместо IP-адреса туннеля, поэтому он не может пройти через соответствующее правило iptables (-A INPUT -s 192.168.1.0/24 -j ACCEPT).
Nikita Kipriyanov avatar
флаг za
Это невозможно. Или, я должен сказать, вы должны настроить довольно любопытные DNS-записи SVCB для этого, это выходит за рамки вопроса, как если бы он был сформулирован. Как правило, вы *либо* должны использовать "внутренний" (инкапсулированный) IP-адрес для доступа к веб-сайту (чтобы трафик проходил через VPN) или "общедоступный" IP-адрес, который также используется в качестве конечной точки VPN, но трафик не будет проходить через VPN, потому что вам нужен прямой маршрут (не через VPN) к этому IP-адресу, чтобы установить сам канал VPN. **Зачем тебе это надо?**
ihorc avatar
флаг cn
Почему тогда он работает на телефоне или клиенте Windows? >>> Зачем тебе это? - Для доступа к моим веб-сайтам, как обычно, по домену. Но сделать их доступными только через VPN.
Nikita Kipriyanov avatar
флаг za
Вы уверены, что это так работает? Я сильно сомневаюсь в этом. Кроме того, шифрование OpenVPN точно такое же, как шифрование в HTTPS, и безопасность такая же; зачем вообще использовать для этого VPN?
ihorc avatar
флаг cn
Да, я уверен. >>> Зачем вообще использовать для этого VPN? - Очевидно, чтобы ограничить публичный доступ к моим веб-сайтам.
Tom Yan avatar
флаг in
Вероятно, использование DNS-сервера для VPN-клиентов, разрешающих домен в IP-адрес VPN-сервера, является самым чистым способом, хотя технически вы можете использовать маршрутизацию на основе политик для маршрутизации только определенных (например, на основе dport) трафика на «77.77.77.77» через Интернет-шлюз клиента.Однако, закончится ли это хорошо, в конечном итоге, зависит от других вещей, поскольку, по-видимому, мы говорим о довольно неприятной шпильке.
Tom Yan avatar
флаг in
Кстати, это, вероятно, было бы менее неприятно, если бы вы также перенаправляли (например, dnat на себя) трафик на VPN-сервере, чтобы они не попадали на его маршрутизатор, а затем возвращались обратно, если вы полны решимости выйти из строя туда.
ihorc avatar
флаг cn
Если вы имеете в виду правило MASQUERADE, то оно уже есть. Я почти уверен, что это что-то о различиях NAT Loopback в разных клиентских ОС. Это не проблема, связанная с сервером, иначе она не будет работать ни на одном устройстве. Итак, в основном моя цель очень проста - сделать сайт доступным только через VPN, но это кажется более сложным, чем на первый взгляд.
Tom Yan avatar
флаг in
Нет, я имею в виду правило ПЕРЕНАПРАВЛЕНИЯ для адреса получателя 77.77.77.77. Но это не предложение для вашей текущей проблемы, а просто дополнительный совет, если вы хотите придерживаться этого причудливого желания/подхода. И ваша текущая проблема связана не с петлей NAT, а с тем, как настроен маршрут для «77.77.77.77» на другой клиентской платформе. (Ожидается, что *не* будет работать в Linux, если вы не настроите настройку маршрута, как я уже упоминал; не уверен насчет Windows, но на Android каждое приложение имеет свою собственную таблицу маршрутов, поэтому оно может работать из коробки.)
Tom Yan avatar
флаг in
TL;DR, исследование политики маршрутизации, также известной как IP-правило. Я не думаю, что какой-либо параметр конфигурации ovpn может помочь вам достичь того, чего вы хотите, кроме того факта, что вам нужно будет отключить / отфильтровать маршрут по умолчанию, нажимая / устанавливая такие, как `redirect-gateway`)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.