Openvpn клієнт, примушуйте DNS-сервер


10

У нашій конфігурації Ubuntu Linux є DNS-сервер (Bind 9).
І resolv.confмає своє

  nameserver 127.0.0.1

Під час використання openvpnклієнта на цьому Linux сервер імен не змінюється (сервером VPN), але я хотів би встановити його - лише під час сеансу VPN - на інший конкретний сервер DNS x.y.z.t, змінивши конфігурацію клієнта openvpn.

Потім, коли openvpnсеанс закінчиться, сервер імен повинен повернутися до 127.0.0.1.

Чи є "чистий" спосіб (тобто рядок у файлі конфігурації клієнта openvpn), щоб це зробити?

(Примітка. Конфігурацію сервера VPN неможливо змінити)

Відповіді:


17

Після більшого гуглінгу можна знайти відповідь - нижче, якщо це може комусь допомогти.

  • встановіть resolutionvconf, який може зберегти та відновити resolv.confконфігураційний файл
  • додати скрипт, який буде запущений openvpn , в /usr/share/openvpn, названому update-resolv-conf. Сценарій визначає, що має бути новим resolv.conf, і як відновити його (див. Посилання нижче)
  • додати

ці рядки

  script-security 2
  up /usr/share/openvpn/update-resolv-conf
  down /usr/share/openvpn/update-resolv-conf

у файлі конфігурації клієнта openvpn.

Прочитайте на цій вікі для отримання додаткової інформації.


6
Більш новіші встановлення OpenVPN включають цей сценарій із встановленням. Замість завантаження та встановлення вручну /usr/share/openvpn/update-resolv-conf, його можна встановити заздалегідь /etc/openvpn/update-resolv-conf.
Нейт Лемптон

Яка версія OpenVPN почала включати цей файл?
lanoxx

1
Трохи запізнюємось на вечірку тут, але я використовую 2.4.6і вона встановлена ​​для мене
Рошан Бхумбра

1

Подумайте про використання route-up/ route-downскриптів вашого клієнта для зміни вашої конфігурації під час налаштування з'єднання, як вважаєте за потрібне. Докладніше про те, як налаштувати цю програму та які змінні ви можете використовувати в цих сценаріях, див. У документах OpenVPN .


+1, цікаво і корисно. Однак рішення reslvconf вгору і вниз (вище або нижче, див. Рейтинг ..) є більш важливим і , тим самим, чистішим.
e2-e4

@ ring0 Я б радив використовувати route-upзамість того, upщоб мінімізувати умови гонки. Коли upсценарій виконаний, з'єднання ще не встановлено, і ви не маєте шансу запитувати віддалений резолютор, який ви налаштували. Якщо ви запускаєте клієнт OpenVPN у ситуації, коли налаштування з'єднання не завершиться, ви перебуваєте на тривалий період свого розв'язника у можливо нефункціональному стані. Докладні відомості див. У розділі "Порядок виконання сценаріїв" на головній сторінці OpenVPN .
the wabbit

Я зробив кілька тестів, і сценарій вгору називається правильно, коли буде досягнуто "Послідовність ініціалізації завершена", а не раніше. Btw не може знайти "маршруту вниз" у людини.
e2-e4

1

Це була корисна інформація, щоб допомогти мені виправити цю проблему.

Я арка linux, і те, що я побачив, що коли клієнт Linux використовується з сервером Access, цей не в змозі змінити параметри DNS для відповідного клієнта, не вирішуючи хост, оскільки він стоїть на OPEN VPN Documentation

Я створив скрипт, який виправляє проблему і з парою додаткових параметрів обробляє з'єднання openvpn через командний рядок.

https://gist.github.com/android10/ee5c3e93dbcf9b7b31e6ee768cbfd477

Ось основна команда, яка виконується для з'єднання:

  nohup openvpn --config $OVPN_FILE_PATH --askpass $OVPN_PRIVATE_KEY_FILE_PATH \
  --script-security 2 \
  --setenv PATH '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' \
  --up /etc/openvpn/scripts/update-systemd-resolved \
  --down /etc/openvpn/scripts/update-systemd-resolved \
  --down-pre \
  &>/dev/null &

Будь-який зворотній зв'язок його більш ніж оцінює.


-2

echo "nameserver = wxyz"> /etc/resolv.conf
echo "nameserver = 127.0.0.1" >> /etc/resolv.conf


2
Це здається неточним (подумайте про шлях пошуку DNS та наполегливість сервера імен VPN), але також незрозуміло, куди ви хочете його поставити.
Falcon Momot

Між 'сервером імен' та IP-адресою має бути пробіл.
lorenzog
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.