Я определил подсеть на eth0
в /etc/network/interfaces
с:
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
Эта подсеть будет использоваться для передачи с Raspberry Pi, соединенным на моем порте Ethernet. Интернет-соединение не нужно потому что уже обеспеченный Wi-Fi.
Я ожидал, что мой ноутбук получит статический IP-адрес 192.168.1.1, когда я работаю sudo ifup eth0
и это имеет место. Однако route -n
шоу:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
... (bunch of things) ...
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Из заключенной в кавычки ссылки:
, Если клиент DHCP пытается получить адрес, но не удается найти сервер DHCP после тайм-аута и период повторений, он случайным образом примет адрес из этой сети. Это позволяет связь с хостами, которым не удалось получить адрес DHCP.
Однако Ваш интерфейсы файл запрашивает статический IP-адрес, который, вероятно, невозможен, таким образом, никакой допустимый адрес не был дан.
192.168.1.1 вероятно адрес маршрутизатора или другой точки доступа, с которой Вы пытаетесь соединиться. Поэтому адрес не предоставят. Кроме того, если Вы будете ожидать соединяться с Интернетом, то необходимо будет указать серверы имен DNS. Позвольте мне предложить:
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 192.168.1.1
, Конечно, проверяют точные детали перед продолжением.
Перезапуск интерфейс:
sudo ifdown eth0 && sudo ifup -v eth0
Проверка:
ping -c3 www.ubuntu.com
Как другие упомянули, 169.254.0.0
присутствует в Вашей таблице маршрутизации, потому что ifup
настраивает link-local
сеть.
Для предотвращения этого рассмотрите использование ifconfig
вместо ifup
.
При необходимости, выполнение ifdown
сначала.
sudo ifdown eth0
sudo ifconfig eth0 192.168.1.1
ifconfig
меньше работает и не читает /etc/network/interfaces
.
должно быть возможно совместно использовать доступ в Интернет с Пи. Необходимо включить пакетную передачу в ядре на ноутбуке. Я думаю, что это может быть сделано без перезагрузки. Я сделал это в прошлом, но не знаю, как сделать это от вершины моего услышанного. Это могло бы помочь:
На RFC 3927 (шахта акцента):
Для участия в глобальных сетях IP хост должен быть
настроенный с IP-адресами для его интерфейсов, любой вручную
пользователь или автоматически из источника в сети, такой как a
Сервер Протокола динамического конфигурирования узлов (DHCP). К сожалению,
такая конфигурационная информация адреса не может всегда быть доступной.
Поэтому выгодно для хоста смочь зависеть от a
полезное подмножество сетей IP функционирует даже когда никакой адрес
конфигурация доступна. Этот документ описывает, как хост может
автоматически настройте интерфейс с адресом IPv4 в 169.254/16 префиксе, который допустим для связи с другими устройствами, подключенными к тому же медосмотру (или логичен), ссылка.
Так, для суммирования 169.254/16 подсеть была зарезервирована для обеспечения связи между два физически (или логически, например, через переключатель) подключенные устройства, не имея необходимость полагаться на DHCP или ручное присвоение статических IP-адресов.
Заключить статью Wikipedia в кавычки о частных сетях,
Если хост в сети IEEE 802 (Ethernet) не может получить сетевой адрес через DHCP, адрес от 169.254.1.0 до 169.254.254.255 может быть присвоен псевдослучайным образом.
Как пример его использования, скажите, что у Вас есть два встроенных устройства, которые должны общаться друг с другом через прямое соединение Ethernet, но Вы хотите, чтобы одно или оба устройства сначала искали DHCP, таким образом, у них также есть возможность того, чтобы быть соединенным в локальную сеть. Когда устройства подключены непосредственно вместе и нет никакого доступного DHCP, устройства могут использовать протокол, такой как многоадресная передача, DNS для обнаружения друг друга автоматически, но каждого устройства должен сначала иметь некоторый произвольный IP-адрес, присвоенный, таким образом, они могут на самом деле говорить друг с другом по каналу Ethernet. Таким образом операционная система автоматически присваивает IP-адрес устройству Ethernet из 169.254/16 сети.
Теперь, что касается того, почему тот маршрут находится там в таблице маршрутизации по умолчанию..., если Вы смотрите на /etc/networks
, Вы видите, что 'локальная для ссылки' сеть определяется как являющийся в этой подсети:
$ cat /etc/networks
# symbolic names for networks, see networks(5) for more information
link-local 169.254.0.0
Если Вы слушаете совет этого файла и проверяете man networks
, Вы будете видеть:
Этот файл читается маршрутом (8) и netstat (8) утилиты.
Таким образом, маршрут создается автоматически на начальной загрузке после route
чтения тот файл.
Маршрут только необходим, если Вы планируете на самом деле использовать местные связи ссылки и не хотите присваивать статический IP-адрес подключенным устройствам. Но это не делает ничего плохого для оставления его внутри, если Вы не делаете.
Однако, если Вы действительно хотите удалить его, можно сделать так с
sudo route del -net 169.254.0.0 gw 0.0.0.0
Или удалить его постоянно, необходимо смочь просто прокомментировать его запись в /etc/networks
и перезагрузка.