WireGuard:ピアの1つは他のピアにpingを送信できませんが、ハンドシェイクは機能し、他のピアは互いにpingできます。

WireGuard:ピアの1つは他のピアにpingを送信できませんが、ハンドシェイクは機能し、他のピアは互いにpingできます。

最近、wg-easyを使用してサーバーにWireGuardを設定し(したがって手動で入力せずに構成ファイルが生成され)、Linuxシステムを含む複数のピアに正常に接続しました。最後に設定するのは、EndeavourOSがインストールされている私のラップトップです。なぜこのデバイスが他のピアをpingできないのか(またはそのピアでホストされているhttpサービスにアクセスできないのか)、わかりません。 PCに接続しようとしているとしましょう。最も重要な4つの部分(私の考えでは):

  1. Pingは実際にPCに到達し、PCが応答します(tcpdumpを使用して確認します)、ノートブックは応答を受け取りません。私は専門家ではありませんが、これはwg設定(ip route get PC-IP正しいインタフェースを返す)に問題がないことを意味します。
  2. Firewalldを無効にしましたが、まだ機能しません(これを実行する前にログを見ましたが、何もブロックしないようです)。 iptablesにはルールはありません。
  3. サーバー(wg-easyが設定されているサーバー)とのハンドシェイクが機能します。
  4. WireGuardではなくIP経由でPCにpingを送信できます。

また、wg-quickを使用してインターフェイスを再起動し、再起動し、他のネットワークに切り替えるなど、他の常識的なソリューションも試しましたが、それは役に立ちませんでした。ここで何が間違っているのかわからないので、助けてくれてありがとう。

編集:関連ピアの構成は次のとおりです。

wg-easy サーバー構成:

# Server
[Interface]
PrivateKey = (a key)
Address = 10.8.0.1/24
ListenPort = 51820
PreUp = 
PostUp =  iptables -t nat -A POSTROUTING -s 10.155.129.0/24 -o eth0 -j MASQUERADE; iptables -A INPUT -p udp -m udp --dport 51820 -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; 
PreDown = 
PostDown = 


# Client: PC
[Peer]
PublicKey = (a key)
PresharedKey = (a key)
AllowedIPs = 10.155.129.2/32

# Client: laptop
[Peer]
PublicKey = (a key)
PresharedKey = (a key)
AllowedIPs = 10.155.129.6/32

コンピュータ構成:

[Interface]
PrivateKey = (a key)
Address = 10.155.129.2/24
DNS = 1.1.1.1


[Peer]
PublicKey = (a key)
PresharedKey = (a key)
AllowedIPs = 10.155.129.0/24
PersistentKeepalive = 25
Endpoint = (server's public IP):51820

最後に、ノートブックの構成は次のとおりです。

[Interface]
PrivateKey = (a key)
Address = 10.155.129.6/24
DNS = 1.1.1.1


[Peer]
PublicKey = (a key)
PresharedKey = (a key)
AllowedIPs = 10.155.129.0/24
PersistentKeepalive = 25
Endpoint = (server's public IP):51820

ありがとうございます!

ベストアンサー1

数日後、私の介入なしに接続が機能し始めたため、この問題をどのように解決するのかわかりませんが、問題が何であるかを知るために他の人ができることについていくつかの提案なしにこの問題を放置しないために、のように説明します。いくつかのステップ:

  1. Ping がピアに到達していることを確認します。 ping するピアから次のコマンドを実行します。 (ここでWireGuardインターフェイスの名前はsudo tcpdump -tttnei wg0 icmp何ですか?)wg0そうである場合、この同じコマンドはピアが期待したIPで応答するかどうかを示します。これは、ピアをpingするためのWireGuard confファイルのアドレスフィールドのIPと同じでなければなりません(私の場合10.155.129.6)。
  2. VPNサーバーを介して接続されていることを確認してください。 dockerでwg-easyを実行していても、tcpdumpホスト上で直接実行できます。sudo tcpdump -ttttni any 'udp port 51820'つまり、-i anyすべてのインターフェイスでリッスンすることを意味します(私のように、パケットがどのインターフェイスを通過するのかわからない)。あなたがしていることdockerからwg-easyに51820バインドされたポートです。51820すでに仲間が多い場合は、おそらくそこでかなりの騒音を見るでしょう。可能であれば、デバッグ中に他のピアのVPN接続を切断できます。
  3. ディストリビューションでファイアウォールが何であるかをもう一度確認してください。 EndeavourOSの場合はファイアウォールです。パケットをブロックしていないことを確認してください。

頑張ってください!

おすすめ記事