クライアント(Ubuntu 20.04)がVPN WireGuardサーバーに接続すると、インターネットページを解析できません。

クライアント(Ubuntu 20.04)がVPN WireGuardサーバーに接続すると、インターネットページを解析できません。

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をnslookupWebブラウザにコピー/貼り付けることができ、google.comホームページにアクセスできたため、これはDNSの問題に関連している可能性があります。

VPNクライアント設定ファイルで、またはDNS = 1.1.1.1(最後のエントリのソース)にDNS IPを強制しようとしましたが、効果は同じです。DNS = 8.8.8.8DNS = 127.0.0.53/etc/resolv.conf

  1. 私のWebブラウザはページにアクセスできません。
  2. curl類似またはping未解決のドメインコマンド

VPN クライアントのバージョンは次のとおりです。

  • apt-cache show wireguard:バージョン:1.0.20200513-1~20.04.2
  • lsb_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サービスが新しい設定を考慮しないことを意味します。startedrestarted

これは、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

iptablesWireGuardの設定ファイルに設定がすでに適用されていると仮定すると、仕える人。しかし、私はufw何が起こるのかを見るためにルールを削除しようとしませんでした。

関連情報