Неможливо встановити статичний маршрут хосту - "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 у тому ж офісі, тому я хочу встановити статичний маршрут, щоб я не зв’язував наше основне з'єднання з Інтернетом і не впливав на моїх колег. Отже, мій план - встановити це поле зі статичним маршрутом.

З вікна 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?

Ви не можете додати маршрут (до будь-якої цілі) через шлюз, до якого ви безпосередньо не підключені, оскільки ваш комп'ютер не знає, як знайти шлях до маршрутизатора, не проходячи маршрут за замовчуванням.


Правильно, рішення про маршрутизацію потрібно встановити на 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. local -> 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

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команди буде втрачено при перезавантаженні.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.