LINUX.ORG.RU
решено ФорумAdmin

Проблемы с DNS на VPN

 , , , ,


0

0

Прошу помощи знатаков!

Ubuntu 20.04

Что имеем. Есть локальная сеть с VPN сервером L2TP+IPSec, есть сервер на VDS Ubuntu 20.04, сервер VDS подключен клиентом в локальную сеть со всеми маршрутами через xl2tp+strongswan+ipsec, все видят друг друга и общаются между собой в локальной сети, все работало хорошо и при поднятии VPN благополучно прописывался DNS VPN’а в /etc/resolv.conf, но после видимо какого то обновления пакетов настала беда, каким то образом начал свою работу systemd-resolved, файл /etc/resolve.conf стал символической ссылкой на /run/systemd/resolve/stub-resolve.conf и при подключении VPN не работает DNS который в локальной сети, 3 дня борюсь не могу починить, прошу помощи кто сталкивался с таким?


Заново щас откатил и один хер

пинг идет до локалки

ping 10.0.1.2
PING 10.0.1.2 (10.0.1.2) 56(84) bytes of data.
64 bytes from 10.0.1.2: icmp_seq=1 ttl=63 time=2.38 ms
64 bytes from 10.0.1.2: icmp_seq=2 ttl=63 time=1.89 ms
64 bytes from 10.0.1.2: icmp_seq=3 ttl=63 time=2.00 ms
64 bytes from 10.0.1.2: icmp_seq=4 ttl=63 time=1.91 ms
64 bytes from 10.0.1.2: icmp_seq=5 ttl=63 time=2.01 ms
^C
--- 10.0.1.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 1.890/2.038/2.383/0.178 ms

а днс фиг

