.png)
저는 OpenWRT OpenWrt 19.07.8 r11364-ef56c85848과 함께 GL.inet 라우터를 사용하고 있습니다.
원격 컴퓨터에 Wireguard 서버를 설정했습니다. VPN이 연결되지 않은 경우 공용 IP를 사용하여 LAN에서 해당 서버에 연결할 수 있습니다. VPN이 연결되면 내부 IP를 통해 연결할 수 있지만 LAN에 있는 컴퓨터에서 외부 IP를 통해 더 이상 연결할 수 없습니다.
Traceroute는 호스트에 대한 경로가 없는 라우터에서 실패한 패킷을 보여줍니다.
~ % ping 35.190.161.xxx
PING 35.190.161.169 (35.190.161.xxx): 56 data bytes
92 bytes from router.local.wan (192.168.1.254): Destination Host Unreachable
그러나 라우터에 ssh를 연결하면 예상되는 라우팅이 표시될 뿐만 아니라 핑 및 경로 추적이 성공합니다.
~# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default 100.64.0.1 0.0.0.0 UG 0 0 0 wan
10.66.66.0 * 255.255.255.0 U 0 0 0 wg0
34.120.255.244 * 255.255.255.255 UH 0 0 0 wan
35.190.161.xxx 100.64.0.1 255.255.255.255 UGH 0 0 0 wan
100.64.0.0 * 255.192.0.0 U 0 0 0 wan
192.168.0.0 * 255.255.252.0 U 0 0 0 br-lan
~# ping 35.190.161.xxx
PING 35.190.161.xxx (35.190.161.xxx): 56 data bytes
64 bytes from 35.190.161.xxx: seq=0 ttl=59 time=243.335 ms
이 클라이언트에 대한 내 Wireguard 구성은 다음과 같습니다.
[Interface]
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxlMxuhwtB9vV2Gpks=
Address = 10.66.66.3/32,fd42:42:42::3/128
DNS = 8.8.8.8,8.8.4.4
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxkIIPFsO2/EuXDNbeR3g=
PresharedKey = xxxxxxxxxxxxxxxxxxxxxxxxYnnXy4CZUMUzGBAieqU=
Endpoint = 35.190.161.xxx:60242
AllowedIPs = 10.66.66.0/24,::/0
나는 동안~할 수 있다내부 IP를 사용하여 원격 서버(예: ssh를 통해)에 접속하려면 VPN 설정 여부에 따라 올바른 주소를 선택해야 하는 것이 불편합니다.
내 Wireguard 구성에 누락된 것이 있거나 다른 문제가 있습니까?
답변1
나는 최근에이 문제에 직면했습니다. 내 라우터가 서버 IP 주소에 대한 IP 규칙을 추가한다는 것을 알았습니다(표 31).
root@GL-MT300N-V2:~# ip rule
0: from all lookup local
31: from all fwmark 0x60000/0x60000 lookup 31
1001: from all iif eth0.2 lookup 1
2001: from all fwmark 0x100/0x3f00 lookup 1
2061: from all fwmark 0x3d00/0x3f00 blackhole
2062: from all fwmark 0x3e00/0x3f00 unreachable
32766: from all lookup main
32767: from all lookup default
Wireguard 클라이언트를 활성화한 다음 ip rule del from all fwmark 0x60000/0x60000 lookup 31
명령을 사용하여 이 규칙을 수동으로 제거하면 LAN 네트워크에서 Wireguard 서버 IP로 직접 ping/ssh를 실행할 수 있습니다.
이 규칙이 추가된 몇 군데를 찾았습니다.
/etc/init.d/wireguard
/etc/vpn.user
IP 규칙 추가 명령을 사용하여 행에 주석을 달았으며 이제 Wireguard 클라이언트를 껐다가 켜도 여전히 WAN IP에 액세스할 수 있습니다.
#fix ddns conflict
#local DDNS=$(iptables -nL -t mangle | grep WG_DDNS)
#local lanip=$(uci get network.lan.ipaddr)
#local gateway=${lanip%.*}.0/24
#if [ -z "$DDNS" ];then
#iptables -t mangle -N WG_DDNS
#iptables -A WG_DDNS -t mangle -i br-lan -s $gateway -d $publicip -j MARK --set-mark 0x60000
#iptables -t mangle -I PREROUTING -j WG_DDNS
#ip rule add fwmark 0x60000/0x60000 lookup 31 pref 31
#ip route add $publicip dev wg0 table 31
#fi
나는 라우팅 전문가가 아니며 이 해킹으로 인해 문제가 발생하는지 알 수 없습니다(댓글에는 'ddns 충돌 수정'이라고 표시되어 있지만 의미는 확실하지 않음). 그러나 나에게는 정상적으로 작동하며 아무 문제도 발생하지 않습니다. (원격 네트워크에만 액세스하기 위해 wireguard 연결을 사용하고 있습니다). 또한 저는 OpenWRT 전문가가 아니기 때문에 이러한 변경 사항이 라우터 재부팅 시 저장될 것이라고 보장할 수 없습니다.