와이어가드 라우팅

와이어가드 라우팅

Wireguard 연결을 설정했지만 라우팅에 몇 가지 문제가 있습니다. VPN이 설정된 Wireguard 컴퓨터는 인터넷 공급자의 라우터 뒤에 있습니다. 나는 한 위치 또는 다른 위치에 있을 수 있습니다. 즉, VPN을 설정하려면 다른 사이트에 원격으로 액세스해야 합니다. VPN이 성공적으로 설정되었지만 연결이 끊어졌습니다. 원격지에서 로그인이 안되어서 다시 설정할 수가 없어요. 다른 곳으로 가려면 기다려야 했어요. 아래에 설명된 문제로 인해 원격 위치에 로그인할 수 없습니다.

라우터에 NAT를 입력하여 인터넷을 통해 액세스할 수 있도록 이 컴퓨터에 대한 원격 SSH 액세스를 설정했습니다. 라우터 주소로 로그인했는데 라우터가 SSH를 내부 주소로 전달해 주었고 SSH 접속은 잘 되었는데 문제가 하나 있었습니다.

wg0인터페이스를 열고 VPN을 설정하려고 하면 SSH 액세스가 더 이상 작동하지 않습니다. 트래픽을 분석해보니 아래와 같은 일이 일어났습니다. SSH를 시작하면 라우터가 이를 전달하고 Wireguard 컴퓨터가 인터페이스에서 패킷을 수신합니다 SYN. eth0그러나 활성화되면 SYN, ACK패킷은 을 통해 다시 전송되지 않고 eth0대신 wg0인터페이스를 통해 다시 전송됩니다. SSH는 인터페이스 wg0없이도 wg0잘 작동합니다 . 192.168.1.0/24인터페이스에 관계없이 SSH는 로컬 네트워크 내에서도 작동합니다 wg0.

SSH 연결을 유지하는 동시에 Wireguard VPN 연결을 사용하는 방법은 무엇입니까? 해당 컴퓨터에 다른 인터페이스가 있지만 lan0아직 연결되지 않았습니다. lan0인트라넷에도 연결하여 SSH에 사용해야 합니까 ? 나는 wireguard의 문제가 lan0.net과 동일한 네트워크에 연결되기 때문에 여전히 인터페이스 에 있다고 생각합니다 eth0.

연결, 경로 등에 대한 추가 정보는 다음과 같습니다.

wg0 인터페이스가 없습니다.

wg-quick down wg0산출:

[#] ip -4 rule delete table 51820
[#] ip -4 rule delete table main suppress_prefixlength 0
[#] ip link delete dev wg0
[#] nft -f /dev/fd/63

IP -4 주소:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 8e:b7:6b:c9:08:7d brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.250/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0
       valid_lft 84256sec preferred_lft 84256sec
3: lan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 8e:b7:6b:c9:08:9d brd ff:ff:ff:ff:ff:ff

IP 라우팅:

default via 192.168.1.1 dev eth0 
default via 192.168.1.1 dev eth0 proto dhcp metric 100 
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.250 metric 100

IP 규칙:

0:  from all lookup local
32766:  from all lookup main
32767:  from all lookup default

wg0 인터페이스를 사용하십시오:

wg-quick up wg0산출:

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.2/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] wg set wg0 fwmark 51820
[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] nft -f /dev/fd/63

IP -4 주소:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 8e:b7:6b:c9:08:7d brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.250/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0
       valid_lft 84320sec preferred_lft 84320sec
3: lan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group 
default qlen 1000
    link/ether 8e:b7:6b:c9:08:9d brd ff:ff:ff:ff:ff:ff
14: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 10.0.0.2/24 scope global wg0
       valid_lft forever preferred_lft forever

IP 라우팅:

default via 192.168.1.1 dev eth0 
default via 192.168.1.1 dev eth0 proto dhcp metric 100 
10.0.0.0/24 dev wg0 proto kernel scope link src 10.0.0.2 
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.250 metric 100 

IP 규칙:

0:  from all lookup local
32764:  from all lookup main suppress_prefixlength 0
32765:  not from all fwmark 0xca6c lookup 51820
32766:  from all lookup main
32767:  from all lookup default

고쳐 쓰다: 더 많은 테스트를 거친 후 wg-quick이 일부 IP 라우팅 및 규칙을 설정한다는 것을 발견했습니다. 나는 이것이 SSH 연결을 방해할 것이라고 생각합니다. 다음 명령을 시도하면 SSH가 계속 작동합니다.

ip link add dev wg0 type wireguard
ip address add dev wg0 10.0.0.2/24
wg set wg0 private-key /root/wgprivate.key
wg set wg0 listen-port 37723
ip link set wg0 up
wg set wg0 peer <key> allowed-ips 0.0.0.0/0 persistent-keepalive 25 endpoint <remote hostname>:<remote port>

주말까지 원격 사이트에 접속할 수 없기 때문에 wg-quick의 어떤 명령이 비정상적인 동작을 일으키는지 알아내려고 합니다. 원격 사이트에 액세스할 수 있게 되면 wg-quick 없이 VPN을 다시 설정하겠습니다. 이전에 이 작업을 수행한 적이 있지만 wg-quick을 사용하여 자동화하고 싶었습니다.

답변1

몇 가지 조사 끝에 연결이 설정된 후 wg-quick이 수행하는 라우팅을 원하지 않는다는 것을 알게 되었습니다. 따라서 해결책은 매우 간단합니다. 줄을 긋다

Table = off

일부 [Interface]. 이는 wg-quick에게 IP 규칙과 경로를 만들지 않도록 지시합니다.

답변2

구경하다여기, 그러나 귀하의 질문으로 요약하자면 다음과 같습니다.

iptables를 사용하여 패킷을 대상 포트 22로 표시할 수 있습니다.

iptables -t mangle -A PREROUTING -i eth0 -p tcp -m tcp --dport 22 -j MARK --set-mark 22

따라서 eth0을 통해 이러한 패킷을 라우팅하는 높은 우선순위 규칙을 삽입할 수 있습니다.

ip rule add priority 32000 fwmark 22 table 22
ip route flush table 22
ip route add table 22 default dev eth0

아직 테스트되지 않았습니다. VPN을 통해 더 이상 포트 22에 연결할 수 없는 부작용이 있을 수 있습니다.

관련 정보