В Linux, почему я не могу получить доступ к своей сети после подсети с маской 255.255.255.240?

331
user502336

Хорошо, сначала у меня есть система двойной загрузки. Linux Mint 18 (Сара) Корица и Windows 7 SP1. Хорошо, что я сделал это, потому что я новичок в Linux.

Когда я впервые установил Windows и Linux, я настроил LAN1 как 192.168.1.1/255.255.255.0. У меня не было проблем с доступом к LAN1 или Интернету из любой ОС.

Недавно я решил подсеть. Я изменил LAN1 на 192.168.64.80/255.255.255.240. Это дало мне xxx80 в качестве шлюза, 14 используемых IP-адресов как xxx81-xxx94, что достаточно, и xxx95 как широковещательную рассылку. Затем я перезагрузил маршрутизатор, и новые IP-адреса были переданы через DHCP. Сеть Windows получила данные DHCP, и я без проблем смог получить доступ к LAN1 и Интернету. Пробовал то же самое с Linux и не может получить доступ к чему-либо по LAN1 или Интернету. Обращаясь к сетевому апплету на рабочем столе и к настройке ifconfig через терминал, стало ясно, что Linux знает о новых данных DHCP. Так что я не понимаю, почему я ничего не могу получить!

Кто-нибудь знает особенности сетей Linux, так что я могу починить то, что явно требует ремонта?

Заранее спасибо.

0
"_Это дало мне xxx80 в качестве шлюза, _" Нет, это было бы неправильно. Это сетевой адрес. Вы не можете использовать сетевой адрес для хоста, например шлюза. Ron Maupin 7 лет назад 1
Конечно, это просто проблема терминологии. Для меня «шлюз» - это тот IP-адрес, по которому можно получить доступ к веб-конфигуратору с ПК в локальной сети. Это всегда первый IP подсети. user502336 7 лет назад 0
@ user502336 это правильно, но комментарий @ RonMaupin остается в силе. IP-адрес первого используемого хоста 192.168.64.80/255.255.255.240 равен 192.168.64.81. аналогично тому, как первый используемый IP-адрес хоста на 192.168.1.0/255.255.255.0 равен '192.168.1.1'. quixotic 7 лет назад 3

3 ответа на вопрос

4
Ron Maupin

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

Для вашего примера 192.168.64.80/28:

Network = 192.168.64.80 First host = 192.168.64.81 Last host = 192.168.64.94 Broadcast = 192.168.64.95 

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

ОК, Рон, если я неправильно настроил LAN1, почему у Windows нет проблем с Linux? Разве Windows достаточно умна, чтобы как-то преодолеть мою ошибку, а Linux нет? user502336 7 лет назад 0
Трудно сказать без дополнительной информации, но я рассказал вам, как вы должны использовать IP-адресацию для соответствия стандартам. Ваш шлюз не должен позволять вам устанавливать какой-либо из его интерфейсов на сетевой адрес, поэтому шлюз может иметь неверную маску, настроенную на шлюзе, или может быть что-то неправильно установлено на вашем DHCP-сервере. Вы не предоставили никаких конфигураций каких-либо устройств. Ron Maupin 7 лет назад 1
ОК, эти условия прямо с маршрутизатора: user502336 7 лет назад 0
Я вижу, что вы говорите, у вас настроен маршрутизатор, но я не вижу фактической конфигурации маршрутизатора в вашем вопросе. Предполагая, что у вас есть маска, как вы утверждаете, и что маршрутизатор является вашим шлюзом, маршрутизатор не должен позволять вам устанавливать сетевой адрес в качестве адреса на своем интерфейсе. Если это так, то с этим что-то ужасно не так. Сетевой адрес не может использоваться для адреса хоста в сети. Ron Maupin 7 лет назад 1
ОК, эти термины прямо от маршрутизатора: Назначение IP-адреса: 192.168.64.80; Маска подсети: 255.255.255.240; DHCP Настройка начального адреса IP-пула (необязательно): 192.168.64.81; Размер пула: 14. Тогда мой коммутатор, а не маршрутизатор, настроен на получение первого в пуле. В Windows я могу получить доступ к веб-конфигуратору маршрутизаторов через 192.168.64.80. Вам нужно больше или этого достаточно, чтобы увидеть мою глупость? (Ваш сайт рассчитал время. Это то, что я хотел сказать выше.) user502336 7 лет назад 0
@ user502336 Просмотр конфигурации компьютера Linux может помочь. Вывод `ifconfig -a` и / или` route -n` был бы полезен. David Schwartz 7 лет назад 0
Судя по всему, у вашего роутера какое-то дрянное программное обеспечение. Вы просто не можете использовать сетевой адрес в качестве адреса хоста в сети, IPv4 не работает таким образом. Вы должны отредактировать свой вопрос, включив в него настройки маршрутизатора, ПК с Windows и Linux. Ron Maupin 7 лет назад 1
если он назначил маршрутизатору адрес 192.68.64.80, возможно, ему вместо этого удалось создать сеть `192.68.64.79 / 28`. quixotic 7 лет назад 0
@ Дэвид Шварц: Для этого потребуется перезагрузка, как я уже говорил, я использую систему с двойной загрузкой. Сейчас я использую раздел Windows, чтобы иметь возможность общаться с вами. user502336 7 лет назад 0
Спасибо Рон! Я посмотрю, что я могу сделать, чтобы исправить настройку маршрутизаторов, а затем вернусь к вам. По правде говоря, прошло довольно много времени с тех пор, как я делал подобные вещи. Недавно у меня был роутер, который прослужил 10 лет, это новая настройка, и у нее совершенно другой интерфейс, чем у старой. user502336 7 лет назад 0
0
ziya

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

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