ping nas.wn.ru
ping: nas.wn.ru: Неизвестное имя или служба
traceroute nas.wn.ru
nas.wn.ru: Неизвестное имя или служба
Cannot handle "host" cmdline arg `nas.wn.ru' on position 1 (argc 1)
Kot837
() автор топика

Подскажите пжл как включить и читать логи все что связанно с VPN я думаю проблема все таки там кроется что вообще пишет VPN по этому поводу

Kot837
() автор топика
Ответ на: комментарий от anonymous

в том то и дело что там не кажет

> google.ru
Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
Name:   google.ru
Address: 64.233.165.94
Name:   google.ru
Address: 2a00:1450:4010:c0d::5e
> nas.wn.ru
Server:         127.0.0.53
Address:        127.0.0.53#53

** server can't find nas.wn.ru: NXDOMAIN
Kot837
() автор топика
Ответ на: комментарий от anonymous
dig google.ru

; <<>> DiG 9.16.48-Ubuntu <<>> google.ru
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47034
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;google.ru.                     IN      A

;; ANSWER SECTION:
google.ru.              93      IN      A       64.233.165.94

;; Query time: 4 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Wed Apr 24 11:09:59 +07 2024
;; MSG SIZE  rcvd: 54
dig nas.wn.ru

; <<>> DiG 9.16.48-Ubuntu <<>> nas.wn.ru
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 17628
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;nas.wn.ru.                     IN      A

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Wed Apr 24 11:11:55 +07 2024
;; MSG SIZE  rcvd: 38
Kot837
() автор топика

просто еще удивляет что этот systemd-resolve как я читал вроде с 18 Ubuntu пошел где-то и сколько инструкций перелазил все чуть ли не в один голос пишут лезть в /etc/systemd/resolved.conf и прописывать там ДНС, не ужели не нашел ни кто как решить эту проблему, я не опытный и новичек в линуксах но и то понимаю что это настолько колхоз и работает это через одно место, да согласен если у тебя один интерфейс с интернетом то да пофиг прописал для интернета гугл ДНС и забыл, но тут та проблема с ВПН хоть у меня вроде ВПН не падает соединение между серваком и сетью но тем неменее в случае разрыва это надо мне вручную лезть и ребутить сервак чтоб ДНС сервера выстроились по нормальному ну это колхоз

Kot837
() автор топика

рою тут интернет наткнулся как люди с помощью скрипта прописывают route

#!/bin/sh

        if [ "$IFACE" = "ppp0" ]; then
        ip route del 80.80.33.101 dev ppp0 proto kernel scope link src 10.100.20.1
        fi

а если каким то образом сделать тоже самое только чтоб при поднятии ВПН он прописывал себе ДВС?

Kot837
() автор топика
Ответ на: комментарий от Kot837

а если каким то образом сделать тоже самое только чтоб при поднятии ВПН он прописывал себе ДВС?

Если это то о чем я подумал, в смысле скрипты ip-up/ip-down то да, можно. Переменные ${DNS1} ${DNS2} и т.д.
ЗЫ Надеюсь что имелось ввиду ДНС а не «двигатель внутреннего сгорания».

anc ★★★★★
()

Алилуя нашел хоть какое то решение

вот так должно я считаю это, но не в Global закидывать

Link 3 (ppp0)
      Current Scopes: DNS
DefaultRoute setting: yes
       LLMNR setting: yes
MulticastDNS setting: no
  DNSOverTLS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
  Current DNS Server: 10.0.0.1
         DNS Servers: 10.0.0.1

Link 2 (eth0)
      Current Scopes: DNS
DefaultRoute setting: yes
       LLMNR setting: yes
MulticastDNS setting: no
  DNSOverTLS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
  Current DNS Server: 8.8.4.4
         DNS Servers: 8.8.4.4
                      8.8.8.8

таким образом он добавляет в /run/systemd/resolve/resolv.conf к основным как и должно быть

vpn.wn.ru
Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
Name:   vpn.wn.ru
Address: 10.0.0.1
nas.wn.ru
Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
Name:   nas.wn.ru
Address: 10.0.1.2
Kot837
() автор топика

Вообщем решение нашел такой командой

resolvectl dns ppp0 10.0.0.1

таким образом ДНС привязывается непосредственно к ppp0 все везде прописывается и работает как положено но это просто команда и при перезагрузке естественно все теряется, так вот у меня есть решение и пару вопросов

логичным образом я эту команду пропишу в

/etc/ppp/ip-up

чтоб при поднятии подключения, ДНС прописывался, в этих файлах у меня прописаны route до локалки при подключении и отключении и все работает

  1. не знаю как правильно пишутся скрипты bash если сделаю так на /etc/ppp/ip-up
#!/bin/sh
resolvectl dns ppp0 10.0.0.1
exit 0

route add -net 10.0.1.0/24 gw 10.0.0.1
route add -net 10.0.2.0/24 gw 10.0.0.1
route add -net 10.0.3.0/24 gw 10.0.0.1
route add -net 10.0.4.0/24 gw 10.0.0.1
exit 0

и на /etc/ppp/ip-down

#!/bin/sh
route delete -net 10.0.1.0/24 gw 10.0.0.1
route delete -net 10.0.2.0/24 gw 10.0.0.1
route delete -net 10.0.3.0/24 gw 10.0.0.1
route delete -net 10.0.4.0/24 gw 10.0.0.1
exit 0

верно ли в ip-up так прописывать или надо что то добавить?

  1. вопрос по поводу интерфейса в команде, ppp0 как его заменить на команду типа там <$dev> или как то еще, объясню на примере, допустим 2 ВПН соединения, первое подключилось раньше получило ppp0 к примеру, а это соединение с сеткой подключилось позже и получило к примеру ppp1, следовательно ДНС прикрепиться не к тому интерфейсу, следовательно чтоб избежать этого сразу на будущее как указать интерфейс что присваивалось автоматом нужному, если соединение поднялось ppp2 то и данный ДНС прикрепиться к ppp2 интерфейсу?
Kot837
() автор топика
Ответ на: комментарий от anonymous

4 дня и ночи убил на эту хрень)))) все облазил но выход нашел рабочий пока такой, при падении будет удаляться сам (проверил) через скрипт при поднятии будет опять прописываться

Kot837
() автор топика
Ответ на: комментарий от Kot837

вот так

#!/bin/sh
resolvectl dns ppp0 10.0.0.1
exit 0

route add -net 10.0.1.0/24 gw 10.0.0.1
route add -net 10.0.2.0/24 gw 10.0.0.1
route add -net 10.0.3.0/24 gw 10.0.0.1
route add -net 10.0.4.0/24 gw 10.0.0.1
exit 0

не сработало, то есть после перезагрузки 1 задание с днс готово, а вот route не прописались

#!/bin/sh
resolvectl dns ppp0 10.0.0.1
route add -net 10.0.1.0/24 gw 10.0.0.1
route add -net 10.0.2.0/24 gw 10.0.0.1
route add -net 10.0.3.0/24 gw 10.0.0.1
route add -net 10.0.4.0/24 gw 10.0.0.1
exit 0

или вот так правильно?

Kot837
() автор топика
Ответ на: комментарий от Kot837

разобрался)))

resolvectl dns $1 10.0.0.1

вот она благополучная

#    Arg  Name                          Example
#    $1   Interface name                ppp0
#    $2   The tty                       ttyS1
#    $3   The link speed                38400
#    $4   Local IP number               12.34.56.78
#    $5   Peer  IP number               12.34.56.99
#    $6   Optional ``ipparam'' value    foo

теперь работает))

Kot837
() автор топика

Доволен как слон))) работает)))

traceroute nas4.wn.ru
traceroute to nas4.wn.ru (10.0.4.2), 30 hops max, 60 byte packets
 1  vpn.wn.ru (10.0.0.1)  2.848 ms  3.035 ms  3.130 ms
 2  client-vpn4.wn.ru (10.0.0.98)  5.847 ms  6.690 ms  6.836 ms
 3  nas4.wn.ru (10.0.4.2)  7.210 ms  8.445 ms  8.555 ms
Kot837
() автор топика

так нашел еще один мелкий костылек может кто знает? после перезагрузки VPN сервера, на серваке Ubuntu который я несколько дней мучал падает IPSec соединение и VPN, но как VPN сервер появляется в сети, Ubuntu VPN подключаеться а IPSec нет, как сделать чтоб IPSec переконекчивался при обрывах?

/etc/ipsec.conf
Kot837
() автор топика
Ответ на: комментарий от Kot837

Решено.

В конфиг

/etc/ipsec.conf

добавил строки

dpdaction=restart
closeaction=restart

что делает реконект IPSec а так же на VPN сервере в MikroTik включил дополнительно требование подключения только с шифрованием!

Kot837
() автор топика
Ответ на: комментарий от Kot837

Если уж ты это сам написал, то я хотел бы попросить оформить финальный текст в статью в разделе https://www.linux.org.ru/articles/ И тут сослаться на неё, будет невероятно круто!

Dimez ★★★★★
()
Ответ на: комментарий от Dimez

Добро чуть позже оформлю все :) кому то будет полезно потому что я столкнулся с этой проблемой и пол интернета перерыл и не чего путнего не нашел пока сам все недоковырял кому то будет полезным

Kot837
() автор топика