Wireguard는 클라이언트에서 네트워크의 다른 서버로 트래픽을 라우팅하지 않습니다.

Wireguard는 클라이언트에서 네트워크의 다른 서버로 트래픽을 라우팅하지 않습니다.

CentOS 버전 7.6이 있고 테스트 Wireguard VPN 서버가 설치되어 있습니다. 적어도 문서에 따르면 전체 설치 및 구성은 매우 간단했습니다. 그래서 제가 한 일은 wireguard-tools, wireguard-dkms 및 linux-headers를 설치하는 것이었습니다.

다음 단계는 서버의 개인 키와 공개 키를 생성하고 서버 구성을 다음과 같이 작성하는 것입니다.

[Interface]
Address = 10.7.0.1/24
ListenPort = 34777
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=

[Peer]
PublicKey  = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
AllowedIPs = 10.7.0.2/32

[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
AllowedIPs = 10.7.0.3/32

[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
AllowedIPs = 10.7.0.4/32

[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
AllowedIPs = 10.7.0.5/32

서버 측에서는 방화벽에서 포트 34777 udp를 열고 sysctl -w net.ipv4.ip_forward를 설정했습니다(전달 활성화). 이 서버는 클라이언트에서 VPN 서버 서브넷의 다른 서버로 트래픽을 전달해야 하기 때문입니다. 이제 이 서버의 공용 IP가 11.11.11.11/23이라고 가정합니다.

클라이언트 측에서 구성은 다음과 같습니다.

[Interface]
Address = 10.7.0.4/24
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=

[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
AllowedIPs = 10.7.0.1/32,11.11.11.0/23 (for having route to 11.11.11.0/23 subnet) or 0.0.0.0/0
Endpoint = 11.11.11.11:34777

이제 0.0.0.0/0은 모든 트래픽을 VPN으로 전달한다는 의미이며(필수 사항은 아님) 분할 터널이 될 수 있습니다....이해가 안 됩니다. 연결하면 서버에 ping을 보낼 수 있습니다. 인터페이스는 다음과 같습니다. 10.7.0.1이지만 네트워크 11.11.11.0/23에서는 아무 것도 핑할 수 없습니다. 네트워크 11.11.11.0/23은 공용 네트워크이므로 NAT가 없습니다. CentOS에서는 iptables 대신 Firewalld를 사용한다는 점도 언급할 가치가 있습니다.

터널 인터페이스 뒤의 내부 네트워크를 볼 수 없는 이유와 방법은 무엇입니까?

사진 설정은 다음과 같습니다. 여기에 이미지 설명을 입력하세요.

PS 사진에서 호스트 A와 Wireguard 서버 사이에는 또 다른 Linux 라우터(메인 라우터)가 있으므로 이를 염두에 두십시오.

답변1

수많은 시행착오와 Wireguard IRC 채널 사람들과의 브레인스토밍 끝에 분명히 Wireguard 뒤의 모든 서버에 대해 10.7.0.0/24에 정적 경로를 추가하는 것을 잊어버렸습니다. ping이 서버로 전송되지만 서버가 에코 응답을 보낼 위치를 모르기 때문에 반환되지 않습니다.

ip route add 10.7.0.0/24 via 11.11.11.11 dev eth0 (main device for communication)

나에게는 문제가 해결되었습니다 ;-)

답변2

나는 동일한 문제를 겪었습니다. 그래프의 "Wireguard SRV"(=Centos8, iptables 및 ferm 포함) 서버가 트래픽을 라우팅하지 않았습니다.

질문: 잊어버렸어요 sysctl -w net.ipv4.ip_forward=1.
하지만 그것이 유일한 문제도 아니고 ip route add ...해결책도 아닙니다.

/etc/wireguard/wg0.conf그래서 나는 내 wireguard-config(귀하의 주소에 따라 위치)에 다음 줄을 추가했습니다.

[Interface]
// ...
PreUp = iptables -A POSTROUTING -s 10.7.0.0/24 -o eth0 -j SNAT --to-source 11.11.11.11 -t nat
PreDown = iptables -D POSTROUTING -s 10.7.0.0/24 -o eth0 -j SNAT --to-source 11.11.11.11 -t nat

답변3

wg0과 같은 wg intf 자체 전달을 활성화해야 합니다.

iptables -I FORWARD -i wg0 -o wg0 -j ACCEPT

관련 정보