чи повинен шлюз бути в підмережі?


14

Я дивився на створення такого інтерфейсу в / etc / network / interfaces (це на debian), із шлюзом поза підмережею:

iface eth0 inet static
address 10.100.10.99
netmask 255.255.255.0
gateway 10.100.0.1

але "ifup --verbose eth0" дає мені лише це повідомлення про помилку:

ifconfig eth0 10.100.10.99 netmask 255.255.255.0
 route add default gw 10.100.0.1  eth0
SIOCADDRT: No such process
Failed to bring up eth0

Звичайно, зміна мережевої маски на 255.255.0.0 працює чудово.

Це навіть можливо, чи є щось інше, в чому проблема? Чи є спосіб отримати більше інформації з ifup? Я бачу в Інтернеті один допис, який підказує, що він повинен працювати.

Відповіді:


10

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

Зважаючи на деякий фон, пам’ятайте, що IP-пакет зазвичай містить адреси джерела та місця призначення: звідки він походить та куди він хоче піти. Як правило, маршрутизатори вирішують, як він туди потрапить.

Отже, коли ви надсилаєте свій IP-пакет через ваш мережевий маршрутизатор за замовчуванням, потрібно буде статися одне з двох речей.

  1. Маршрутизатор локальної мережі знає, як досягти маршрутизатора шлюзу за замовчуванням, і він погоджується з вашою ідеєю, що ваш пакет повинен бути відправлений через маршрутизатор шлюзу за замовчуванням, щоб дістатися до місця призначення. У цьому випадку, чому б не просто використовувати маршрутизатор локальної мережі як шлюз за замовчуванням?

  2. Маршрутизатор локальної мережі вважає (за замовчуванням) ваш пакет повинен бути відправлений через якийсь інший маршрутизатор, щоб дістатися до місця призначення. У цьому випадку ви повинні мати якийсь спосіб сказати це інакше. Ця можливість існує і називається "маршрутизація на джерело" ... але вона вважається ризиком безпеки, і більшість маршрутизаторів налаштовані на її ігнорування.

Нарешті, на мій досвід, інструмент iproute ( ip) Linux не дозволить вам додати маршрут, якщо до шлюзу не вдасться дістатися безпосередньо через інтерфейс локальної мережі.

Кілька посилань на маршрутизацію джерела:


4

Шлюз за замовчуванням повинен бути в тій самій підмережі, що і IP-адреса пристрою. Зазвичай це IP-адреса маршрутизатора мережі, до якої ви підключаєтесь. На сторінці Вікіпедії у стандартному маршруті :

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

У конфігураціях домашніх обчислень ISP часто надає фізичний пристрій, який одночасно підключає локальне обладнання до Інтернету і служить шлюзом. До таких пристроїв належать DSL-маршрутизатори та кабельні маршрутизатори.

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

Іншими словами, шлюз за замовчуванням забезпечує точку входу та точку виходу в мережу.


Але якщо є статичний маршрут до адреси, чи не може це бути шлюзом за замовчуванням, навіть якщо він не знаходиться в підмережі? (Ми тут розбираємось у технічних характеристиках та відходимо від належної практики).
kurtm

Статичний маршрут може бути маршрутом, тільки не шлюзом за замовчуванням (як я його розумію).
slm

2
Маршрут за замовчуванням ОБОВ'ЯЗКОВО знаходитися в одній підмережі. Маршрут за замовчуванням - це те, як ви відводите весь свій трафік із своєї підмережі та на іншу. Отже, якщо ви намагаєтеся отримати трафік з 10.100.10.99 до 10.100.0.1, вам потрібен "шлюз", щоб дістатися з мереж 10.100.10.0/24 до 10.100.0.0/24. 10.100.0.1 не може бути вашим шлюзом за замовчуванням, оскільки ви не можете його досягти за замовчуванням. Однак це може бути "a" шлюз. І навіть це може бути "шлюз", на який ви відправляєте весь свій трафік (як тільки ви скажете йому, як дістатися до іншої мережі).
coteyr

1
@coteyr: і все ж у мене це працює. Якщо є статичний маршрут до іншої підмережі, а шлюз за замовчуванням знаходиться в цій підмережі, я можу додати маршрут за замовчуванням і ping / встановити з'єднання без проблем. Це може бути менш ефективно, але це працює.
siride

Я б сказав: маршрут - це те, як ви виводите весь свій трафік із своєї підмережі та на іншу. Вказуючи маршрут, ви можете вказати сегмент IP (або супермережа - комбінація сегментів) і шлюз для доступу до цього сегмента / супермережі, або ви можете вказати "для всього іншого, що не згадується в таблиці маршрутизації, використовувати це шлюз ". Останній є маршрутом за замовчуванням, а шлюз, який використовується в ньому, називається шлюзом за замовчуванням. Якщо у вас є лише один NIC, вам майже завжди потрібен лише маршрут за замовчуванням; але з кількома НІК вам можуть знадобитися й інші маршрути.
telcoM

2

У мене однакова проблема в декількох місцях із послугою Verizon ADSL. "Шлюз за замовчуванням" знаходиться в іншій підмережі. У нашому випадку нам потрібні загальнодоступні IP-адреси для того, щоб використовувати vpn ipsec від сайту до сайту. Для цього нам потрібно перевести шлюз DSL в режим мосту, щоб публічна IP-адреса була на нашому маршрутизаторі замість шлюзу DSL.

Більшість постачальників може це зробити досить легко, але Verizon, схоже, має труднощі. Використовуючи DS-шлюз D-Link 2750B, розміщуючи його в режимі мосту, технічні пристрої Verizon говорять мені використовувати шлюз за замовчуванням в окремій підмережі. Я перевірив це на своєму ноутбуці Windows 7, і хоча Windows надає повідомлення про помилку, що: "Ви ідіот, і це погана ідея - ви ВЖЕ хочете зберегти цю конфігурацію? Так / Ні", вона працює .

Однак програмне забезпечення з більш суворими переконаннями щодо охорони здоров'я, здається, захищає вас від себе ...

Все-таки я не можу допомогти, але думаю, що має бути спосіб її підробити ...


1

Це можливо, але, як пояснено у пов'язаній статті, ваша машина вже повинна знати, як дістатися до адреси шлюзу. Це означає, що вам потрібно буде post-upвручну додавати маршрути замістьgateway

iface eth0 inet static
  address 10.100.10.99
  netmask 255.255.255.0
  post-up ip route 10.100.0.0/24 via 10.100.10.x # router that can route you to the 10.100.0.0/24 network
  post-up ip route 0.0.0.0 via 10.100.0.1

2
Ці ip routeкоманди вийдуть з ладу, якщо ви спробуєте їх ... навіть якщо ви додасте відсутні addкоманди.
Джандер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.