Не работает dns через vpn linux

Обновлено: 05.07.2024

Сервера DNS используются системой для преобразования сложных для запоминания IP адресов в простые доменные имена. Это делается потому что людям сложно запоминать несколько никак не связанных цифр, но очень просто запомнить слово.

Когда компьютеру нужно узнать IP адрес какого-либо домена, он отправляет запрос известному ему DNS серверу. Эти сервера могут быть получены автоматически от роутера по DHCP или же заданы в ручную. В этой статье мы рассмотрим как выполняется настройка DNS Ubuntu 16.04 и более старых версиях.

Настройка DNS в Ubuntu через GUI

Раньше, для настройки DNS серверов, которые будут использоваться системой было достаточно внести адреса нужных серверов в файл /etc/resolv.conf. Но сейчас всей конфигурацией сети в Ubuntu управляет NetworkManager, а этот файл теперь представляет собой только ссылку на файл NetworkManager.

Этот способ до сих пор работает, но в нем вы можете настроить DNS на LiveCD, или до перезагрузки. После перезагрузки все настройки собьются и придется все делать заново. Поэтому, чтобы все сохранилось нужно выполнять все действия через интерфейс NetworkManager. Сначала откройте контекстное меню для значка сети на панели и выберите "Изменить подключения":


Выберите ваше подключение и нажмите "Изменить":


В открывшемся окне перейдите на вкладку "Параметры IPv4":


Затем, в поле "Способ настройки" выберите "Автоматически (DHCP, только адрес)":


Теперь немного ниже появиться поле "Серверы DNS", где вам нужно прописать нужные серверы, можно несколько адресов через запятую. Например, можно указать сервера от Google:


Поле этого нажмите "Сохранить" и "Закрыть". Теперь можете переподключитесь к этому соединению и можете проверять текущий DNS сервер:


Собственно, это все, но есть еще один способ настройки через консоль, если этот не сработал или вы предпочитаете работать из консоли.

Настройка DNS через терминал Ubuntu

В Ubuntu есть унифицированный интерфейс настройки сети, который настраивается через конфигурационный файл /etc/network/interfaces. Сначала смотрим список сетевых интерфейсов:


Откройте файл для редактирования и найдите в нем имя своего сетевого интерфейса, например, auto enp0s3, если такой секции нет, ее нужно добавить:

sudo vi /etc/network/interfaces

auto enp0s3
iface enp0s3 inet dhcp

Затем, добавьте в эту секцию строчку:


Здесь адрес 8.8.8.8 - это адрес вашего DNS сервера. Но эта настройка сработает, только если ваш DHCP клиент не пытается назначить адрес самостоятельно. Чтобы указать DNS адрес на уровне DHCP сервера нужно добавить такую строчку в конфигурационный файл /etc/dhcp/dhclient.conf:

sudo vi /etc/dhcp/dhclient.conf

supersede domain-name-servers 8.8.8.8


Здесь тоже адрес 8.8.8.8 означает адрес DNS сервера. Для верности, вы можете добавить свои адреса DNS серверов в файл /etc/resolvconf/resolv.conf.d/base:

sudo vi /etc/resolvconf/resolv.conf.d/base


Чтобы настройки вступили в силу необходимо перезапустить сеть:

sudo systemctl restart networking

Возможно, даже лучше будет если вы полностью перезагрузите компьютер. Теперь вы можете открыть /etc/resolv.conf и посмотреть применялся ли новый адрес DNS:


Как видите, в моем примере все заработало. Подобно этому выполняется настройка dns linux для любого дистрибутива.

Выводы

В этой небольшой статье мы рассмотрели как выполняется настройка DNS Ubuntu 16.04 через графический интерфейс или терминал. В Ubuntu автоматической настройкой DNS могут заниматься множество утилит и это создает некоторые проблемы при настройке, но со всем можно разобраться. Надеюсь, эта информация была полезной для вас.

  • Вопрос задан более трёх лет назад
  • 2822 просмотра

dummyman

Вероятно, вы забыли что-то добавить в конфиг, всегда есть возможность установить dns-ы индивидуально локально.

Перезагружаем
sudo service network-manager restart

Вроде оно. Если ошибка повторяется, то можно добавить влоб

Есть вариант поставить dnsmasq

По аналогии перезагрузить и пользоваться.
sudo service dnsmasq restart

cat /etc/resolv.conf
это не помогло, ДНС остался только nameserver 127.0.1.1

а этого файла у меня НЕТУ ВООБЩЕ /etc/dhcp/dhclient.d/mydns.conf

