Мережа використовує лише один DNS, коли підключений до VPN


9

Моя компанія має VPN, до якого мені потрібно підключитися. В OSX я це роблю, використовуючи openvpnтаку конфігурацію:

client
dev tun
proto udp
remote <GATEWAY_ADDRESS> <PORT>
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun
ca /Users/Tommy/.openvpn/dev/ca-dev.crt
cert /Users/Tommy/.openvpn/dev/tommy.brunn-20131122-dev.crt
key /Users/Tommy/.openvpn/dev/tommy.brunn-20131122-dev.key
ns-cert-type server
tls-auth /Users/Tommy/.openvpn/dev/ta-dev.key 1
cipher BF-CBC
comp-lzo
verb 3
auth-nocache
;daemon
;writepid openvpn.pid

В Ubuntu я встановив network-manager-openvpnі додав нове VPN-з'єднання (спроба імпортувати конфігураційний файл спричинив збій) з тими ж встановленими параметрами налаштування: Скріншоти моїх налаштувань

Після підключення до VPN я не можу вирішити жодних доменів.

Якщо я редагую /etc/NetworkManager/NetworkManager.conf, коментую рядок dns=dnsmasqі перезавантажуюсь network-manager, я можу вирішити внутрішні домени своєї компанії, але інші домени, такі як google.com, взагалі не вирішать. Я переконався, що встановив "Метод" на "Автоматичні (VPN) адреси" лише на вкладках IPv4 та IPv6 менеджера мережі для мого VPN-з'єднання, але, схоже, це не має ніякої різниці.

Я також спробував повторно ввімкнути dnsmasqта змінити /etc/resolvconf/resolv.conf.d/base вміст nameserver 127.0.1.1, а потім запустити sudo resolveconf -u, але потім жоден домен знову не вирішиться.

Мені хотілося б мати можливість підключитися до моєї VPN, щоб домени, надіслані DNS-сервером моєї компанії, вирішувалися таким чином, а всі інші домени були вирішені нормально.

EDIT: Виявляється, dnsmasq насправді не встановлений, що я вважав, що це буде за замовчуванням. Тим не менше, якщо я встановлю його, повторно ввімкніть його /etc/NetworkManager/NetworkManager.conf, додаю локальну адресу сервера імен /etc/resolvconf/resolv.conf.d/base, перезавантажте всі сервіси та підключіться до VPN, я можу вирішити домени компанії DNS, але не можу вирішити жодних інших доменів. Так що в основному така ж ситуація, як коли я повністю відключив dnsmasq.

EDIT: Зміст /etc/dnsmasq.conf: http://paste.ubuntu.com/7297231/


Чи можете ви показати нам свої налаштування dnsmasq? Dnsmasq зазвичай отримує свої сервери DNS за течією від /etc/resolv.conf, тому, якщо ви не змінилися, ви, ймовірно, лише перетягуєте DNS через VPN.
jkt123

Звичайно. Я додав посилання на своє/etc/dnsmasq.conf
Tommy Brunn,

Відповіді:


4

З конфігурації ваша програма dnsmasq отримує список серверів DNS, якими слід користуватися /etc/resolv.conf. За замовчуванням dnsmasq намагається віддавати перевагу використанню DNS-серверів, які перебувають в режимі роботи, але надсилатиме заданий запит лише одному серверу DNS. Це може спричинити проблеми, якщо у вас є кілька серверів DNS, які можуть / обслуговуватимуть лише певні запити.

Я вважаю, що ви можете вирішити цю проблему, переконавшись, що у вашій локальній мережі встановлений DNS-сервер (той, який ви використовуєте, коли ви не підключені до VPN) /etc/resolv.conf, а також DNS-сервер у корпоративній мережі, яку ви хочете використання через VPN.

Потім вам потрібно буде відредагувати /etc/default/dnsmasqта додати або відредагувати DNSMASQ_OPTS=рядок, який потрібно включити --all-servers.

Якщо ви все ще не в змозі отримати DNS запити з цією установкою, скопіюйте файл resolv.conf, створені в ході вищезазначених в інше місце кроків, як ~/resolv.conf, встановити /etc/resolv.confз nameserver 127.0.0.1і встановити наступну опцію в /etc/dnsmasq.conf:

resolv-file=/home/your_username/resolv.conf

Це повинно налаштувати вашу систему для запиту вашої установки dnsmasq для DNS, і вона, в свою чергу, використовуватиме як ваш локальний DNS-сервер, так і VPN-сервер VPN для кожного запиту.

Редагувати : Ви можете знайти сервери DNS, які ви зараз використовуєте для певного з'єднання, використовуючи nmcliінструмент. Для пошуку серверів DNS, використовуваних моїм бездротовим з'єднанням, я використовував такий синтаксис:

nmcli dev list iface wlan0 | grep IP4.DNS

Якщо ви запускаєте цю команду, поки ви не підключені до VPN, а потім знову, коли ви підключились і зможете вирішити свої корпоративні адреси, вам слід вимкнути список серверів DNS і вимкнути VPN. Я сподіваюся, що це допомагає.

