Это та же проблема, что и здесь:Заставляем openconnect vpn работать через gui, но мои дополнения к нему были удалены, и мне было предложено создать новый вопрос.
На самом деле, здесь есть несколько человек, которые задают похожие вопросы, но на все из них нет ответов.
Версии программного обеспечения:Ubuntu 14.04, openconnect 5.02
Главная проблема:Я пытаюсь добавить VPN-подключение в Network-Manager с помощью OpenConnect. Когда я ввожу имя пользователя и пароль VPN, подключение успешно устанавливается, но я не могу разрешить DNS.
Если я запускаю openconnect в терминале через sudo, DNS работает.
sudo openconnect -u <username> https://<vpn concentrator name>
Подробнее:
1a. При подключении через openconnect и network-manager, даже если я явно добавил DNS и домен поиска на вкладке ipv4, только домен поиска попадает в /etc/resolv.conf. Даже если я не указываю DNS и домены поиска, я вижу в журналах, что он получает эту информацию от концентратора VPN. Опять же, домен поиска обновляется правильно. [журнал ниже]
1b. При подключении через sudo в терминале resolv.conf заполняется правильно DNS и поисковыми доменами, хотя я не добавлял эту информацию в командную строку и не указывал путь к vpnc-скрипту. Должно быть, он получает ее от VPN-концентратора. [журнал также ниже]
2а. При подключении через openconnect и network-manager создается новый интерфейс «vpn0».
2б. При подключении через sudo и командную строку создается новый интерфейс «tun0».
Лог при подключении через сетевой менеджер:
NetworkManager[784]: <info> Starting VPN service 'openconnect'...
NetworkManager[784]: <info> VPN service 'openconnect' started (org.freedesktop.NetworkManager.openconnect), PID 4513
NetworkManager[784]: <info> VPN service 'openconnect' appeared; activating connections
NetworkManager[784]: <info> VPN plugin state changed: init (1)
Здесь он запрашивает мой пароль
NetworkManager[784]: <info> VPN plugin state changed: starting (3)
NetworkManager[784]: SCPlugin-Ifupdown: devices added (path: /sys/devices/virtual/net/vpn0, iface: vpn0)
NetworkManager[784]: SCPlugin-Ifupdown: device added (path: /sys/devices/virtual/net/vpn0, iface: vpn0): no ifupdown configuration found.
NetworkManager[784]: <warn> /sys/devices/virtual/net/vpn0: couldn't determine device driver; ignoring...
NetworkManager[784]: <info> VPN connection '<connection name>' (Connect) reply received.
openconnect[4544]: Attempting to connect to server <ip address>:443
openconnect[4544]: SSL negotiation with <correctly identified vpn server>
openconnect[4544]: Connected to HTTPS on <correctly identified vpn server>
openconnect[4544]: Got CONNECT response: HTTP/1.1 200 OK
openconnect[4544]: CSTP connected. DPD 30, Keepalive 20
NetworkManager[784]: <info> VPN connection '<connection name>' (IP Config Get) reply received.
NetworkManager[784]: <info> VPN connection '<connection name>' (IP4 Config Get) reply received.
NetworkManager[784]: <info> VPN connection '<connection name>' (IP6 Config Get) reply received.
NetworkManager[784]: <info> VPN Gateway: <ip address>
NetworkManager[784]: <info> Tunnel Device: vpn0
NetworkManager[784]: <info> IPv4 configuration:
NetworkManager[784]: <info> Internal Address: 10.xxx.xxx.xxx
NetworkManager[784]: <info> Internal Prefix: 19
NetworkManager[784]: <info> Internal Point-to-Point Address: 10.xxx.xxx.xxx
NetworkManager[784]: <info> Maximum Segment Size (MSS): 0
NetworkManager[784]: <info> Forbid Default Route: no
NetworkManager[784]: <info> Internal DNS: <ip address>
NetworkManager[784]: <info> Internal DNS: <ip address>
NetworkManager[784]: <info> DNS Domain: '(none)'
NetworkManager[784]: <info> IPv6 configuration:
NetworkManager[784]: <info> Internal Address: <ipv6 ip>
NetworkManager[784]: <info> Internal Prefix: 64
NetworkManager[784]: <info> Internal Point-to-Point Address: <ipv6 ip>
NetworkManager[784]: <info> Maximum Segment Size (MSS): 0
NetworkManager[784]: <info> Forbid Default Route: no
NetworkManager[784]: <info> DNS Domain: '(none)'
openconnect[4544]: Connected vpn0 as <ip address> + <ipv6 ip>, using SSL
openconnect[4544]: Established DTLS connection (using OpenSSL)
NetworkManager[784]: <info> VPN connection '<connection name>' (IP Config Get) complete.
NetworkManager[784]: <info> Policy set '<connection name>' (vpn0) as default for IPv4 routing and DNS.
NetworkManager[784]: <info> Policy set '<connection name>' (vpn0) as default for IPv6 routing and DNS.
NetworkManager[784]: <info> Writing DNS information to /sbin/resolvconf
dnsmasq[1027]: setting upstream servers from DBus
dnsmasq[1027]: using nameserver 127.0.0.1#53 for domain 10.in-addr.arpa
dnsmasq[1027]: using nameserver 127.0.0.1#53 for domain <home search domain>
dnsmasq[1027]: using nameserver 127.0.0.1#53 for domain <vpn search domain>
dnsmasq[1027]: using nameserver <ip address>#53 for domain 10.in-addr.arpa
dnsmasq[1027]: using nameserver <ip address>#53 for domain <home search domain>
dnsmasq[1027]: using nameserver <ip address>#53 for domain <vpn search domain>
dnsmasq[1027]: using nameserver <ip address>#53 for domain 10.in-addr.arpa
dnsmasq[1027]: using nameserver <ip address>#53 for domain <home search domain>
dnsmasq[1027]: using nameserver <ip address>#53 for domain <vpn search domain>
dbus[471]: [system] Activating service name='org.freedesktop.nm_dispatcher' (using servicehelper)
NetworkManager[784]: <info> VPN plugin state changed: started (4)
NetworkManager[784]: keyfile: updating /etc/NetworkManager/system-connections/<connection name>-6a503043-13b0-4ce7-9749-29cd3054cae3
dbus[471]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
Несмотря на весь шум в журнале об обновлении resolv.conf, он удаляет серверы имен, но не заменяет их IP-адресами в журнале. Он обновляет домен поиска правильно, так что, скорее всего,нетпроблема с разрешениями.
Лог при подключении с помощью sudo openconnect в терминале:
NetworkManager[784]: SCPlugin-Ifupdown: devices added (path: /sys/devices/virtual/net/tun0, iface: tun0)
NetworkManager[784]: SCPlugin-Ifupdown: device added (path: /sys/devices/virtual/net/tun0, iface: tun0): no ifupdown configuration found.
NetworkManager[784]: <warn> /sys/devices/virtual/net/tun0: couldn't determine device driver; ignoring...
dbus[471]: [system] Activating service name='org.freedesktop.hostname1' (using servicehelper)
kernel: [ 3258.725774] systemd-hostnamed[4927]: Warning: nss-myhostname is not installed. Changing the local hostname might make it unresolveable. Please install nss-myhostname!
dbus[471]: [system] Successfully activated service 'org.freedesktop.hostname1'
Ничего не сказано об обновлении resolv.conf, но при этом он правильно обновляет серверы имен и домен поиска.
Обновлять Если я проигнорирую все предупреждения в resolv.conf и добавлю в него серверы имен vpn-концентраторов, я сразу смогу просматривать. Конечно, как только я отключаюсь, эти изменения перезаписываются.
в этом была ошибка, еще в 2012 году, но он истек. Проблема, похоже, в скрипте vpnc.
Я попытался вручную обновить свои vpnc-скрипты до последних версий, но безрезультатно.
Некоторыйдальнейшие исследованияоказывается, что с 12.04 resolv.conf больше не является тем местом, куда обращаются серверы имен для разрешения DNS при использовании network-manager. Вот почему это работает, когда я использую командную строку, но не при использовании network-manager. Вместо этого добавляется сервер имен 127.0.1.1 [dnsmasq] и этому серверу имен сообщаются IP-адреса фактических серверов имен.
Большим преимуществом является то, что если вы подключаетесь к VPN, то вместо того, чтобы весь ваш DNS-трафик направлялся через VPN, как это было раньше, вы будете отправлять только DNS-запросы, относящиеся к подсети и доменам, объявленным этим VPN.
Обновлять Отключение dnsmasq, как описано по ссылке выше, решает проблему, поскольку файл /etc/resolv.conf заполняется.
Но это не настоящее решение, а запасной вариант.
решение1
Проверьте, нет ли несоответствия между хостом, который вы пытаетесь разрешить через VPN, и «доменом DNS», который отправляет сервер Cisco VPN.
Чтобы проверить это, откройте терминал и выполните:
tail -f /var/log/syslog
Затем запустите openconnect через сетевой менеджер. Вы увидите целый набор выходных данных, включая такие строки:
5 дек 12:54:31 canoe NetworkManager[1266]: Внутренний DNS: 10.0.20.21
5 дек 12:54:31 canoe NetworkManager[1266]: Внутренний DNS: 10.10.3.32
5 дек 12:54:31 canoe NetworkManager[1266]: DNS-домен: 'internal.example.com'
И дальше вы увидите
5 дек 12:54:31 canoe dnsmasq[1871]: использование сервера имен 10.0.20.21#53 для домена internal.example.com
Это означает, что VPN-сервер сообщает клиенту, что для разрешения хостов в пределах internal.example.com
, например , следует использовать DNS-серверы server.internal.example.com
.
В моем случае мне нужно было решить эту проблему server.example.com
(и я не получил никакого результата).
Для меня решением было зайти в настройки VPN и добавить example.com
в качестве дополнительного домена поиска:
Не забудьте отключить VPN и подключиться снова, чтобы настройки вступили в силу.
решение2
Итак, я решил эту проблему для себя достаточно удовлетворительно. Я на Mint 18 / Ubuntu 16.04
Моя проблема была в том, что как только я подключился к Openconnect VPN через NetworkManager, я больше не мог разрешать DNS для доменов за пределами моих рабочих доменов. То есть я потерял интернет!
Мое решение было следующим:
- В NetworkManager я отредактировал VPN-подключение в разделе «Сетевые подключения».
- На вкладке IPv4 изменен метод на «Только автоматические (VPN) адреса»
- Добавил свой рабочий DNS-сервер (например, 10.10.10.100) и «Поисковый домен» «mywork.tld»
- Нажмите «Маршруты».
- Добавьте маршрут, который охватывает мою рабочую сеть, например 10.10.0.0 / 255.255.0.0 и шлюз 10.10.10.253 <-- VPN-шлюз, который я получил из «traceroute».
- Затем я отметил обе опции: i. «Игнорировать автоматически полученные маршруты» ii. «Использовать это подключение только для ресурсов в его сети»
Работает на моем компьютере.
Насколько я понимаю произошедшее, следующее:
- Мой /etc/resolv.conf настроен с помощью dnsmasq и указывает на 127.0.1.1
- dnsmasq использует DNS-серверы моего интернет-провайдера для общего разрешения DNS-имен в Интернете. Например, DNS-сервер интернет-провайдера, скажем, 8.8.8.8.
- Я подключаюсь к VPN, DNS-сервер 10.10.10.100 добавляется в качестве дополнительного сервера в dnsmasq для использования при разрешении DNS «mywork.tld».
- Как только я подключаюсь к VPN, мой рабочий брандмауэр больше не позволяет мне использовать порт 53 для 8.8.8.8, поэтому мое общее разрешение интернета исчезает. DNS должен истечь по времени и перейти на вторичный DNS-сервер, но по какой-то причине этого не происходит?
- У меня остался только доступ к разрешению DNS для «server01.mywork.tld», поскольку этот запрос идет на 10.10.10.100, к которому у меня есть доступ через VPN.
- Если я запрашиваю www.google.com, то он не работает, хотя мой внутренний DNS может пересылать. Я могу только предположить, что мой внутренний DNS никогда не запрашивается.
Похоже, мое решение будет работать до тех пор, пока моя работа не изменит их сеть или IP-адрес DNS-сервера.
Я немного не уверен в этом, но думаю, что это работает для меня, потому что как только это будет сделано, мой беспроводной сетевой адаптер станет моим сетевым подключением по умолчанию. Таким образом, DNS-запросы идут на 8.8.8.8 по Wi-Fi. Любой запрос для "xyz.mywork.tld" сообщает dnsmasq, что он должен идти на 10.10.10.100. Я установил для него маршрут, так что он идет через сетевой адаптер "vpn0", который возвращает правильный IP-адрес 10.10.10.x для "xyz.mywork.tld". Бинго-банго разрешение DNS для внутренних и внешних сетей, и все счастливы.