Есть вариант поставить dnsmasq

sudo echo "server=8.8.8.8" >> /etc/dnsmasq.conf
sudo echo "server=8.8.4.4" >> /etc/dnsmasq.conf

НЕТУ У МЕНЯ ЭТИХ ФАЙЛОВ

dummyman

nosazus:
Все делать на клиенте.
/etc/resolvconf/resolv.conf.d/base
/etc/resolvconf/resolv.conf.d/head
/etc/dhcp/dhclient.d/mydns.conf
должны создаться.

dnsmasq еще нужно установить.
apt-get install dnsmasq

dummyman

Потому что убунта.

Ставил бы сразу слаку - не видел бы проблем!

Спасибо вам за советы. Вчера ночью психанул и бросил. Сегодня проснулся, загрузил комп и в /etc/resolv.conf появился nameserver 8.8.4.4. Попробовал подключится к ВПН - и он заработал. Не знаю почему. Ничего не менял. Получается перезагрузка обяхательно нужна после этих манипуляций? Я перезагружал только NetworkManager вчера. Делал только это:

sudo echo "nameserver 8.8.8.8" > /etc/resolvconf/resolv.conf.d/base
sudo echo "nameserver 8.8.4.4" > /etc/resolvconf/resolv.conf.d/head

Слака - это Slackware? Я читал что вроде ее бросили развивать. ВОобще думаю над переходом с Убунты, вы правы. Думал чистый Дебиан, но прочитал что там проблемы с вай-фаем после установки ОС, надо плясать. dummyman: sshuttle ОЧЕНЬ интересно. Я только вчера читал как тунеллировать через SSH, но встречал инструкции только как по отдельности направлять траффик, для SMTP, TCP и тд. Получается можно сразу все завернуть? Попробую!

dummyman

nosazus: слака жива. почему я говорю, что с ней бы не было таких проблем? когда вы дойдете до настройки dns, вы уже будете уметь программировать хотя б на базовом уровне, компилировать ядро, вносить коррективы в код Патрика. Вы будете в курсе обо всех компонентах, обеспечивающих работу сети. А уж конфиг dns для вас не будет вопросом.

dummyman написал варианты решения проблемы но не написал причины, куда можно посмотреть повнимательнее :
Если до подключения интернет работает а после - нет, значит вы в конфигурации VPN при подключении отдаете неверные DNS сервера с VPN сервера на ваш клиент. Это первый вариант, который можно проверить.
Путь решения описал dummyman :
- Вписать гарантированно работающие DNS серверы в ваш resolv.conf
- использовать dnsmasq и резолвить DNSы только через него, игнорируя приходящие настройки (это, по сути, еще одна программная прослойка которую нужно корректно настроить, поэтому этот путь спорный)
Я бы добавил еще путь "проверить настройки на VPN сервере : что отдается клиенту при подключении в качестве настроек сети(dns серверы)

Второй вариант проблемы - используемые вами до подключения DNS серверы пытаются ходить в интернет через VPN, а VPN им не разрешает по какой-то причине. Здесь только проверка (tracepath до прописанного в конфиге DNS сервера) и после получения результата - корректная настройка того узла где трейс теряется. Или же добавление маршрутов к DNS серверам через ваше интернет подключение, чтобы не ходили DNSы через VPN.

P.S. прочитал комментарии к ответу:


Что-то у вас намудрено. Проверьте для начала работоспособность интернета и содержимое /etc/resolv.conf без подключенного VPN.

Спасибо вам за советы. Вчера ночью психанул и бросил. Сегодня проснулся, загрузил комп и в /etc/resolv.conf появился nameserver 8.8.4.4. Попробовал подключится к ВПН - и он заработал. Не знаю почему. Ничего не менял. Получается перезагрузка обяхательно нужна после этих манипуляций? Я перезагружал только NetworkManager вчера. Делал только это:

sudo echo "nameserver 8.8.8.8" > /etc/resolvconf/resolv.conf.d/base
sudo echo "nameserver 8.8.4.4" > /etc/resolvconf/resolv.conf.d/head

dummyman

yellowmew: Да тут вопрос не в эталонной настройке vpn. Автору бы сначала сделать чтобы работало хоть как то. Знаю как это выглядет. Сотни вкладок с форумами на слабеньком нетбуке. Дикая головная боль.

А с нынешним количеством гайдов по настройке openvpn сложно понять что именно было упущено. Там надо принимать во внимание и тонкости дистрибутивов и особенности хостера. Как бы, уже надо разбираться что и как. А в настройках локально сложно что-либо упустить.

