Когда требуется сеть, широковещание и шлюз для ручной настройки сетевого интерфейса?

10

https://wiki.debian.org/NetworkConfiguration#Bridging_without_Switching

Приведенный выше URL говорит следующее. Но мне не ясно, когда они являются необязательными, а когда нет. Не могли бы вы предоставить мне ссылку на ссылки, которые описывают это? Спасибо.

Если вы настраиваете его вручную, то примерно так будет установлен шлюз по умолчанию (сеть, широковещание и шлюз необязательны):

auto eth0
iface eth0 inet static
    address 192.0.2.7
    netmask 255.255.255.0
    gateway 192.0.2.254
user1424739
источник
2
В последних версиях Ubuntu, которые используют dnsmasq, вам также необходимо объявить DNS-серверы имен.
chili555
@ chili555, это работает, если вы добавите пакет resolvconf. Прочитайте мой ответ внизу под этим. ;-) Ты в порядке с ответом, user1424739?
Андерс
Я полагаю, что в последних версиях Ubuntu resolvconf установлен по умолчанию; нет ??
chili555
1
Не могли бы вы уделить время на рассмотрение ответа @Anders? Смотрите, что мне делать, когда кто-то отвечает на мой вопрос?
user.dz
@ chili555 Да, это так. Но я просто хотел прояснить связь между этим пакетом и dns-серверами в / e / n / interfaces. Извините, если мне было неясно.
Андерс

Ответы:

25

Как настроить статический IP-адрес и почему

Обратите внимание! Я не говорю о других способах настройки сети, таких как NetworkManager. Любое устройство, упомянутое в /etc/network/interfaces, не затронуто NM

Чтобы иметь возможность общаться через IP-сеть (IPv4 и IPv6), компьютер должен знать, какой у него IP-адрес. Поэтому для addressтого, чтобы сообщить компьютеру, нужна директива.

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

Так как же компьютер узнает, когда он общается с компьютером в той же локальной сети? При использовании сетей netmask, где сетевая часть адреса установлена ​​на единицы, а часть хоста установлена ​​на нули. Таким образом, выполняя побитовую операцию И между каждым битом в IP-адресе и маской сети, мы получим сетевой адрес IP-адреса, где часть узла равна нулю. Поэтому, если мы сделаем это на IP-адресе компьютеров и IP-адресах других компьютеров, мы получим каждый сетевой адрес. Если они равны, это означает, что компьютеры находятся в одной сети и могут напрямую общаться друг с другом.

Если сетевые адреса не равны, они находятся в разных локальных сетях и не могут напрямую взаимодействовать друг с другом. Затем компьютер должен использовать специальный компьютер, который подключен к другим локальным сетям. Этот компьютер является маршрутизатором (который также может иметь брандмауэр и NAT). Поэтому, когда компьютер хочет общаться с другими компьютерами за пределами локальной сети, ему нужно знать адрес этого компьютера, который установлен с помощью gatewayдирективы. Если другой интерфейс уже установил gatewayзначение, вы не должны и не должны устанавливать другую директиву шлюза для этого интерфейса. В gatewayдирективе устанавливает маршрут по умолчанию для компьютера, так что вам нужно только один для IPv4 и только один для IPv6 на каждой машине. Этот сетевой адрес может быть установлен вручную с помощью networkдирективы.

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

networkАдрес интерфейса требуется рассчитывать только один раз и обычно рассчитывается правильно из этого addressи netmaskдиректив. То же самое с broadcastадресом. Так что вам не нужно их устанавливать. Фактически, если вы установите одно или оба неправильных значения, вы можете потерять соединение с Интернетом и другими компьютерами в вашей локальной сети. Поэтому, если у вас нет странных значений, позвольте компьютеру рассчитать их для вас.

Таким образом, минимальные статические настройки или раздел /etc/network/interfacesмогут выглядеть следующим образом для устройства eth1в частной сети:

iface eth1 static inet
     address   192.168.44.10
     netmask   255.255.255.0
     gateway   192.168.44.1

