Добавление маршрутов на Linux через .sh скрипт
NetRoute Pro генерирует простой Bash-скрипт с командами ip route add. Применяется одной командой. Для персистентности — один дополнительный шаг в зависимости от дистрибутива.
Что понадобится
- Пакет
iproute2— есть во всех современных дистрибутивах (Ubuntu, Debian, Fedora, Arch и др.) - Права root или
sudo - Настроенный и активный VPN-интерфейс
- Расширение NetRoute Pro в Chrome
Шаг 1. Сгенерируйте .sh в NetRoute Pro
- Откройте нужный сайт в Chrome
- Запустите расширение NetRoute Pro
- Выберите платформу Linux
- Укажите IP VPN-шлюза (например
10.8.0.1) - Задайте маску агрегации (рекомендуется
/24) - Нажмите Analyze Website
- Скачайте
routes.sh
Шаг 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
Самый простой и универсальный способ — подходит любому дистрибутиву:
- Скопируйте скрипт в общесистемный путь:
sudo cp routes.sh /usr/local/bin/routes.sh sudo chmod +x /usr/local/bin/routes.sh - Откройте crontab от root:
sudo crontab -e - Добавьте строку:
@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.
Официальная документация
- ip-route(8) man page (en)
- systemd.network(5) (en)
- NetworkManager Dispatcher (en)
- Arch Wiki: systemd-networkd (en)
Готовы попробовать?
NetRoute Pro — бесплатное расширение Chrome для генерации маршрутов из любого сайта.
Установить расширение