Немного покопавшись, он вернулся к вопросу SU, который хорошо объясняет это: почему сетевой адрес не может быть действительным адресом хоста?

Прочитав немного, я понял, что за этим стоят исторические причины. На мой взгляд, в современных современных сетях CIDR нет практической причины, по которой сетевой адрес не должен использоваться в качестве адреса хоста, за исключением того, что из-за истории IPv4 все еще существуют некоторые инструменты и старые устройства, которые рассматривают сетевой адрес как широковещательный для сеть. Возможно, именно поэтому Windows, кажется, работает нормально с сетевым адресом, определяемым как хост в сети.

Я также попытался пропинговать сетевой адрес на моем macOS, и это работало как широковещательная рассылка. Может быть, это строгое соответствие RFC сетевых стеков на определенных ОС (а ваш роутер не основан на Linux? Может быть?). В RFC, кроме подсети / 32 (которая имеет только 2 адреса и делает ее идеальной для сетей «точка-точка», следовательно, не требуется широковещательная рассылка и т. Д.), Первый адрес, по-видимому, зарезервирован для представления «сети».

Как я уже упоминал ранее, я предлагаю рассмотреть ваши настройки. Онлайн калькулятор сети должен помочь. (После быстрого поиска в Google это выглядело как наиболее подходящее для настройки сети: https://www.tunnelsup.com/subnet-calculator/ )

0
Nevin Williams

Маршрутизаторы Cisco имеют команду глобальной конфигурации ip subnet-zero, которая разрешает использование сетевого адреса в качестве хоста. Однако не все реализации IP поддерживают это по умолчанию, как здесь.

Однако в более поздних версиях IOS, по-видимому, по умолчанию включен ip subnet-zero, поэтому ваш маршрутизатор, вероятно, не в своем уме, позволяя настроить его как таковой.

Однако ваш linux-бокс может быть не настроен на использование нулевой подсети. Там может быть sysctlнастройка; могут быть некоторые дополнительные ifconfigили routeфлаги для установки использования нулевой подсети. Тем не менее, я не использую Linux, и поэтому я не могу проверить, действительно ли какой-либо из методов googled для использования нулевой подсети действительно работает так, как задумано.

С сайта cisco по настройке подсети-ноль ..

Подсеть с адресом подсети 0 недопустима и категорически не рекомендуется (как указано в RFC 791) из-за путаницы, которая может возникнуть между сетью и подсетью, имеющей одинаковые адреса. Например, если сеть 131.108.0.0 находится в подсети как 255.255.255.0, подсеть 0 будет записана как 131.108.0.0, которая идентична сетевому адресу.

Вы можете использовать подсети all 0s и all 1s (131.108.255.0), даже если это не рекомендуется. Конфигурирование интерфейсов для подсети all 1s явно разрешено. Однако, если вам нужно все пространство подсети для ваших IP-адресов ... (используйте команду, выделенную жирным курсивом выше)

«Маршрутизаторы _Cisco имеют глобальную конфигурационную команду IP-подсеть-ноль, которая разрешает использование сетевого адреса в качестве хоста. _» Это не означает, что означает ноль подсети. Первоначально вы не могли использовать подсеть со всеми нулями или со всеми, как определено сетями классов. Сетевые классы были объявлены устаревшими с 1933 года RFC 1518 и 1519, которые определяли CIDR (_Classless_ междоменная маршрутизация). Он не имеет ничего общего с адресами хоста, только с адресами подсетей, которые являются нулями или единицами. Все нули или все адреса хостов все еще не являются действительными адресами хостов. Ron Maupin 7 лет назад 0