Как работает разрешение имен и как оно связано с DNS.

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

Обычно это контролируется файлом /etc/nsswitc.confи строкой, начинающейся с hosts:. Если вы попросите компьютер подключиться к компьютеру my.example.com, он изучит этот файл и попытается определить IP-адрес по имени my.example.com. Этот файл на самом деле не отвечает на вопрос «какой IP-адрес у my.example.com», он просто сообщает компьютеру, где он может найти ответ.
Обычно он пытается /etc/hostsсначала файл для статических локальных имен, затем avahi mDNSдля динамических локальных имен, а затем ресовлер DNS-имени домена, чтобы получить имя из Интернета.

Если некоторые из них не отвечают на ваши вопросы, это может показаться, что компьютер застрял на некоторое время. Так что, если вы получите это, сначала проверьте разрешение имени.

Таким образом, добавив статические адреса, вы можете просто добавить его в свой /etc/hostsфайл. Кстати, если у вас есть статический адрес, вам, вероятно, следует изменить IP-адрес вашей машины на ваш IP-адрес, а не по умолчанию 127.0.1.1(который находится в локальной сети, где находится localhost, 127.0.0.1). Это работает нормально только для клиентов, а не для серверов.

Динамические адреса, которые вы получаете от машин Linux с avahiпакетом и от машин Apple (и MS Windows с iTunes?). Это обрабатывается «магией», и вам не нужно это исправлять.

DNS используется для доступа в Интернет, и вам нужно сообщить компьютеру, где находятся те DNS-серверы, которые вы хотите использовать, какой IP-адрес использовать и какой у вас DNS-домен по умолчанию.

Это делается в файле /etc/resolv.confи может быть статически настроено. Это не очень хорошо работает в нашем не столь статичном мире, поэтому обычно у вас есть пакет с именем resolvconfinstall. Это позволит вам настроить эти параметры в /e/n/interfacesфайле.

Поэтому, если мы предполагаем, что мы хотим добавить один из DNS-серверов Googles, 8.8.8.8а также DNS-сервер вашего интернет-провайдера 192.0.2.1и домен вашего my.example.orgдомена по умолчанию, вы просто отредактируете /etc/network/interfacesфайл и добавите эти две строки в раздел для статического устройства.

    dns-nameservers   8.8.8.8  192.0.2.10
    dns-search        my.example.org

Вы также можете заметить, что DNS-распознаватель будет использовать не более трех DNS-серверов. Пожалуйста, посмотрите это на manстранице resolv.conf. Как обычно, вы можете использовать команду man nsswitch.conf, man resolv.confи man resolvconfдля получения дополнительной информации.

Также обратите внимание, что я использую домен example.com и example.org и IP-сеть 192.0.2.0/24 для DNS-сервера ISP. Они явно определены для использования в примерах. См http://example.com/ или http://tools.ietf.org/html/rfc2606 и rfc5735

Как вы тогда проверяете, что это работает?
Вы можете сделать это разными способами, но я обычно использую

getent hosts my.test.com

проверить всю настройку для разрешения имен. Если я просто хочу проверить, работает ли DNS, я использую одну из следующих команд:

host my.test.com
dig my.test.com

Но помните, что те только проверяют DNS через настройки в /etc/resolv.confфайле, а не /etc/nsswitch.confчасть. Это может быть то, что вы хотите, или нет.

Андерс
источник
1
Хорошее объяснение, спасибо. Поскольку chili555 упоминает важность DNS для разрешения доменных имен, было бы хорошо, если вы добавите замечание по этому поводу. (Что касается подключений к Интернету или WAN, необходимо настроить все)
user.dz
Что-то вроде этого?
Андерс
1
Добро пожаловать. :-) Интересно, будет ли это достаточно хорошим ответом для пользователя 1424739
Андерс
Как /etc/internet/interfacesбы то ни было, Ubuntu собирается быть устаревшим, в пользу своего собственного NetPlan, см. /etc/netplan/*.yamlИ NM(который может быть изменен с помощью nm-tools).
Андерс