활성 OpenVPN 클라이언트가 있는 Wireguard 서버

활성 OpenVPN 클라이언트가 있는 Wireguard 서버

활성 OpenVPN 클라이언트가 있는 컴퓨터에서 Wireguard 서버를 실행해야 합니다. Wireguard 서버에 연결된 클라이언트는 NAT를 통해 "tun0"의 OpenVPN 클라이언트에 연결하고 해당 인터페이스를 통해 인터넷에 액세스합니다.

이전에는 자체 tun/tap 인터페이스(예: Shadowsocks)가 없는 다른 VPN 솔루션을 사용하여 유사한 설정을 생성해야 할 때 iptables 'fwmark'를 사용하여 tun0 인터페이스를 통해 라우팅되지 않는 패킷을 표시했습니다. VPN을 열기 위해 생성되었습니다.

로컬 IP 10.3.0.11(포트 2000의 VPN 서버)을 사용하는 서버에서 다음 명령을 순서대로 실행하면 VPN 서버에 연결하고 활성 OpenVPN 클라이언트로 인터넷을 검색할 수 있습니다.

ip route add default via 10.3.0.11 dev eth0 table 7
ip rule add fwmark 0x55 priority 1000 table 7
ip route flush cache
iptables -t mangle -A OUTPUT -p udp --sport 2000 -j MARK --set-mark 0x55
iptables -I INPUT -p udp -m udp --dport 2000 -j ACCEPT

그러나 Wireguard는 자체 인터페이스(wg0)를 생성하므로 이 솔루션은 작동하지 않습니다. OpenVPN 클라이언트가 연결을 설정하면 Wireguard 서버에 액세스할 수 없습니다.

UDP 포트 3333에서 실행되는 Wireguard 서버에 대한 연결을 차단하는 방화벽이 없는지 확인했으며 OpenVPN 연결이 활성화되지 않은 경우에도 연결이 제대로 작동합니다.

OpenVPN이 연결되기 전 "route -n"의 출력입니다.

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.1        0.0.0.0         UG    0      0        0 eth0
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 eth0
10.33.0.0       0.0.0.0         255.255.255.0   U     0      0        0 wg0
169.254.0.0     0.0.0.0         255.255.0.0     U     1040   0        0 eth0

OpenVPN 연결 후 "route -n"의 출력입니다.

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.1        0.0.0.0         UG    0      0        0 eth0
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 eth0
10.8.8.0        0.0.0.0         255.255.255.0   U     0      0        0 tun0
10.33.0.0       0.0.0.0         255.255.255.0   U     0      0        0 wg0
128.0.0.0       10.8.8.1        128.0.0.0       UG    0      0        0 tun0
169.254.0.0     0.0.0.0         255.255.0.0     U     1040   0        0 eth0
<OVPN Server>   10.0.0.1        255.255.255.255 UGH   0      0        0 eth0

Wireguard의 구성 파일입니다.

[Interface]
Address = 10.33.0.1/24
Address = fd33:3300::1/64
SaveConfig = true
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o tun0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o tun0 -j MASQUERADE
ListenPort = 3333
FwMark = 0x55
PrivateKey = <private key>

[Peer]
PublicKey = <public key>
AllowedIPs = 10.33.0.11/32, fd33:3300::11/128

서버 구성을 어떻게 변경합니까?

  • 클라이언트는 UDP 포트 3333을 통해 Wireguard 서버에 연결할 수 있습니다.
  • 클라이언트는 모든 인터넷 트래픽을 tun0(OpenVPN에서 생성)을 통해 라우팅하는 Wireguard 서버를 통해 인터넷에 액세스할 수 있습니다.

관련 정보