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 proto 커널 범위 링크 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 추가

ip r 192.168.5.1을 통해 0.0.0.0/1을 추가합니다.
ip r 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

ip r 192.168.5.1 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 proto dhcp 메트릭 100을 통해 ip r del 0.0.0.0/1
192.168.60.1 dev vpn_softether를 통해 ip r del 기본값
ip r del 128.0.0.0/1 via 192.168.5.1 dev enp7s0 proto dhcp metric 100

192.168.60.1 dev vpn_softether proto dhcp 메트릭 100을 통해 ip r del 0.0.0.0/1
192.168.5.1 dev enp7s0을 통해 ip r del 기본값
192.168.60.1 dev vpn_softether proto dhcp 메트릭 100을 통해 ip r del 128.0.0.0/1

ip r 192.168.60.1 dev vpn_softether를 통해 0.0.0.0/1 추가
ip r 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.4VPN 트래픽 리디렉션을 위해 생성 중인 기본 경로에서 제외하는 것입니다. 을 위한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 구성 2개의 허용 IP에서 세 번째 엔드포인트 IP를 제외해야 합니다. Wireguard에 내부 계산기나 기능이 있으면 더 좋을 것입니다 DisallowedIPs.

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

  1. 모든 Wireguard 클라이언트 구성에서 모든 엔드포인트를 수집합니다.
  2. 모든 엔드포인트를 해결합니다.
  3. 0.0.0.0/0(및 ) 에서 대상 엔드포인트를 제외합니다 ::/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

관련 정보