
기본 인터페이스로 사용하고 싶지 않기 때문에 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.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 구성 2개의 허용 IP에서 세 번째 엔드포인트 IP를 제외해야 합니다. Wireguard에 내부 계산기나 기능이 있으면 더 좋을 것입니다 DisallowedIPs
.
그래서 내 해결책은 AllowedIPs
구성을 생략하고 직접 기본 경로를 만드는 것입니다. 나는 다음을 사용하고 있습니다계산기 제외파이썬으로 작성되었습니다. 다음을 수행해야 합니다.
- 모든 Wireguard 클라이언트 구성에서 모든 엔드포인트를 수집합니다.
- 모든 엔드포인트를 해결합니다.
0.0.0.0/0
(및 ) 에서 대상 엔드포인트를 제외합니다::/0
.- 계산기에서 받은 각 IP 블록에 대한 기본 경로를 추가합니다.
PS 각 VPN 인터페이스에 대한 별도의 테이블에 이러한 경로를 추가하는 것이 좋습니다. 왜냐하면 그것은 무리가 될 것이기 때문입니다.
PS 나는 내 route-up.client.sh
및 route-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