최근에 wg-easy를 사용하여 서버에 WireGuard를 설정했고(따라서 수동으로 입력하지 않고 구성 파일이 생성됨) Linux 시스템을 포함한 여러 피어에 성공적으로 연결했습니다. 마지막으로 설정할 것은 EndeavourOS가 설치된 내 노트북입니다. 왜 이 장치가 다른 피어를 핑할 수 없는지(또는 해당 피어에서 호스팅되는 http 서비스에 액세스할 수 없는지) 이해가 되지 않습니다. PC에 연결하려고 한다고 가정해 보겠습니다. 가장 중요한 네 가지 부분(내 생각에는):
- 핑이 실제로 PC에 도달하고 PC가 응답하지만(tcpdump를 사용하여 확인) 노트북은 응답을 받지 못합니다. 나는 전문가는 아니지만 이것이 wg 구성(
ip route get PC-IP
올바른 인터페이스 반환)에 문제가 되지 않는다는 것을 의미합니다. - Firewalld를 비활성화했지만 여전히 작동하지 않습니다(이 작업을 수행하기 전에 로그를 살펴보았지만 아무 것도 차단하지 않는 것 같습니다). iptables에는 규칙이 없습니다.
- 서버(wg-easy가 설정된 서버)와의 핸드셰이크가 작동합니다.
- 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
며칠 후 내 개입 없이 연결이 작동하기 시작했기 때문에 이 문제를 어떻게 해결해야 할지 잘 모르겠지만, 문제가 무엇인지 알아내기 위해 다른 사람들이 할 수 있는 일에 대한 몇 가지 제안 없이 이 문제를 방치하지 않기 위해 다음과 같이 설명합니다. 몇 가지 단계:
- Ping이 피어에 도달하는지 확인하십시오. ping하려는 피어에서 다음 명령을 실행하십시오. (여기서 WireGuard 인터페이스의 이름은
sudo tcpdump -tttnei wg0 icmp
무엇입니까 ?)wg0
그렇다면 이 동일한 명령은 피어가 예상한 IP로 응답하는지 여부를 알려줍니다. 이는 피어를 핑하기 위한 WireGuard conf 파일의 주소 필드에 있는 IP와 동일해야 합니다(제 경우에는10.155.129.6
). - VPN 서버를 통해 연결되었는지 확인하세요. docker에서 wg-easy를 실행하는 경우에도
tcpdump
호스트에서 직접 실행할 수 있습니다.sudo tcpdump -ttttni any 'udp port 51820'
즉,-i any
모든 인터페이스에서 수신 대기한다는 의미입니다(나처럼 패킷이 어떤 인터페이스를 통과할지 확신할 수 없음). 당신이하고있는 일 docker 에서 wg-easy에51820
바인딩된 포트입니다 .51820
이미 동반자가 많다면 아마도 그곳에서 꽤 많은 소음을 보게 될 것입니다. 가능하다면 디버깅하는 동안 다른 피어의 VPN 연결을 끊을 수 있습니다. - 배포판에 방화벽이 무엇인지 다시 확인하세요. EndeavourOS의 경우 방화벽입니다. 패킷을 차단하지 않는지 확인하세요.
행운을 빌어요!
답변2
Wireguard 서버에서 다음 규칙을 추가합니다.
sudo iptables -A FORWARD -i wg0 -o wg0 -j ACCEPT