У моей компании есть 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-сервером моей компании, разрешались таким образом, а все остальные домены разрешались нормально.
РЕДАКТИРОВАТЬ: Оказывается, dnsmasq на самом деле не был установлен, который я думал, что это будет по умолчанию. Тем не менее, если я его установлю, снова включу /etc/NetworkManager/NetworkManager.conf
, добавлю локальный адрес сервера имен /etc/resolvconf/resolv.conf.d/base
, перезапущу все службы и подключусь к VPN, я могу разрешить домены из DNS компании, но не могу разрешить другие домены. Так что в основном такая же ситуация, как когда я полностью отключил dnsmasq.
РЕДАКТИРОВАТЬ: Содержание /etc/dnsmasq.conf
: http://paste.ubuntu.com/7297231/
источник
/etc/dnsmasq.conf
Ответы:
Из вашей конфигурации ваша установка 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
:Это должно настроить вашу систему на запрос вашей установки dnsmasq для DNS, и она будет в свою очередь использовать ваш локальный DNS-сервер и VPN-DNS-сервер для каждого запроса.
Изменить : вы можете найти DNS-серверы, которые вы используете в данный момент для определенного соединения, используя
nmcli
инструмент. Для поиска 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, показанной во второй пастбине, к следующему:
Затем добавьте маршруты по мере необходимости для доступа к корпоративному оборудованию. В приведенной выше таблице маршрутизации я предположил, что сеть / 24 в VPN может быть неправильной. Вы должны будете установить маску соответствующим образом.
источник
nmcli
без VPN-подключения, смогли ли вы правильно разрешить DNS? Если нет, вам следует отключиться от VPN, убедиться, что ваш DNS работает правильно, а затем запуститьnmcli
.Есть некоторые пробелы, которые я не могу заполнить для вас, связанные с тем, как заставить NetworkManager координировать ваши действия. Я постараюсь прояснить, как вещи, которые он координирует, должны работать. Не идеальный ответ, но, надеюсь, полезный. На самом деле, учитывая, что это старый вопрос, это действительно для потомков.
Вы, вероятно, не хотите использовать корпоративный VPN, за исключением подключений к корпоративной сети. В таком случае было бы лучше, если бы ваша настройка VPN направляла только соответствующие диапазоны сети в VPN и сохраняла маршрут по умолчанию, указывающий на ваш локальный маршрутизатор, как и раньше. Было бы хорошо, если бы компании настраивали свои VPN только для маршрутизации трафика или своих сетей, но, к сожалению, это кажется редким. К счастью, вы можете настроить маршруты в вашей локальной настройке.
Это все еще оставляет вас с потенциальной проблемой DNS. Комментарии jtk123 о том, что dnsmasq делает с DNS, не являются специфическими для dnsmasq - так работает DNS. Если клиент DNS или промежуточный распознаватель получают ответ о том, что запись DNS не существует, то это ненормальное поведение, чтобы обратиться к другому DNS-серверу. Это означает, что вам нужен DNS-распознаватель, который будет отвечать так, как вы хотите, независимо от того, относится запрос к сети компании или нет.
Возможно, сеть вашей компании отвечает на запросы DNS, относящиеся к более широкому Интернету, и в этом случае вы просто используете его, и это, вероятно, нормально. В противном случае вам понадобится локальный DNS-сервер, который перенаправляет запросы доменов, связанных с компанией, на их DNS-сервер и перенаправляет другие запросы в другое место в зависимости от ситуации.
dnsmasq можно настроить для пересылки запросов для определенных доменов конкретным вышестоящим DNS-серверам. например, смотрите параметр --server, как описано на справочной странице dnsmasq.conf. Я не совсем понимаю, как заставить NetworkManager хорошо с этим играть (именно это я сейчас и хочу выяснить).
источник