Windows:
Пуск > CMD > запуск от имени администратора
route add -p 172.1.0.0 mask 255.255.252.0 172.0.0.1 /p
-p – этот ключ нужен, что бы сохранить маршрут. Если его не использовать, то после перезагрузки таблица маршрутов очистится.
RedHat:
route add -net 172.1.0.0 netmask 255.255.252.0 gw 172.0.0.1 dev eth0
, где 172.1.0.0 - адрес подсети, куда должен вести маршрут, 172.0.0.1 - используемый шлюз, 255.255.252.0 - маска целевой подсети
Чтобы маршрут работал после перезагрузки:
правим
nano /etc/sysconfig/network-scripts/route-eth0 (для интерфейса eth0)
вписываем туда:
172.1.0.0/22 via 172.0.0.1 dev eth0
перезапускаем службу
service networking restart
Debian:
route add -net 172.1.0.0 netmask 255.255.252.0 gw 172.0.0.1 dev eth0
, где 172.1.0.0 - адрес подсети, куда должен вести маршрут, 172.0.0.1 - используемый шлюз, 255.255.252.0 - маска целевой подсети
nano /etc/network/interfaces
### static routing ###
post-up route add -net 172.1.0.0 netmask 255.255.252.0 gw 172.0.0.1
pre-down route del -net 172.1.0.0 netmask 255.255.252.0 gw 172.0.0.1
перезапускаем службу
service networking restart
Ubuntu:
nano /etc/network/interfaces
up route add -net 172.1.0.0/22 gw 172.0.0.1 dev eth0
service networking restart
Mac Os:
sudo route -nv add -net 172.1.0.0/22 172.0.0.1
В примере будет использована маршрутизация сети 172.1.0.0/22 на маршрутизатор 172.0.0.200.
1. Создаем Launch Daemon.
Launch Daemon загружается при загрузке ОС, Launch Agent при загрузке профиля. В целях безопасности OS X блокирует попытку запуска Launch Agent под root, а необходимая нам команда route add требует его привилегий. Конечно можно было бы поправить конфиг sudo, но в этом случае обновление системы может сломать реализуемую функциональность, так что было принято решение использовать именно Launch Daemon.
info: Все последующие операции выполняются в консоли.
Создадим и заполним конфиг нового Launch Daemon:
1
|
sudo nano /Library/LaunchDaemons/com.user.AddRoute.plist
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>Label</key><string>com.user.AddRoute</string><key>ProgramArguments</key><array><string>/usr/local/scripts/AddRoute.sh</string></array><key>RunAtLoad</key><true/></dict></plist>
Как видно из конфига, мы будем запускать скрипт /usr/local/scripts/AddRoute.sh. Он будет исполняться от root.
2. Пишем скрипт.
sudo mkdir /usr/local/scripts/sudo nano /usr/local/scripts/AddRoute.sh
Дадим скрипту доступ на исполнение:
sudo chmod +x /usr/local/scripts/AddRoute.sh
Рассмотрим конструкцию:
CheckForNetworkwhile [ "${NETWORKUP}" != "-YES-" ]dosleep 5NETWORKUP=CheckForNetworkdone
Без нее скрипт может не работать, так как на момент его запуска сеть может еще не подняться. Apple рекомендует использовать отдельные инструменты для контроля сети, что усложнило бы реализацию, но в файле /etc/rc.common была найдена подходящая для таких случаев функция.
В итоге после запуска скрипта выполняется проверка доступности сети и, если она недоступна, повторение попытки через 5 секунд. Как только сеть появится, цикл завершится и выполнится команда:
/sbin/route add -net 172.1.0.0 -netmask 255.255.252.0 -gateway 172.0.0.200
Теперь достаточно перезагрузить машину и убедиться, что все работает как надо.
Проверить можно выполнив команду:
Вывод должен быть аналогичным:
172.1/22 172.0.0.200 UGSc 1 0 en0