Редагування 2 : Переглядаючи таблиці маршрутизації, здається, ваш адміністратор VPN налаштував вас прокладати весь ваш трафік через VPN під час підключення (шлюз за замовчуванням змінюється на адресу VPN). Оскільки обидва ваших сервера DNS є загальнодоступними адресами, і жоден з них не налаштовує конкретний маршрут, поки ви перебуваєте на VPN, ви намагаєтеся робити звичайні пошуки DNS через VPN, і саме це не вдається.

У вас може бути кілька способів зробити цю роботу, залежно від налаштування VPN:

  • Якщо VPN дозволить вам отримувати доступ до Інтернету через корпоративну мережу, але не виконувати запити DNS до серверів в Інтернеті, додайте маршрути до своїх DNS-серверів так: sudo route add -host 83.255.245.11 gw 192.168.0.1і sudo route add -host 193.150.193.150 gw 192.168.0.1після підключення до VPN.

  • Якщо VPN не дозволить вам отримати доступ до Інтернету через корпоративну мережу, вам потрібно буде змінити налаштування шлюзу за замовчуванням на вашому комп’ютері, щоб він вказав на 192.168.0.1 після підключення до VPN. У цьому випадку вам потрібно встановити звичайний шлюз за замовчуванням, а потім додати мережеві маршрути для доступу до обладнання, призначеного лише для VPN.

Можливо, вам доведеться знищити таблицю маршрутизації у випадку підключення до VPN, показаному у вашій другій пасті, до наступного:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     1      0        0 eth0
10.100.0.0      10.100.0.105    255.255.255.0   UGH   0      0        0 tun0
10.100.0.105    0.0.0.0         255.255.255.255 UH    0      0        0 tun0

Потім додайте маршрути, як вам потрібно, щоб отримати доступ до корпоративного обладнання. У таблиці маршрутизації, показаній вище, я припустив мережу / 24 в VPN, що може бути неправильним. Вам доведеться правильно встановити маску.


Як би я міг дізнатися адреси на моєму локальному DNS-сервері та адресі у корпоративній мережі?
Томмі Брунн

Я відредагував свою відповідь, щоб надати цю інформацію.
jkt123

Відповідно до nmcli, я отримую такі самі DNS-сервери, коли я підключений до VPN, як і коли я його не маю, хоча я, очевидно, не повинен бути, оскільки я можу вирішити внутрішній домен в мережі компанії, коли я ' м підключений.
Томмі Брун

Коли ви працювали nmcliбез з'єднання VPN, чи вдалося виправити DNS належним чином? Якщо ні, слід відключитися від VPN, переконайтесь, що DNS працює належним чином, а потім запустіть nmcli.
jkt123

Так, мені вдалося нормально вирішити DNS при відключенні від VPN. Приклад виводу: paste.ubuntu.com/7345250
Tommy Brunn

0

Існує кілька прогалин, які я не можу заповнити для вас, пов'язані з тим, як змусити NetworkManager координувати речі для вас. Я спробую хоча б уточнити, як потрібно працювати тим, що координуються. Не ідеальна відповідь, але, сподіваємось, корисна. Власне, враховуючи, що це старе питання, це насправді для нащадків.

Можливо, ви не хочете використовувати корпоративний VPN, за винятком підключень до корпоративної мережі. У цьому випадку було б краще, якщо ваше налаштування VPN лише маршрутизує відповідні мережеві діапазони до VPN і зберігає маршрут за замовчуванням, який вказує на ваш локальний маршрутизатор, як і раніше. Було б непогано, якби компанії встановили свої VPN, щоб лише маршрутизувати трафік або їхні мережі, але, на жаль, це здається рідкісним. На щастя, ви можете налаштувати маршрути в локальному налаштуванні.

Це все ще залишає вас з потенційною проблемою DNS. коментарі jtk123 щодо того, що dnsmasq робить з DNS, не є специфічними для dnsmasq - саме так працює DNS. Якщо клієнт DNS або посередник-посередник отримує відповідь про те, що запис DNS не існує, це не нормальна поведінка, щоб повернутися до запитання іншого сервера DNS. Це означає, що вам потрібен dns-розв’язник, який відповість, як ви хочете, на те, чи стосується запит до мережі компанії чи ні.

Можливо, ваша компанія відповідає на запити DNS, що стосуються більш широкого Інтернету. У такому випадку ви просто використовуєте її, і це, мабуть, добре. В іншому випадку вам потрібен локальний DNS-сервер, який пересилає запити доменів, пов’язаних з компанією, на їх DNS-сервер і пересилає інші запити в інше місце, як це доречно.

dnsmasq можна сказати, щоб пересилати запити для конкретних доменів на конкретні сервери DNS вище. наприклад, перегляньте параметр --server, як описано на man-сторінці dnsmasq.conf. Мені незрозуміло, хоча як змусити мережевого менеджера грати з цим добре (саме це я зараз шукаю).

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