Wireguard a vlastní DNS

Wireguard a vlastní DNS
« kdy: 18. 04. 2023, 10:09:21 »
Ahoj, používám wireguard a chtěl bych mít na klientovi, když je připojen pomocí wireguardu do mé domácí sítě nastaven svůj DNS server, abych nemusel manuálně zjišťovat, co za IP adresu má které zařízení v lokální síti. Bohužel, jakmile zadám na straně klienta DNS=IP_meho_DNS, tak jsem totálně bez DNS. Jediné co funguje, když použiji třeba DNS=1.1.1.1, ale pak samozřejmě nemám k dispozici jmenné názvy zařízení ze své lokální sítě.

Na straně routeru mám toto:

Kód: [Vybrat]
config interface 'wg0'
option proto 'wireguard'
option private_key 'DFR8****************256='
option listen_port '1234'
list addresses '10.0.10.0/24'
option delegate '0'
option peerdns '0'
list dns '10.10.64.1'

config wireguard_wg0
option route_allowed_ips '1'
list allowed_ips '10.0.10.1/32'
option persistent_keepalive '25'
option public_key 'KXQ***********67W='
option description 'Mac-prace'

A na straně klienta toto:

Kód: [Vybrat]
[Interface]
PrivateKey = TKI************1u/BA8=
Address = 10.0.10.1/32
DNS = 10.10.64.1

[Peer]
PublicKey = TXw****************/BEA=
AllowedIPs = 0.0.0.0/0
Endpoint = 78.XX.XX.XX:1234

Jinak po navázání spojení je zařízení s  IP 10.10.64.1 dostupné. Můžu na něj přes ssh, zobrazí se web stránky, ale DNS co na tom běží mě neobslouží.
« Poslední změna: 18. 04. 2023, 11:41:39 od Petr Krčmář »


Re:Wireguard a vlastní DNS
« Odpověď #1 kdy: 18. 04. 2023, 10:26:39 »
Hned po odeslání příspěvku mi to došlo, ale zase ne tak rychle  a tak původní příspěvek už nemůžu editovat, tak prosím o uzavření tohoto vlákna. DNS musí být 10.0.10.0 a již je vše funkční.

Re:Wireguard a vlastní DNS
« Odpověď #2 kdy: 19. 04. 2023, 13:39:52 »
Wireguard a DNS jsem řešil poslední dva dny, pro upřesnění ještě v kombinaci s Network managerem a wifi. Ntb málem letěl z okna. Nakonec jsem skončil u tohoto skriptu, který stačí přidat do PostUP a PostDOWN. Snad to někomu ušetří pár hezkých chvilek. Vím, je to prasárna, ale jak to udělat líp už mě opravdu nenapadá.

Kód: [Vybrat]
#!/bin/bash

if [ "$1" == "" ]; then
    echo 'missing flag, use -e or -d'
    exit 1
fi

DNS=192.168.5.5
Intefacename=wlo1
IterfaceID=$(nmcli con show | grep $Intefacename | cut -c 44- | awk '{print $1}')



while [ "$1" != "" ]; do
    case $1 in
    -e )
nmcli con modify $IterfaceID ipv4.dns $DNS && nmcli con modify $IterfaceID ipv4.ignore-auto-dns 'true' && systemctl restart network-manager.service
        ;;
    -d)
nmcli con modify $IterfaceID ipv4.dns '' && nmcli con modify $IterfaceID ipv4.ignore-auto-dns 'false' && systemctl restart network-manager.service
        ;;
    *)
        echo 'wrong flag, use -e or -d'
        exit 1
        ;;
    esac
    shift
done

ja.

  • ****
  • 338
    • Zobrazit profil
    • E-mail
Re:Wireguard a vlastní DNS
« Odpověď #3 kdy: 19. 04. 2023, 17:50:01 »
Wireguard a DNS jsem řešil poslední dva dny, pro upřesnění ještě v kombinaci s Network managerem a wifi. Ntb málem letěl z okna. Nakonec jsem skončil u tohoto skriptu, který stačí přidat do PostUP a PostDOWN. Snad to někomu ušetří pár hezkých chvilek. Vím, je to prasárna, ale jak to udělat líp už mě opravdu nenapadá.

A nie je jednoduchšie sa naučiť, ako presne funguje DNS s NetworkManager-om a používaným resolverom (či už dnsmasq alebo systemd-resolved)? K tomu pomôže aj vedieť základy, ako má DNS fungovať ;). Mastiť skripty, to je taký narovnávak na ohýbak.

Štandardne wireguard (pokiaľ to nie je obmedzené wg konfiguráciou peera - keď sú uvedené zóny v parametre DNS=) nastaví DNS na svojom linku, keď je up, ako resolver pre zóny ~. (t.j. pre všetky). Ak to tak nerobil, tak zjavne bolo šahané ešte aj niekam inde.