클라이언트(Ubuntu 20.04)가 VPN WireGuard 서버에 연결되면 인터넷 페이지를 구문 분석할 수 없습니다.

클라이언트(Ubuntu 20.04)가 VPN WireGuard 서버에 연결되면 인터넷 페이지를 구문 분석할 수 없습니다.

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.8DNS = 127.0.0.53/etc/resolv.conf

  1. 내 웹 브라우저가 페이지에 액세스할 수 없습니다.
  2. curl유사하거나 ping해결되지 않은 도메인 명령

VPN 클라이언트의 버전은 다음과 같습니다.

  • apt-cache show wireguard:버전: 1.0.20200513-1~20.04.2
  • lsb_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 서비스가 새 구성을 고려하지 않는다는 것을 의미합니다.startedrestarted

이는 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

iptablesWireGuard의 구성 파일에 설정이 이미 적용되어 있다고 가정하면섬기는 사람. 그러나 나는 ufw무슨 일이 일어날지 보기 위해 규칙을 제거하려고 시도하지 않았습니다 .

관련 정보