LINUX.ORG.RU
ФорумAdmin

OpenVPN не видит внешние DNS.

 ,


0

1

Добрый вечер.

Появилась проблема, подключение openVPN перестал резольвить имена через внешние днс.

Что имеем:

сеть 192.168.1.0/24

шлюз 192.168.1.1 он же dhcp сервер.

впн сервер где то на другом полушарии, к которому доступа нет.

днс сервер х.х.х.х, который тоже черт знает где.

ноут с убунтой

lan - addr:192.168.1.30 gw:192.168.1.1 dns:x.x.x.x

tun0 - addr:z.z.z.22 peer:z.z.z.21

route -v

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         z.z.z.21        128.0.0.0       UG    0      0        0 tun0
default         192.168.1.1     0.0.0.0         UG    600    0        0 wlp3s0
z.z.z.1         z.z.z.21        255.255.255.255 UGH   0      0        0 tun0
z.z.z.21        *               255.255.255.255 UH    0      0        0 tun0
vpnserver.com   192.168.1.1     255.255.255.255 UGH   0      0        0 wlp3s0
128.0.0.0       z.z.z.21        128.0.0.0       UG    0      0        0 tun0
link-local      *               255.255.0.0     U     1000   0        0 wlp3s0
192.168.1.0     *               255.255.255.0   U     600    0        0 wlp3s0

без впн все работает, как только подключается впн имена перестаю резольвится.

Вот что говорит tcpdump на момент dns-запроса

19:26:22.682481 IP localhost.52082 > d138db1d.domain: 21447+ A? ex.ua. (23)
19:26:22.682748 IP 192.168.1.30.48780 > 8.8.8.8.domain: 18659+ A? ex.ua. (23)
19:26:22.726975 IP 8.8.8.8.domain > 192.168.1.30.48780: 18659 1/0/0 A 213.133.162.131 (39)

При этом трасса к 8.8.8.8 успешно прокладывается через tun0. Если поднять днс на шлюзе и выдавать его вместо x.x.x.x, то все работает.

как решается:

1.

/etc/init.d/openvpn start
echo 'nameserver 8.8.8.8' >> /etc/resolv.conf

2.

/etc/init.d/openvpn start
ip rule add to 8.8.8.8 lookup  11
ip route add default via 192.168.1.1 table 11

Не помогает(что странно):

/etc/init.d/openvpn start
ip rule add to 8.8.8.8 lookup  11
ip route add default via z.z.z.21 table 11

Как не прибегая к костылям вернуть работоспособность впн? Спасибо!

Логично, что проблема в

default         z.z.z.21        128.0.0.0       UG    0      0        0 tun0

Либо пусть сервере уберут

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

araks ★★ ()
Ответ на: комментарий от araks

Как вариант - можно увеличить метрику до 700 у выданного дефолтного маршрута

araks ★★ ()
Ответ на: комментарий от araks

так впн и должен быть роутом по умолчанию.

там две записи 0.0.0.0/1 default via tun0 и 128.0.0.0/1 default via tun0, что грубо говоря является 0.0.0.0/0 default via tun0.

а третья 0.0.0.0/0 default via wlp3s0 c метрикой 600.

Sherman ()
Ответ на: комментарий от Sherman

Вру, помогает. Но все же костыль, не?

Да нет, норм решение раз работает.

Или это особенность ovpn такая?

Так и есть. Исторически под онтопиком ovpn не устанавливает dns сервера полученные с сервера. Поэтому всегда это решалось скриптами. На эту тему «немало копий было сломано» что мол «оффтопику больше внимания чем родной системе». Но и аргументация исторически так же понятна, не трогать /etc/resolv.conf (это сейчас расплодилось всяких NM) поясню вот прописали вы в resolv.conf свой локальный днс 1.1.1.1 стартанули ovpn он поменял на полученный 2.2.2.2 после этого «бамс» и ребут, не важно по какой причине, например электрики, в результате после ребута resolv.conf останется от ovpn т.е. не правильный. На текущий момент при учете большого разнообразия в дистрах в части «откуда что берем» с точки зрения создателей ovpn я бы даже и не смотрел в сторону какой-то доп. автоматизации, есть скрипты ими и пользуйтесь.

anc ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.