![Ping は失敗しますが、Nslookup は Wireguard VPN 経由で動作します](https://rvso.com/image/782625/Ping%20%E3%81%AF%E5%A4%B1%E6%95%97%E3%81%97%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81Nslookup%20%E3%81%AF%20Wireguard%20VPN%20%E7%B5%8C%E7%94%B1%E3%81%A7%E5%8B%95%E4%BD%9C%E3%81%97%E3%81%BE%E3%81%99.png)
Wireguard の設定で奇妙な状況に遭遇しました。
私のセットアップ: Wireguard はネットワークへのアクセスをトンネルします。Active Directory ドメイン コントローラは DNS を提供します。クライアントはトンネル経由で DNS サーバーを使用します。Linux クライアントは、ドメイン コントローラを DNS サーバーとして使用し、Wireguard トンネルで DNS クエリを問題なく解決できます。
問題: Windows クライアントは、アクティブな Wireguard トンネルではブラウズできません。ping は失敗しますが、nslookup は機能します。DNS サーバーに ping できます (IP アドレスで)。外部 IP アドレスに ping できます (例: 1.1.1.1)。Wireshark では、DNS クエリが送信されていることが示されていますが、応答はありません。Wireguard サーバーのファイアウォールでは、ブロックされているクエリは表示されません。
何が間違っているのでしょうか?
私の設定は次のとおりです:
Wireguard サーバー
# cat /etc/wireguard/wg0.conf
[Interface]
Address = 10.101.0.1/16
SaveConfig = true
PostUp = ufw route allow in on wg0 out on enp6s0
PostUp = ufw route allow in on enp6s0 out on wg0
PostUp = ufw route allow in on wg0 out on enp1s0
PostUp = ufw route allow in on enp1s0 out on wg0
PostUp = iptables -t nat -I POSTROUTING -o enp6s0 -j MASQUERADE
PostUp = iptables -t nat -I POSTROUTING -o enp1s0 -j MASQUERADE
PreDown = ufw route delete allow in on wg0 out on enp6s0
PreDown = ufw route delete allow in on wg0 out on enp1s0
PreDown = ufw route delete allow in on enp6s0 out on wg0
PreDown = ufw route delete allow in on enp1s0 out on wg0
PreDown = iptables -t nat -D POSTROUTING -o enp6s0 -j MASQUERADE
PreDown = iptables -t nat -D POSTROUTING -o enp1s0 -j MASQUERADE
ListenPort = 51820
PrivateKey = <snipped>
Wireguard サーバー上のルーティング テーブル
# ip route
default via <wan_gateway> dev enp1s0 proto static
10.0.0.0/16 dev enp6s0 proto kernel scope link src 10.0.25.20
10.0.0.0/16 via 10.0.1.254 dev enp6s0 proto static metric 100
10.101.0.0/16 dev wg0 proto kernel scope link src 10.101.0.1
<wan_ip_block>/22 dev enp1s0 proto kernel scope link src <wireguard_public_ip>
WireguardServer のファイアウォール ルール
# ufw status
Status: active
To Action From
-- ------ ----
51820/udp ALLOW Anywhere
22/tcp ALLOW Anywhere
3389 ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
135/tcp ALLOW Anywhere
389/tcp ALLOW Anywhere
636/tcp ALLOW Anywhere
3268/tcp ALLOW Anywhere
3269/tcp ALLOW Anywhere
53/tcp ALLOW Anywhere
88/tcp ALLOW Anywhere
445/tcp ALLOW Anywhere
123/tcp ALLOW Anywhere
464/tcp ALLOW Anywhere
137/tcp ALLOW Anywhere
138/tcp ALLOW Anywhere
139/tcp ALLOW Anywhere
135/udp ALLOW Anywhere
137/udp ALLOW Anywhere
138/udp ALLOW Anywhere
389/udp ALLOW Anywhere
445/udp ALLOW Anywhere
1512/udp ALLOW Anywhere
42/udp ALLOW Anywhere
42/tcp ALLOW Anywhere
1512/tcp ALLOW Anywhere
500/udp ALLOW Anywhere
49152:65535/tcp ALLOW Anywhere
49152:65535/udp ALLOW Anywhere
464 ALLOW Anywhere
5985:5986/tcp ALLOW Anywhere
53/udp ALLOW Anywhere
51820/udp (v6) ALLOW Anywhere (v6)
22/tcp (v6) ALLOW Anywhere (v6)
3389 (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
135/tcp (v6) ALLOW Anywhere (v6)
389/tcp (v6) ALLOW Anywhere (v6)
636/tcp (v6) ALLOW Anywhere (v6)
3268/tcp (v6) ALLOW Anywhere (v6)
3269/tcp (v6) ALLOW Anywhere (v6)
53/tcp (v6) ALLOW Anywhere (v6)
88/tcp (v6) ALLOW Anywhere (v6)
445/tcp (v6) ALLOW Anywhere (v6)
123/tcp (v6) ALLOW Anywhere (v6)
464/tcp (v6) ALLOW Anywhere (v6)
137/tcp (v6) ALLOW Anywhere (v6)
138/tcp (v6) ALLOW Anywhere (v6)
139/tcp (v6) ALLOW Anywhere (v6)
135/udp (v6) ALLOW Anywhere (v6)
137/udp (v6) ALLOW Anywhere (v6)
138/udp (v6) ALLOW Anywhere (v6)
389/udp (v6) ALLOW Anywhere (v6)
445/udp (v6) ALLOW Anywhere (v6)
1512/udp (v6) ALLOW Anywhere (v6)
42/udp (v6) ALLOW Anywhere (v6)
42/tcp (v6) ALLOW Anywhere (v6)
1512/tcp (v6) ALLOW Anywhere (v6)
500/udp (v6) ALLOW Anywhere (v6)
49152:65535/tcp (v6) ALLOW Anywhere (v6)
49152:65535/udp (v6) ALLOW Anywhere (v6)
464 (v6) ALLOW Anywhere (v6)
5985:5986/tcp (v6) ALLOW Anywhere (v6)
53/udp (v6) ALLOW Anywhere (v6)
Anywhere on enp6s0 ALLOW FWD Anywhere on wg0
Anywhere on wg0 ALLOW FWD Anywhere on enp6s0
Anywhere on enp1s0 ALLOW FWD Anywhere on wg0
Anywhere on wg0 ALLOW FWD Anywhere on enp1s0
Anywhere (v6) on enp6s0 ALLOW FWD Anywhere (v6) on wg0
Anywhere (v6) on wg0 ALLOW FWD Anywhere (v6) on enp6s0
Anywhere (v6) on enp1s0 ALLOW FWD Anywhere (v6) on wg0
Anywhere (v6) on wg0 ALLOW FWD Anywhere (v6) on enp1s0
Windows クライアント
[Interface]
PrivateKey = <snipped>
Address = 10.101.0.4/32
[Peer]
PublicKey = <snipped>
AllowedIPs = 10.101.0.0/16, 10.0.0.0/16, <wan_ip_block>/22
Endpoint = <snipped>:51820
答え1
問題は次のとおりでした:
- Wireguard VPN は、クライアント上の他のすべての接続よりも低いメトリックを自動構成するようです。
- クライアントDNSサーバーをWireguard接続ではなく有線/Wi-Fi接続で構成しました
- Windowsは、最も低いメトリックを持つ接続を介してDNSクエリを送信します。
解決策: Wireguard クライアント構成に DNS サーバーを追加します。
DNS = <ip_address_of_dns_server>, <ip_address_of_dns_server>
完全なクライアント構成
[Interface]
PrivateKey = <snipped>
Address = 10.101.0.4/32
DNS = <ip_address_of_dns_server>, <ip_address_of_dns_server>
[Peer]
PublicKey = <snipped>
AllowedIPs = 10.101.0.0/16, 10.0.0.0/16, <wan_ip_block>/22
Endpoint = <snipped>:51820