Ubuntu 18.04 LTS OpenVPN и dnsmasq не коснулись туннеля VPN

Я недавно столкнулся с этой проблемой. Похоже, что это довольно распространено, но каждое каждое решение, которое я нашел, не работает - поэтому не судите меня о начинании новых дискуссий без исследования. Но в основной теме:

Я ветвь VPS на nazwa.pl и я пытаюсь настроить его, чтобы быть моим OpenVPN и сервер DNS (для моей частной цели проектов). У меня есть выполнение OpenVPN который работает там довольно прекрасный (кроме DNS для клиентов). Также dnsmasq хорошо работает локально. Но это не относится к туннельному интерфейсу VPN (tun0) автоматически. Когда я добавляю сервер DNS к /etc/resolv.conf вручную это работает как он, должен, но вручную редактирующий любой вид файла конфигурации не делает, кажется, хороший подход ;). Мой вопрос: что я должен изменить на свою конфигурацию, таким образом, dnsmasq + OpenVPN начнет применяться, это - изменения в интерфейсе tun0?

Сервер:

  • Ubuntu 18.04
  • dnsmasq 2.79 с: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify
  • OpenVPN 2.4.4 с enable_async_push=no enable_comp_stub=no enable_crypto=yes enable_crypto_ofb_cfb=yes enable_debug=yes enable_def_auth=yes enable_dependency_tracking=no enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown enable_fast_install=needless enable_fragment=yes enable_iproute2=yes enable_libtool_lock=yes enable_lz4=yes enable_lzo=yes enable_maintainer_mode=no enable_management=yes enable_multihome=yes enable_pam_dlopen=no enable_pedantic=no enable_pf=yes enable_pkcs11=yes enable_plugin_auth_pam=yes enable_plugin_down_root=yes enable_plugins=yes enable_port_share=yes enable_selinux=no enable_server=yes enable_shared=yes enable_shared_with_static_runtimes=no enable_silent_rules=no enable_small=no enable_static=yes enable_strict=no enable_strict_options=no enable_systemd=yes enable_werror=no enable_win32_dll=yes enable_x509_alt_username=yes with_aix_soname=aix with_crypto_library=openssl with_gnu_ld=yes with_mem_check=no with_sysroot=no

И вот моя конфигурация и файлы журнала:

/etc/openvpn/server/server.conf:

local 77.55.XXX.XXX
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-crypt tc.key
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 10.8.0.1"
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 1.0.0.1"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
crl-verify crl.pem
explicit-exit-notify

client.ovpn

client
dev tun
proto udp
remote 77.55.XXX.XXX 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-CBC
ignore-unknown-option block-outside-dns
block-outside-dns
verb 3
script-security 2
# I have both services on the server 
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf
down-pre
<ca>
... certs here

dnsmasq.conf:

address=/public-domain.com/77.XXX.XXX.XXX
listen-address=127.0.0.1
listen-address=10.8.0.1
bind-interfaces
no-hosts
addn-hosts=/etc/dnsmasq.hosts
expand-hosts
domain=netps

OpenVPN & dnsmasq server iptables:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  anywhere             anywhere             udp dpt:openvpn
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DROP       icmp --  anywhere             anywhere             icmp echo-request
ACCEPT     icmp --  anywhere             anywhere            
DROP       tcp  --  anywhere             anywhere             multiport dports http,https ctstate NEW,ESTABLISHED
ACCEPT     tcp  --  10.8.0.0/24          anywhere             multiport dports http,https ctstate NEW,ESTABLISHED
ACCEPT     udp  --  anywhere             anywhere             udp spt:domain
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:domain

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     all  --  10.8.0.0/24          anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http state NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain state NEW
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain state NEW

VPN server systemd-resolve --status:

Global
     DNS Servers: 127.0.0.1
                  10.8.0.1
                  1.1.1.1
                  8.8.8.8
      DNSSEC NTA: 10.in-addr.arpa
                  16.172.in-addr.arpa
                  168.192.in-addr.arpa
                  17.172.in-addr.arpa
                  18.172.in-addr.arpa
                  19.172.in-addr.arpa
                  20.172.in-addr.arpa
                  21.172.in-addr.arpa
                  22.172.in-addr.arpa
                  23.172.in-addr.arpa
                  24.172.in-addr.arpa
                  25.172.in-addr.arpa
                  26.172.in-addr.arpa
                  27.172.in-addr.arpa
                  28.172.in-addr.arpa
                  29.172.in-addr.arpa
                  30.172.in-addr.arpa
                  31.172.in-addr.arpa
                  corp
                  d.f.ip6.arpa
                  home
                  internal
                  intranet
                  lan
                  local
                  private
                  test
Link 3 (tun0)
      Current Scopes: none
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

VPN client systemd-resolve --status:

Global
       LLMNR setting: no
MulticastDNS setting: no
  DNSOverTLS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
      DNSSEC NTA: 10.in-addr.arpa
                  16.172.in-addr.arpa
                  168.192.in-addr.arpa
                  17.172.in-addr.arpa
                  18.172.in-addr.arpa
                  19.172.in-addr.arpa
                  20.172.in-addr.arpa
                  21.172.in-addr.arpa
                  22.172.in-addr.arpa
                  23.172.in-addr.arpa
                  24.172.in-addr.arpa
                  25.172.in-addr.arpa
                  26.172.in-addr.arpa
                  27.172.in-addr.arpa
                  28.172.in-addr.arpa
                  29.172.in-addr.arpa
                  30.172.in-addr.arpa
                  31.172.in-addr.arpa
                  corp
                  d.f.ip6.arpa
                  home
                  internal
                  intranet
                  lan
                  local
                  private
                  test

Link 58 (tun0)
      Current Scopes: DNS
DefaultRoute setting: yes
       LLMNR setting: yes
MulticastDNS setting: no
  DNSOverTLS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
  Current DNS Server: 1.1.1.1
     DNS Servers: 1.1.1.1
                  1.0.0.1
      DNS Domain: ~.

Syslog:

Jan  2 14:17:40 serverXXXXXX openvpn[3053]: MULTI_sva: pool returned IPv4=10.8.0.2, IPv6=(Not enabled)
Jan  2 14:17:40 serverXXXXXX openvpn[3053]: MULTI: Learn: 10.8.0.2 -> npsclient/91.90.XXX.XXX:40266
Jan  2 14:17:40 serverXXXXXX openvpn[3053]: MULTI: primary virtual IP for npsclient/91.90.XXX.XXX:40266: 10.8.0.2
Jan  2 14:17:41 serverXXXXXX openvpn[3053]: npsclient/91.90.XXX.XXX:40266 PUSH: Received control message: 'PUSH_REQUEST'
Jan  2 14:17:41 serverXXXXXX openvpn[3053]: npsclient/91.90.XXX.XXX:40266 SENT CONTROL [npsclient]: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 1.1.1.1,dhcp-option DNS 1.0.0.1,route-gateway 10.8.0.1,topology subnet,ping 10,ping-restart 120,ifconfig 10.8.0.2 255.255.255.0,peer-id 0,cipher AES-256-GCM' (status=1)
Jan  2 14:17:41 serverXXXXXX openvpn[3053]: npsclient/91.90.XXX.XXX:40266 Data Channel: using negotiated cipher 'AES-256-GCM'
Jan  2 14:17:41 serverXXXXXX openvpn[3053]: npsclient/91.90.XXX.XXX:40266 Outgoing Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
Jan  2 14:17:41 serverXXXXXX openvpn[3053]: npsclient/91.90.XXX.XXX:40266 Incoming Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key

Поскольку Вы видите в syslog DNS не продвинут клиенту, но это не удивление как systemd-resolve --status на VPN сервер не имеет допустимых серверов DNS для tun0 интерфейс. Я могу только предположить, что проблема идет dnsmasq сторона, но у меня нет подсказки, где и как зафиксировать это.

ОТРЕДАКТИРУЙТЕ содержание /etc/dnsmasq.hosts:

10.8.0.1 gitlab.netps
1
задан 2 January 2020 в 18:20

1 ответ

После нескольких дней большего количества попытки и выполнения большого количества reasearch я нашел, что ключевой вопрос здесь связан с systemd-resolve механизм. Короче говоря: это хранит каждый каждый сервер DNS ответы/состояние в кэше и если что-нибудь было неправильно во время процесса конфигурации, это просто проигнорирует целый сервер:/. Случай описан подробно здесь в этом потоке https://github.com/systemd/systemd/issues/5755

Единственное решение, которое я нашел на данный момент, состоит в том, чтобы вручную отредактировать /etc/resolv.conf файл...

0
ответ дан 11 January 2020 в 09:45

Другие вопросы по тегам:

Похожие вопросы: