0.0.0.0 주소가 아닌 ipv4 경로로 트래픽을 라우팅하시겠습니까?

0.0.0.0 주소가 아닌 ipv4 경로로 트래픽을 라우팅하시겠습니까?

0.0.0.0 주소가 아닌 ipv4 경로가
기본 인터페이스가 되는 것을 원하지 않으므로 어떻게 트래픽을 라우팅할 수 있습니까?

기본값은 192.168.5.1 dev enp7s0 proto dhcp metric 100을 전달합니다.
169.254.0.0/16 dev enp7s0 범위 링크 표시기 1000
192.168.5.0/24 dev enp7s0 프로토타입 커널 범위 링크 src 192.168.5.84 미터법 100
192.168.60.0/24 dev vpn_softether proto 커널 전체 링크 src 192.168.60.50
192.168.60.1 dev vpn_softether를 통해 209.80.36.170
192.168.60.1 dev vpn_softether를 통해 216.117.82.227


vpn_softether를 제가 시도한 기본 인터페이스로 만들고 싶습니다 ...

ip r 0.0.0.0 dev vpn_softether를 통해 0.0.0.0/1 추가
ip r 0.0.0.0 dev vpn_softether를 통해 128.0.0.0/1 추가

192.168.5.1을 통해 0.0.0.0/1 추가
192.168.5.1을 통해 128.0.0.0/1 추가

ip r 192.168.60.1을 통해 기본값을 추가합니다.

192.168.60.1 dev vpn_softether를 통해 ip r del 0.0.0.0/1
192.168.60.1 dev vpn_softether를 통한 IP r del 128.0.0.0/1

192.168.5.1을 통해 ip r del 0.0.0.0/1
192.168.5.1을 통해 ip r del 128.0.0.0/1

192.168.5.1을 통한 ip r dev enp7s0 proto dhcp metric 100 0.0.0.0/1 추가
ip r 192.168.5.1 dev enp7s0 proto dhcp metric 100을 통해 128.0.0.1/1 추가


192.168.5.1 dev enp7s0 원시 dhcp 메트릭 100을 통해 ip r del 0.0.0.0/1
ip r del의 기본값은 192.168.60.1 dev vpn_softether입니다.
ip r del 128.0.0.0/1 ~ 192.168.5.1 dev enp7s0 원시 dhcp 메트릭 100

192.168.60.1 dev vpn_softether proto dhcp 메트릭 100을 통해 ip r del 0.0.0.0/1
ip r del의 기본값은 192.168.5.1 dev enp7s0입니다.
ip r del 128.0.0.0/1 ~ 192.168.60.1 dev vpn_softether proto dhcp 메트릭 100

ip r 192.168.60.1 dev vpn_softether를 통해 0.0.0.0/1 추가
192.168.5.1 dev enp7s0 proto dhcp metric 100을 통한 ip r 기본값 추가
192.168.60.1 dev vpn_softether를 통해 128.0.0.0/1 추가

그런데 안 되더라구요... 다른 방법은 없을까요?
감사해요.

답변1

'모든 트래픽'은 다음으로만 라우팅할 수 있습니다.하나인터페이스가 전부는 아닙니다.

어떤 이유로든 기본 경로를 유지하려면 기본 경로를 유지하고 추가하거나 제거하지 마세요. 추가하거나 제거할 수 있으면 기본 경로를 유지할 필요가 없습니다.

그래서,

ip route add 0.0.0.0/1 via 192.168.60.1 dev vpn_softether 
ip route add 128.0.0.0/1 via 192.168.60.1 dev vpn_softether 

게이트웨이가 vpn_softether실제로 있다고 가정하고 작업을 수행해야 합니다 192.168.60.1. VPN이 연결되는 모든 곳으로 전송하는 규칙도 필요합니다. enp7s0그렇지 않으면 VPN이 다른 엔드포인트와 통신할 수 없으므로 전혀 연결되지 않습니다. 그처럼

ip route add 1.2.3.4/32 via 192.168.5.1 dev enp7s0

1.2.3.4다른 끝점의 IP 주소는 어디에 있습니까? 이 규칙을 따르면 default(이러한 상황에 대한 동기가 있는 경우)아니요일하다.

답변2

이전 답변에 추가하고 싶습니다.

ip route add 1.2.3.4/32 via 192.168.5.1 dev enp7s0

이것은 잘못된 접근 방식입니다. enp7s0폐쇄되면 경로가 사라집니다. enp7s0이 경로는 온라인 상태가 되면 표시되지 않습니다. 동시에 VPN 인터페이스는 온라인 상태가 되지만 액세스할 수 없기 때문에 작동하지 않습니다 1.2.3.4.

enp7s0일단 시작되면 netplan을 사용하여 이 경로를 동적으로 생성할 수 있습니다. 그러나 경로는 IP 주소, 네트워크 인터페이스 이름 및 게이트웨이 IP로 구성됩니다. 이것이 의미하는 바는다른 네트워크 간에 이식 가능하지 않음. 실습을 통해 이 솔루션은 너무 고통스럽고 권장되지 않는다는 것이 입증되었습니다. 단기간에 netplan에 중요한 경로를 추가했다는 사실을 잊어버렸습니다. 나중에 이 길이 당신에게 문제가 될 것입니다. 대규모 네트워크에서 이 솔루션을 사용하는 것은 완전히 불가능합니다.

1.2.3.4올바른 해결 방법은 VPN 트래픽 리디렉션을 위해 생성한 기본 경로에서 해당 경로를 제외하는 것입니다. ~을 위한Wireguard용 솔루션 예시. 1.2.3.4/32에서 제외 0.0.0.0/0하고 그 결과를 에 넣어야 합니다 AllowedIPs. 온라인계산기는 여기. "더 나은 대안"이 있다고 읽을 수 있지만 저자가 틀렸고 대안이 없습니다.

예를 들어 0.0.0.0/0빼기 기호는 1.2.3.4/32다음과 같습니다.

AllowedIPs = 0.0.0.0/8, 1.0.0.0/15, 1.2.0.0/23, 1.2.2.0/24, 1.2.3.0/30, 1.2.3.5/32, 1.2.3.6/31, 1.2.3.8/29, 1.2.3.16/28, 1.2.3.32/27, 1.2.3.64/26, 1.2.3.128/25, 1.2.4.0/22, 1.2.8.0/21, 1.2.16.0/20, 1.2.32.0/19, 1.2.64.0/18, 1.2.128.0/17, 1.3.0.0/16, 1.4.0.0/14, 1.8.0.0/13, 1.16.0.0/12, 1.32.0.0/11, 1.64.0.0/10, 1.128.0.0/9, 2.0.0.0/7, 4.0.0.0/6, 8.0.0.0/5, 16.0.0.0/4, 32.0.0.0/3, 64.0.0.0/2, 128.0.0.0/1

안타깝게도 이 솔루션은 이상적이지 않습니다. VPN이 여러 개 있을 수 있으므로 각 VPN의 기본 경로에서 모든 엔드포인트 IP를 제외해야 합니다.

예를 들어 VPN이 2개 있고 다른 VPN을 추가하려는 경우 두 기존 VPN 구성의 허용 IP에서 세 번째 끝점 IP를 제외해야 합니다. Wireguard에 내부 계산기나 DisallowedIPs기능이 있으면 더 좋을 것입니다.

그래서 내 해결책은 구성을 생략 AllowedIPs하고 기본 경로를 직접 만드는 것이었습니다. 나는 다음을 사용하고 있습니다계산기 제외Python으로 작성되었습니다. 다음을 수행해야 합니다.

  1. 모든 Wireguard 클라이언트 구성에서 모든 엔드포인트를 수집합니다.
  2. 모든 엔드포인트를 해결합니다.
  3. 0.0.0.0/0(and) 에서 대상 엔드포인트를 제외합니다 ::/0.
  4. 계산기에서 수신하는 각 IP 블록에 대한 기본 경로를 추가합니다.

PS 각 VPN 인터페이스에 대해 별도의 테이블에 이러한 경로를 추가하는 것이 좋습니다. 왜냐하면 그것은 사람들의 그룹이 될 것이기 때문입니다.

PS 나는 내 route-up.client.shroute-down.client.sh공개 포인트는 여기.

Table = off
PostUp = /etc/wireguard/route-up.client.sh 51820 wg0 10.20.3.0/24 fd10:20:3::/64 10
PreDown = /etc/wireguard/route-down.client.sh 51820

관련 정보