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