← На главную

Добавление маршрутов на Linux через .sh скрипт

NetRoute Pro генерирует простой Bash-скрипт с командами ip route add. Применяется одной командой. Для персистентности — один дополнительный шаг в зависимости от дистрибутива.

Что понадобится

Шаг 1. Сгенерируйте .sh в NetRoute Pro

  1. Откройте нужный сайт в Chrome
  2. Запустите расширение NetRoute Pro
  3. Выберите платформу Linux
  4. Укажите IP VPN-шлюза (например 10.8.0.1)
  5. Задайте маску агрегации (рекомендуется /24)
  6. Нажмите Analyze Website
  7. Скачайте routes.sh
Совет: включите RIPE BGP оптимизацию — подстановка BGP-префиксов даёт стабильные подсети, которые не ломаются при ротации IP у Cloudflare/Fastly.

Шаг 2. Примените скрипт

chmod +x routes.sh
sudo bash routes.sh

Маршруты добавлены. Работают до перезагрузки системы.

Шаг 3. Сделайте маршруты постоянными

Три варианта — выберите тот, что удобнее для вашего дистрибутива.

systemd-networkd

Создайте drop-in файл для вашего VPN-интерфейса, например /etc/systemd/network/10-vpn.network.d/routes.conf:

[Route]
Destination=104.21.32.0/24
Gateway=10.8.0.1

[Route]
Destination=172.67.182.0/24
Gateway=10.8.0.1

Примените изменения:

sudo systemctl restart systemd-networkd

NetworkManager dispatcher

Сохраните скрипт как /etc/NetworkManager/dispatcher.d/99-vpn-routes и сделайте исполняемым:

#!/bin/bash
INTERFACE="$1"
ACTION="$2"

if [ "$INTERFACE" = "<имя-вашего-vpn>" ] && [ "$ACTION" = "up" ]; then
    ip route add 104.21.32.0/24 via 10.8.0.1
    ip route add 172.67.182.0/24 via 10.8.0.1
    # ... остальные маршруты
fi
sudo chmod +x /etc/NetworkManager/dispatcher.d/99-vpn-routes

При подъёме VPN NetworkManager вызовет скрипт автоматически.

@reboot cron

Самый простой и универсальный способ — подходит любому дистрибутиву:

  1. Скопируйте скрипт в общесистемный путь:
    sudo cp routes.sh /usr/local/bin/routes.sh
    sudo chmod +x /usr/local/bin/routes.sh
  2. Откройте crontab от root:
    sudo crontab -e
  3. Добавьте строку:
    @reboot /usr/local/bin/routes.sh

Проверка

ip route show | grep 10.8.0.1

Все нужные подсети должны быть привязаны к IP VPN-шлюза.

Откат

Сгенерируйте обратный скрипт, заменив add на del в routes.sh, и запустите под root:

sed 's/ip route add/ip route del/' routes.sh > unroute.sh
chmod +x unroute.sh
sudo bash unroute.sh

Частые проблемы

Network is unreachable

VPN-интерфейс выключен или не получил адрес. Проверьте:

ip link show
ip addr show

RTNETLINK answers: File exists

Маршрут уже добавлен ранее. Сначала удалите его:

sudo ip route del <подсеть>

Permission denied

Команды ip route требуют root. Запускайте скрипт через sudo.

Официальная документация

Готовы попробовать?

NetRoute Pro — бесплатное расширение Chrome для генерации маршрутов из любого сайта.

Установить расширение