должен ли шлюз быть в подсети?

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. Маршрутизатор локальной сети считает (по умолчанию), что ваш пакет должен быть отправлен через другой маршрутизатор, чтобы добраться до места назначения. В этом случае вам нужно как-то сказать иначе. Эта возможность существует и называется «маршрутизацией от источника» ... но считается угрозой безопасности, и большинство маршрутизаторов настроены на ее игнорирование.

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

Пара ссылок на исходную маршрутизацию:

Jander
источник
4

Шлюз по умолчанию должен находиться в той же подсети, что и IP-адрес устройства. Обычно это IP-адрес маршрутизатора сети, к которой вы подключаетесь. Со страницы википедии по маршруту по умолчанию :

В компьютерных сетях шлюз - это узел (маршрутизатор) в сети TCP / IP, который служит точкой доступа к другой сети. Шлюз по умолчанию - это узел в компьютерной сети, который используется сетевым программным обеспечением, если IP-адрес не соответствует другим маршрутам в таблице маршрутизации. Фактически это IP-адрес маршрутизатора, к которому подключена сеть вашего ПК.

В домашних вычислительных конфигурациях провайдер часто предоставляет физическое устройство, которое одновременно подключает локальное оборудование к Интернету и служит в качестве шлюза. К таким устройствам относятся маршрутизаторы DSL и кабельные маршрутизаторы.

В организационных системах шлюз - это узел, который направляет трафик с рабочей станции в другой сегмент сети. Шлюз по умолчанию обычно соединяет внутренние сети и внешнюю сеть (Интернет). В такой ситуации узел шлюза также может выступать в качестве прокси-сервера и брандмауэра. Шлюз также связан как с маршрутизатором, который использует заголовки и таблицы переадресации для определения места отправки пакетов, так и с коммутатором, который обеспечивает фактический путь для пакета в шлюзе и из него.

Другими словами, шлюз по умолчанию обеспечивает точку входа и точку выхода в сети.

SLM
источник
Но если есть статический маршрут к адресу, разве это не может быть шлюз по умолчанию, даже если он не находится в подсети? (Здесь мы углубляемся в технические детали и избегаем хорошей практики).
Куртм
Статический маршрут может быть маршрутом, но не шлюзом по умолчанию (насколько я понимаю).
SLM
2
Маршрут по умолчанию ДОЛЖЕН быть в той же подсети. Маршрут по умолчанию - это способ получения всего трафика из вашей подсети в другую. Таким образом, если вы пытаетесь получить трафик от 10.100.10.99 до 10.100.0.1, вам нужен «шлюз» для доступа из сетей 10.100.10.0/24 к 10.100.0.0/24. 10.100.0.1 не может быть вашим шлюзом по умолчанию, потому что вы не можете достичь его по умолчанию. Однако это может быть «шлюз». И это может быть даже «тот» шлюз, на который вы отправляете весь свой трафик (когда вы сообщаете ему, как попасть в другую сеть).
coteyr
1
@coteyr: и все же у меня это работает. Если есть статический маршрут к другой подсети, и шлюз по умолчанию находится в этой подсети, я могу добавить маршрут по умолчанию и выполнить ping / make соединения без проблем. Это может быть менее эффективно, но это работает.
Сирида
Я бы сказал: маршрут - это то, как вы получаете весь свой трафик из своей подсети в другую. При указании маршрута вы можете либо указать сегмент IP (или суперсет - комбинацию сегментов) и шлюз для доступа к этому сегменту / суперсети, либо вы можете указать «для всего остального, что не упомянуто в таблице маршрутизации, используйте это». шлюз». Последний является маршрутом по умолчанию, и используемый в нем шлюз называется шлюзом по умолчанию. Когда у вас есть только один сетевой адаптер, вам почти всегда нужен только маршрут по умолчанию; но с несколькими сетевыми картами вам могут понадобиться и другие маршруты.
Телеком
2

У меня та же проблема в нескольких местах с услугой Verizon ADSL. «Шлюз по умолчанию» находится в другой подсети. В нашем случае нам нужны публичные IP-адреса, чтобы использовать ipsec site-to-site vpn. Для этого нам необходимо перевести шлюз DSL в режим моста, чтобы общедоступный IP-адрес был на нашем маршрутизаторе, а не на шлюзе DSL.

Большинство провайдеров могут сделать это довольно легко, но Verizon, похоже, испытывает трудности. Используя DSL-шлюз 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
jordanm
источник
2
Эти ip routeкоманды не будут выполнены, если вы попробуете их ... даже если вы добавите отсутствующую addкоманду.
Jander