Невозможно установить статический маршрут к хосту - «SIOCADDRT: нет такого процесса»

11

В моем офисе есть маршрутизатор Windows Server 2008 192.168.16.1, который является нашим шлюзом по умолчанию. Это отправляет данные через наше основное интернет-соединение. Это работает отлично.

192.168.16.1 также имеет другое подключение к Интернету, которое в настоящее время используется не используется. Это подключается к маршрутизатору 192.168.1.254, который затем подключается к нашему вторичному интернет-соединению.

Я настроил маршрутизацию и удаленный доступ для маршрутизации диапазона 192.168.1. * Во внутреннюю сеть, и я могу пропинговать 192.168.1.254 со своего рабочего стола с IP-адресом 192.168.16.22.

У меня очень интенсивная задача загрузки и выгрузки для linux box в том же офисе, поэтому я хочу настроить статический маршрут, чтобы я не связывал наше основное интернет-соединение и не влиял на моих коллег. Итак, мой план состоит в том, чтобы настроить эту коробку со статическим маршрутом.

Из окна Linux я могу пропинговать 192.168.1.254, но я не могу добавить статический маршрут к серверу назначения в нашем центре обработки данных:

$ sudo route add -host 123.123.123.123 gw 192.168.1.254 dev eth0
SIOCADDRT: No such process

Похоже, это сообщение об ошибке указывает на то, что я не могу получить доступ к 192.168.1.254 для настройки маршрута, но могу проверить его. Я попытался добавить статический маршрут к 192.168.1.254, который работал отлично, но это не решило проблему (как и ожидалось).

Я не достаточно продвинут в области сетевых технологий, чтобы диагностировать эту проблему, поскольку я занимаюсь разработкой программного обеспечения, а не системным администрированием. Буду очень признателен за любые советы.

Спасибо за уделенное время.

Стив Рукутс
источник

Ответы:

8

Рабочий стол на 192.168.16.0/24?

Вы не можете добавить маршрут (к любой цели) через шлюз, к которому вы не подключены напрямую, потому что ваш компьютер не знает, как найти путь к маршрутизатору, не пройдя маршрут по умолчанию.

3molo
источник
Правильно, решение о маршрутизации должно быть установлено на 192.168.16.1.
Марк Вагнер
2

Вы можете получить сообщение об ошибке «SIOCADDRT: Нет такого процесса», если «Вы пытались установить маршрут для сети перед настройкой маршрута хоста для шлюза, который обрабатывает трафик для этой сети».

например, для местного -> 172.19.0.1 -> 172.19.0.xx

[root@local]# route add -net 172.19.0.0 gw 172.19.0.1 netmask 255.255.255.0 dev eth0
SIOCADDRT: No such process

ОТВЕТ: Сначала создайте маршрут хоста, затем создайте сетевой маршрут.

например, для рассматриваемой сети: локальная -> 192.168.1.254 -> 123.123.123.123

sudo route add -host 192.168.1.254 dev eth0

sudo route add -net 123.123.123.123 netmask 255.255.255.255 gw 192.168.1.254 dev eth0

Статический маршрут все равно будет загружать сеть , я думаю, это зависит;). Трафик загрузки / выгрузки должен пересекать сеть. Так что это повлияет на других пользователей сети. Вы можете ограничить пропускную способность трафика или перевести этот трафик на более тихие часы, если хотите уменьшить влияние на других пользователей сети. например, rsync имеет хорошие параметры ограничения полосы пропускания.

У меня была похожая проблема с маршрутизацией и SIOCADDRT. локальный -> dockerserver -> dockercontainer. Добавление маршрута хоста, а затем сетевого маршрута заставило маршрутизацию работать в одном направлении.

Это помогло мне https://support.symantec.com/en_US/article.TECH142841.html

Пример полной маршрутизации, маршрутизация работает в обе стороны:

dockerserver=172.19.0.1
dockerservernet=172.19.0.0
dockercontainer=172.19.0.25
local=192.168.111.23
localnet=192.168.111.0

### 0. create host route for gw and net route local->docker
[root@local]# route add -host $dockerservernet dev eth0
[root@local]# route add -net $dockerservernet gw $dockerserver netmask 255.255.255.0 dev eth0

### 1. route on dockerserver to local
[root@dockerserver ~]# route add -net $localnet netmask 255.255.255.0 dev eno1
[root@dockerserver ~]# ping $local

### 2. route FROM dockercontainer to local (via gateway dockerserver)
[root@dockercontainer /]# route add -net $localnet netmask 255.255.255.0 gw gateway dev eth1
[root@dockercontainer /]# ping $local
gaoithe
источник
0

Что касается части вопроса об установке постоянных маршрутов в экземпляре AWS EC2, работающем под управлением Ubuntu, то правильное место для размещения статических маршрутов для сохранения через перезагрузку, остановку и запуск AWS - это /etc/rc.local.

В этом файле вам нужно разместить маршруты в строке выше последней строки. Ваши строки должны выглядеть так:

route add -net XXX.XXX.XXX.XXX netmask XXX.XXX.XXX.XXX gw XXX.XXX.XXX.XXX

Выполнение sudoкоманды будет потеряно при перезагрузке.

Герцог Холл
источник