Граммотная настройка vpn придет с количеством настроенных серверов. А для первых разов на какое-то время сойдет и так. Понятное дело, что это не совсем правильно, но ведь и автор вопроса занят личными или корпоративными задачами (делами), а не написанием гайда по настройкам.

Пробовали, ваше мнение?

dummyman

?u=http%3A%2F%2Ffiles.cyberciti.biz%2Fup

nosazus: ну конкретно этот я не пробовал. Полследний раз vpn настраивал год назад. Вручную как-то надежнее. Ну а по добавлению / удалению юзера у меня свои скрипты. А автору вашего скрипта советовал бы использовать dialog если хочется добавить интерактива.

Когда я подключаюсь к сети VPN через Gnome Network-manager, я теряю разрешение DNS и на практике не могу получить доступ к ресурсам внутри сети VPN или за ее пределами.

Когда я использовал Ubuntu 16.04 и использовал VPN, /etc/resolv.conf/ файл " " содержал DNS-серверы сети (VPN), которую я подключил. Теперь он всегда содержит следующие записи:

Из того, что я понял, 127.0.0.53 является адрес заглушки DNS, используемый system-resolved .

Я подозреваю, что это ошибка, потому что VPN работал нормально на Ubuntu 16.04. Можно ли как-то настроить DNS-серверы моей сети, когда я использую службу VPN?

Обновить:

Я проверил, что сервер использует сжатие lzo, и я также включил его. Соединение остается активным, но я не могу перейти ни на одну страницу внутри или за пределами VPN.

В файле конфигурации, указанном ниже, я включил решения, опубликованные в ответах

При отладке аналогичной проблемы, которая не может быть решена точно так же, я использовал resolvectl status и, resolvectl help чтобы найти свое конкретное решение.

Затем отредактируйте файл клиента OpenVPN (например, client.ovpn), изменив сценарии вверх / вниз на:

(Я закомментировал исходные настройки вверх / вниз).

Если вы используете утилиту gnome openvpn, где должен храниться файл config.ovpn? config.ovpn не "найден" - это файл конфигурации клиента, используемый для подключения. Вы либо генерируете его, либо он выдается вам вашим провайдером OpenVPN (и он может не называться config.ovpn - он может называться как угодно client.ovpn ). Я получаю WARNING: Failed running command (--up/--down): external program fork failed

проблема

Файл /etc/resolv.conf не обновляется /etc/openvpn/update-resolv-conf сценарием, поскольку resolvconf по умолчанию не установлен в Ubuntu 18.04.

Фактически, одна из первых строк этого скрипта проверяет наличие /sbin/resolvconf исполняемого файла:

Установка resolvconf через apt-get не является решением, так как /etc/openvpn/update-resolv-conf скрипт обновляет /etc/resolv.conf файл с введенной записью DNS, но устройство tun, кажется, игнорирует его.

Решение

Ubuntu 18.04 использует systemd-resolved , поэтому все, что вам нужно сделать, это установить вспомогательный скрипт openvpn для systemd-resolved через

Обновите ваш config.ovpn файл, добавив следующие строки:

Это вместо того, чтобы добавить и вниз /etc/openvpn/update-resolv-conf к конф.

Чтобы предотвратить утечку DNS, вы должны добавить эту строку в конец config.ovpn файла (согласно этому комментарию к выпуску systemd ):

Большое спасибо, работая на меня в Ubuntu 18.04. И я хочу указать, что этот параметр script-security 2 все еще необходим перед линиями вверх / вниз, в противном случае программа падает с ошибкой (OpenVPN 2.4.4) Рад, что помогло :) Поменял последнее предложение в ответе, причем в моем случае script-security 2 не было необходимости. Это возможно, потому что я запускаю клиент openvpn от имени пользователя root (с помощью sudo) @Qlimax Знаете ли вы, как мы можем импортировать эти настройки в клиент gnome openvpn? Удивило, что это работает для многих из вас: у меня есть файл ovpn.config, да, но NetworkManager, похоже, не использует его. Вы редактировали файл и повторно импортировали его, в частности, для замены скриптов up / downs. Потому что я вижу этот непрозрачный двоичный файл / usr / lib / NetworkManager / nm-openvpn-service-openvpn-helper, для которого я не смог найти документацию. Если требуется повторный импорт файла ovpn.config, измените ответ.

На самом деле, есть гораздо более простое решение этой проблемы. Проблема в DNS-трафике и в том, как это делает Ubuntu 18. По умолчанию переадресация IP отключена, что необходимо OpenVPN для обеспечения правильной работы сети. Все, что вам нужно сделать, это запустить следующую команду:

Это исправление не требует внесения каких-либо изменений в код клиента или OpenVPN после обновления до Ubuntu 18. Протестировано и подтверждено, что оно работает.

Однако это, очевидно, требует от вас администрирования сервера. И, к сожалению, ошибка существует для многих, кто просто подключается с 18.04 к серверу OpenVPN, который администрируется кем-то другим .

При настройке VPN не работает DNS (В смысле сайты грузятся по айпишникам, а по именам не хотят)

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

При настройке VPN не работает DNS

После всей процедуры было замечено две проблемы:
1. Несмотря на то что адрес DNS прописан в таблице, имена не пингуются. Пингуются только IP-адреса.
2. Добавление в файле /etc/ppp/peers/svitonline строчки defaultroute не привело к автоматическому добавлению маршрута по-умолчанию. Приходится пока-что добавлять ручками.
Почему так? Где-то есть ошибка или что-то не учтено в настройках?
Заранее благодарен полезным советам и наставлениям

вывод
$ ip a; ip n
до и после подключения.
при подключении добавьте pppd-емону опции debug nodetach dump hide-password
и вывод pppd тоже приложите сюда. Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог вывод
$ ip a; ip n
до и после подключения.
при подключении добавьте pppd-емону опции debug nodetach dump hide-password
и вывод pppd тоже приложите сюда.

пардон, опечатался. не «ip n», а «ip r».
а Вы упустили опцию dump

на основании имеющейся информации могу порекомендовать добавить в /etc/ppp/peers/svitonline опции


если вопрос не решится, выложите снова вывод
$ ip a; ip r
до и после подключения.
и вывод
$ pppd call svitonline debug nodetach dump hide-password Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог

Привет!
Попробовал добавлять
usepeerdns
replacedefaultroute

Вот результаты:
После добавления команды usepeerdns интернет заработал, причем на полной скорости, правда работает некоторое время (по разному, бывает 10 минут, бывает час) потом сайты перестают загружаться, при этом pppd продолжает работать. После перезагрузки pppd интернет снова восстанавливается.
Замечена особенность: задержка выполнения скрипта /etc/ppp/ip-up секунд 15 - 20 (раньше такого небыло, наверное связано с DNS).
replacedefaultroute ничего не дает, маршрут по-умолчанию задаю вручную или в скрипте /etc/ppp/ip-up строчкой route add default dev ppp0

Когда инет слетит опять, проверю как пингуются сервера, дабы выяснить - проблема опять с DNS или что-то другое. Ну и логи пинга тоже выложу.

03 янв 2018, 18:25

Я имел ввиду фаерволлах.
Сейчас перенастроил всё с помощью скрипта, что бы было красивее.
IP a | IP r До включения VPN.

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether 54:ee:75:93:85:f9 brd ff:ff:ff:ff:ff:ff
3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 08:d4:0c:b5:83:d0 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.103/24 brd 192.168.0.255 scope global dynamic wlp2s0
valid_lft 6715sec preferred_lft 6715sec
inet6 fe80::e41c:c4c6:5ce2:e9f2/64 scope link
valid_lft forever preferred_lft forever

default via 192.168.0.1 dev wlp2s0 proto static metric 600
169.254.0.0/16 dev wlp2s0 scope link metric 1000
192.168.0.0/24 dev wlp2s0 proto kernel scope link src 192.168.0.103 metric 600

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether 54:ee:75:93:85:f9 brd ff:ff:ff:ff:ff:ff
3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 08:d4:0c:b5:83:d0 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.103/24 brd 192.168.0.255 scope global dynamic wlp2s0
valid_lft 5503sec preferred_lft 5503sec
inet6 fe80::e41c:c4c6:5ce2:e9f2/64 scope link
valid_lft forever preferred_lft forever
15: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
link/none
inet 10.8.0.2/24 brd 10.8.0.255 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::cad9:bdb9:409d:6896/64 scope link flags 800
valid_lft forever preferred_lft forever

0.0.0.0/1 via 10.8.0.1 dev tun0
default via 192.168.0.1 dev wlp2s0 proto static metric 600
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.2
23.15.41.326 via 192.168.0.1 dev wlp2s0
128.0.0.0/1 via 10.8.0.1 dev tun0
169.254.0.0/16 dev wlp2s0 scope link metric 1000
192.168.0.0/24 dev wlp2s0 proto kernel scope link src 192.168.0.103 metric 600

Читайте также: