WireGuard VPNを設定しましたが、次のコマンドを使用して正常に接続した後、ブラウザはインターネットからWebページを読み込めませんでした。
wg-quick up `pwd`/myifwg0.conf
確認しました仕える人WireGuardインターフェイス - よさそうです。
$ sudo wg show wg0
interface: wg0
public key: <SERVER_PUB_KEY>
private key: (hidden)
listening port: 51820
peer: <CLIENT_PUB_KEY>
endpoint: <SERVER_PUBLIC_IP>:45884
allowed ips: 10.0.1.2/32
latest handshake: 4 minutes, 44 seconds ago
transfer: 2.32 KiB received, 3.63 KiB sent
確認しました顧客接続されている場合、WireGuardインターフェイス - よさそうです。
$ sudo wg show myifwg0
interface: myifwg0
public key: <CLIENT_PUB_KEY>
private key: (hidden)
listening port: 59386
fwmark: 0xca6c
peer: <SERVER_PUB_KEY>
endpoint: <SERVER_PUBLIC_IP>:51820
allowed ips: 0.0.0.0/0, ::/0
latest handshake: 15 seconds ago
transfer: 124 B received, 8.63 KiB sent
persistent keepalive: every 25 seconds
Server WireGuard VPNに接続すると、次のコマンドが永久に中断されることがわかりました。
curl google.com
ping google.com
VPNに接続している間にnslookup google.com
確認されたIPをnslookup
Webブラウザにコピー/貼り付けることができ、google.com
ホームページにアクセスできたため、これはDNSの問題に関連している可能性があります。
VPNクライアント設定ファイルで、またはDNS = 1.1.1.1
(最後のエントリのソース)にDNS IPを強制しようとしましたが、効果は同じです。DNS = 8.8.8.8
DNS = 127.0.0.53
/etc/resolv.conf
- 私のWebブラウザはページにアクセスできません。
curl
類似またはping
未解決のドメインコマンド
VPN クライアントのバージョンは次のとおりです。
apt-cache show wireguard
:バージョン:1.0.20200513-1~20.04.2lsb_release -a
: Ubuntu 20.04.2 LTS フォーカス
VPNクライアントがインターネットを閲覧できるように、VPNクライアント、VPNサーバー、またはその両方の構成をどのように変更しますか?
編集する
私のもの顧客構成はmyifwg0.config
次のとおりです。
[Interface]
Address = 10.0.1.2/32
PrivateKey = <CLIENT_PRIV_KEY>
DNS = 1.1.1.1
[Peer]
PublicKey = <SERVER_PUB_KEY>
Endpoint = <SERVER_PUBLIC_IP>:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
優秀仕える人/etc/sysctl.conf
で編集して、IP転送が有効になっていることを確認しましたnet.ipv4.ip_forward=1
。次に申請してくださいsudo sysctl -p
。
優秀仕える人また、一部のファイアウォールルールが次のように設定されていることを確認しました。 WireGuardの関連ポート/インターフェースは、WireGuardトンネルに関連する51820(WG受信)、53(DNS解像度)、eth0、およびwg0です。
$ sudo ufw status
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
51820/udp ALLOW Anywhere
53 ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
51820/udp (v6) ALLOW Anywhere (v6)
53 (v6) ALLOW Anywhere (v6)
Anywhere on eth0 ALLOW FWD Anywhere on wg0
Anywhere on wg0 ALLOW FWD Anywhere on eth0
Anywhere (v6) on eth0 ALLOW FWD Anywhere (v6) on wg0
Anywhere (v6) on wg0 ALLOW FWD Anywhere (v6) on eth0
これ仕える人構成ファイルは/etc/wireguard/wg0.conf
次のとおりです。
[Interface]
PrivateKey = <SERVER_PRIV_KEY>
Address = 10.0.1.1/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820
[Peer]
PublicKey = <CLIENT_PUB_KEY>
AllowedIPs = 10.0.1.2/32
iptables
と衝突があるかどうか疑問に思いますufw
。そうしないと、このWireGuard VPNトンネルが機能しない理由がわかりません。
答え1
VPN(DNSを含む)を介してすべてのトラフィックをルーティングするため、アクセスできるDNSサーバーを指定する必要があります。
たとえば、クライアントにDNSエントリを追加します。
[Interface]
Address = 10.0.1.2/32
PrivateKey = xxx
DNS = 1.1.1.1
[Peer]
PublicKey = xxx
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = xxx
それでも問題が解決しない場合は、設定を公開してください(キーを除く)。
答え2
問題は他の場所にあることがわかりました。 Ansibleを使って設定しています。仕える人VM、構成プロセスが完了したら、WireGuard 用の SystemD サービスを開始する必要があります。
問題はではなくstate
に設定されています。これは、より多くの設定(ファイアウォールルールなど)を追加するためにAnsibleスクリプトを複数回実行するときに、このWireGuardサービスが新しい設定を考慮しないことを意味します。started
restarted
これは、WireGuard で SystemD サービスを常に再起動する Ansible スクリプトの正しい部分です。仕える人:
# `systemctl enable wg-quick@wg0`
- name: REStart WireGuard and enable it on boot
systemd:
name: wg-quick@wg0
enabled: yes
state: restarted
この時点で私はこれが必要だと思います。
ufw route allow in on wg0 out on eth0
ufw route allow in on eth0 out on wg0
iptables
WireGuardの設定ファイルに設定がすでに適用されていると仮定すると、仕える人。しかし、私はufw
何が起こるのかを見るためにルールを削除しようとしませんでした。