WireGuard VPN을 설정했지만 다음 명령을 사용하여 성공적으로 연결한 후 브라우저가 인터넷에서 웹 페이지를 로드할 수 없습니다.
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를 nslookup
웹 브라우저에 복사/붙여넣을 수 있었고 google.com
홈 페이지에 액세스할 수 있었으므로 이는 DNS 문제와 관련이 있을 수 있습니다.
VPN 클라이언트 구성 파일에서 또는 DNS = 1.1.1.1
( 마지막 항목의 출처 ) 에 DNS IP를 강제 적용하려고 시도했지만 효과는 동일합니다.DNS = 8.8.8.8
DNS = 127.0.0.53
/etc/resolv.conf
- 내 웹 브라우저가 페이지에 액세스할 수 없습니다.
curl
유사하거나ping
해결되지 않은 도메인 명령
VPN 클라이언트의 버전은 다음과 같습니다.
apt-cache show wireguard
:버전: 1.0.20200513-1~20.04.2lsb_release -a
: 우분투 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 서비스가 새 구성을 고려하지 않는다는 것을 의미합니다.started
restarted
이는 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
iptables
WireGuard의 구성 파일에 설정이 이미 적용되어 있다고 가정하면섬기는 사람. 그러나 나는 ufw
무슨 일이 일어날지 보기 위해 규칙을 제거하려고 시도하지 않았습니다 .