Направлять трафик на мои маршруты IPv4, за исключением адреса 0.0.0.0?

Направлять трафик на мои маршруты IPv4, за исключением адреса 0.0.0.0?

Как направить трафик на мои маршруты IPv4, за исключением адреса 0.0.0.0,
так как я не хочу, чтобы он был интерфейсом по умолчанию

по умолчанию через 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 metric 100
192.168.60.0/24 dev vpn_softether proto ядро ​​область ссылка src 192.168.60.50
209.80.36.170 через 192.168.60.1 dev vpn_softether
216.117.82.227 через 192.168.60.1 dev vpn_softether

Я хочу сделать vpn_softether интерфейсом по умолчанию
. Что я уже пробовал...

ip r добавить 0.0.0.0/1 через 0.0.0.0 dev vpn_softether
ip r добавить 128.0.0.0/1 через 0.0.0.0 dev vpn_softether

ip r add 0.0.0.0/1 через 192.168.5.1
ip r add 128.0.0.0/1 через 192.168.5.1

ip r добавить по умолчанию через 192.168.60.1

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.60.1 dev vpn_softether

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 add 0.0.0.0/1 через 192.168.5.1 dev enp7s0 proto dhcp metric 100
ip r add 128.0.0.1/1 через 192.168.5.1 dev enp7s0 proto dhcp metric 100


ip r del 0.0.0.0/1 через 192.168.5.1 dev enp7s0 proto dhcp metric 100
ip r del default через 192.168.60.1 dev vpn_softether
ip r del 128.0.0.0/1 через 192.168.5.1 dev enp7s0 proto dhcp metric 100

ip r del 0.0.0.0/1 через 192.168.60.1 dev vpn_softether proto dhcp метрика 100
ip r del default через 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 add 0.0.0.0/1 через 192.168.60.1 dev vpn_softether
ip r добавить по умолчанию через 192.168.5.1 dev enp7s0 proto dhcp metric 100
ip r добавить 128.0.0.0/1 через 192.168.60.1 dev vpn_softether

но это не сработало... Есть ли другой способ сделать это?
Спасибо.

решение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.4IP-адрес другой конечной точки. Сохранение defaultправила для этого (если это было вашей мотивацией для этого условия) будетнетработа.

решение2

Хочу добавить к предыдущему ответу:

ip route add 1.2.3.4/32 via 192.168.5.1 dev enp7s0

Это неправильный подход. Этот маршрут исчезнет, ​​когда enp7s0выключен. Этот маршрут не появится, когда enp7s0выйдет в онлайн. Между тем, ваш интерфейс VPN будет в сети, но он не будет работать, потому что не сможет достичь 1.2.3.4.

Вы можете динамически создать этот маршрут с помощью netplan, когда enp7s0он запущен. Но этот маршрут состоит из 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, и поэтому вам придется исключить все конечные IP-адреса из каждого маршрута VPN по умолчанию.

Например, если у вас есть 2 VPN и вы хотите добавить еще одну, вам нужно исключить IP третьей конечной точки из разрешенных IP двух существующих конфигураций VPN. Будет лучше, если у Wireguard будет внутренний калькулятор или DisallowedIPsфункционал.

Поэтому мое решение — исключить AllowedIPsв конфигурации и создать маршруты по умолчанию самостоятельно. Я использую следующеекалькулятор-исключательнаписано на python. Вам нужно сделать следующее:

  1. Соберите все конечные точки из всех конфигураций клиента Wireguard.
  2. Разрешить все конечные точки.
  3. Исключить целевые конечные точки из 0.0.0.0/0(и из ::/0).
  4. Добавьте маршруты по умолчанию для каждого IP-блока, полученного от калькулятора.

P.S. Могу порекомендовать вам добавлять эти маршруты в отдельную таблицу для каждого 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

Связанный контент