Я пытаюсь подтолкнуть DNS к клиенту с сервером OpenVPN с конфигурацией:
push "dhcp-option DNS 192.168.x.x"
Он работает хорошо, но мне действительно нужно, чтобы во время VPN-соединения я не хотел использовать свои основные преобразователи, клиенты должны использовать только DNS, предоставленный сервером. Это можно сделать с помощью push редирект-шлюз, но я не хочу туннелировать все соединения от клиента через VPN, только определенные сети.
А можно как-нибудь?
Клиенты Linux в порядке со сценарием, в Windows я не уверен
Использовать redirect-private
, но также добавить route
для каждой сети, которую вы хотите маршрутизировать через VPN.
Кстати, обратите внимание, что настройка DNS на других интерфейсах перестанет работать, когда этот интерфейс не будет иметь маршрута к своим DNS-серверам. Вот что происходит, когда redirect-gateway
удаляет шлюз по умолчанию из вашего (W) LAN-интерфейса и добавляет маршрут хоста к IP-адресу VPN-сервера через исходный GW. В зависимости от вашей настройки, возможно, нет рабочей настройки, и вам придется изменить DNS-именование, чтобы включить некоторый поддомен для внутренних сетей.
// edit: Извините, я не видел часть окон, когда размещал это. Следующее - о Linux.
Некоторое время назад у меня была эта проблема с openvpn и клиентом linux. Но resolvconf сильно усложнил мне написание заданных dhcp-параметров. прямо в локальный файл resolv.conf, и не было возможности восстановить старый сервер имен после отключения от vpn. Поэтому я сдался и сделал два небольших сценария bash, которые обрабатывают мой файл resolv.conf при подключении / отключении vpn. (Конечно, эти сценарии должны быть установлены на каждом клиенте, поэтому общего решения нет.)
Сценарий up выполняет резервное копирование ваших обычных определений серверов имен в безопасное место перед тем, как перезаписать их теми, что указаны в полученном dhcp-option. Сценарий вниз просто перемещает ваш обычный файл на место.
добавить в конфиг вашего vpn-соединения
script-security 2
up /etc/openvpn/dns.up.sh
down /etc/openvpn/dns.down.sh
dns.up.h
#!/bin/bash
mv /etc/resolv.conf /etc/resolv.conf.novpn
for optionname in ${!foreign_option_*} ; do
option="${!optionname}"
echo $option
part1=$(echo "$option" | cut -d " " -f 1)
if [ "$part1" == "dhcp-option" ] ; then
part2=$(echo "$option" | cut -d " " -f 2)
part3=$(echo "$option" | cut -d " " -f 3)
if [ "$part2" == "DNS" ] ; then
IF_DNS_NAMESERVERS="$IF_DNS_NAMESERVERS $part3"
fi
if [ "$part2" == "DOMAIN" ] ; then
IF_DNS_SEARCH="$IF_DNS_SEARCH $part3"
fi
fi
done
R=""
for SS in $IF_DNS_SEARCH ; do
R="${R}search $SS
"
done
for NS in $IF_DNS_NAMESERVERS ; do
R="${R}nameserver $NS
"
done
echo -n "$R" > /etc/resolv.conf
dns.down.sh
#!/bin/sh
mv /etc/resolv.conf.novpn /etc/resolv.conf
Karma Fusebox. Это разобрало меня семь лет и девять месяцев спустя.
OpenVPN 2.4.7 в Linux raspberrypi 5.4.51-v7l + # 1333
Та