Raspberry pi має статичну та ip адресу dhcp


4

У мене в програмі Raspberry Pi працює Raspbian, підключений через Ethernet в домашній локальній мережі (на маршрутизаторі за промовчанням провайдера). Маршрутизатор налаштований так, щоб давати адреси 192.168.0.10зверху dhcp. Я хотів надати статичний ip Pi, тому призначив 192.168.0.9його, редагуючи /etc/network/interfacesтак:

auto lo
iface lo inet loopback

# auto eth0
# allow-hotplug eth0
# iface eth0 inet manual
iface eth0 inet static
address 192.168.0.9
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.1.255
gateway 192.168.0.1

auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Після перезавантаження та запуску ifconfig я бачу правильно (?) Мій ip 192.168.0.9:

eth0      Link encap:Ethernet  HWaddr b8:27:eb:d2:e5:5b
          inet addr:192.168.0.9  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::ba27:ebff:fed2:e55b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:17019 errors:0 dropped:16 overruns:0 frame:0
          TX packets:1707 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2183986 (2.0 MiB)  TX bytes:241230 (235.5 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:264 errors:0 dropped:0 overruns:0 frame:0
          TX packets:264 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:21840 (21.3 KiB)  TX bytes:21840 (21.3 KiB)

Тим не менш, мій маршрутизатор показує, що в малині є ip, узятий з dhcp ( 192.168.0.10), і найдивніше, що я можу отримати доступ до Pi з ssh на обох 192.168.0.10і 192.168.0.9ips. Будь-яка ідея, чому це відбувається? Як я можу встановити, щоб Pi мав тільки статичну адресу, яку я йому даю?

Редагувати: Для подальшої довідки: я з’ясував, що проблема - помилка останнього оновлення raspbian і інші відчувають його також ( https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=111709 )


2
ifconfigзастаріло. Використовуйте ip addrкоманду та надайте її вихід.
Даніель Б

1
Або надайте малині статичний IP від ​​маршрутизатора, і не забудьте перезапустити маршрутизатор! для очищення оренди
Нарзан Q.

1
Маршрутизатор обробляє DHCP, а не Pi. Вам потрібно встановити статичний IP на маршрутизаторі для своєї MAC-адреси Pi. Якщо ви не можете цього зробити через обмеження вашого провайдера на маршрутизаторі, придбайте новий маршрутизатор.
AStopher

Дивно, що він відповідає з двома адресами одночасно. Чи можливо ваш бездротовий не використовує 192.168.0.10? Чи має запис DHCP для Pi той самий mac-адресу, що і у ifconfig eth0?
Райан Бабчишин

Ну і до речі: чи оренда DHCP все ще триває, абсолютно не має значення. Звичайний комп'ютер скидає пакети, не спрямовані на його IP-адреси.
Даніель Б

Відповіді:


1

У вашій конфігурації є три проблеми: по-перше, DHCP-оренда має час закінчення, який, як правило, встановлюється на 1 годину, але також може бути набагато довшим. Оскільки статичні адреси абсолютно невідомі DHCP-серверу, неможливо, можливо, дізнатися, що ваша MAC-адреса Ethernet тепер пов'язана з двома IP-адресами.

Поки, якщо хтось шукав ваш RPI через його ім'я, з'єднання було б зроблено зі старою IP-адресою, де ніхто не відповів би. З цієї причини відтепер підключення до RPI через його ім'я буде неможливим, якщо ви не активуєте на ньому послуги SAMBA або Bonjour.

Ось чому я вважаю за краще reserved addresses, коли DHCP налаштований так, щоб завжди давати однакову IP-адресу вказаній MAC-адресі, але узгодження DNS-серверів та імені машини відбуваються так, ніби переговори про нову оренду.

По-друге, ви не налаштували сервери DNS у вашій статичній строфі: додайте наступний рядок,

dns-nameservers 8.8.8.8 8.8.4.4

(зауважте множину, сервери та відсутність розділових знаків між двома IP-адресами). Якщо вам не подобається Google DNSes, замініть тим, що вам підходить.

По-третє, у вас неправильна адреса трансляції, з огляду на вашу мережу та мережну маску: і у вашій /etc/network/interfacesстрофі, і у виході ifconfig (який, до речі, є застарілим, ви повинні використовувати ipз iproute2набору), це можна побачити з бути 192.168.1.255. Це має бути замість 192.168.0.255 . Коли ці обчислення складні, використовуйте ipcalc:

ipcalc 192.168.0.0/24
Address:   192.168.0.0          11000000.10101000.00000000. 00000000
Netmask:   255.255.255.0 = 24   11111111.11111111.11111111. 00000000
Wildcard:  0.0.0.255            00000000.00000000.00000000. 11111111
   =>
Network:   192.168.0.0/24       11000000.10101000.00000000. 00000000
HostMin:   192.168.0.1          11000000.10101000.00000000. 00000001
HostMax:   192.168.0.254        11000000.10101000.00000000. 11111110
Broadcast: 192.168.0.255        11000000.10101000.00000000. 11111111
Hosts/Net: 254                   Class C, Private Internet

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


Проблема полягає в тому, що dhcpcd не налаштований на Raspian. Дивіться мою відповідь: Raspberry pi має статичну та dhcp ip адресу: http://superuser.com/questions/983378/raspberry-pi-has-both-static-and-dhcp-ip-address/1097873#1097873
XP1

0

як зазначив Нарзан, ваш маршрутизатор, швидше за все, має оренду на 192.168.0.10.

Не ясно, що перезавантаження вашого маршрутизатора буде корисною, спробуйте увійти в роутер і

  1. очистити IP-зв’язок, b8:27:eb:d2:e5:5bякщо це можливо.
  2. чітка таблиця оренди DHCP (це, звичайно, змінить IP-адреси всіх інших пристроїв).

Роутер - це не проблема. Проблема полягає в тому, що dhcpcd не налаштований на Raspian. Дивіться мою відповідь: Raspberry pi має статичну та dhcp ip адресу: http://superuser.com/questions/983378/raspberry-pi-has-both-static-and-dhcp-ip-address/1097873#1097873
XP1

0

Як встановити статичну IP-адресу на Rasperry Pi Raspian

Не використовуйте /etc/network/interfacesдля встановлення статичного IP. Використовуйте /etc/dhcpcd.confзамість цього.

Відновіть свій /etc/network/interfacesвихідний файл або скасуйте зміни:

sudo nano /etc/network/interfaces

Замініть свої зміни ручними налаштуваннями в /etc/network/interfaces:

iface eth0 inet manual

Налаштування dhcpcd:

sudo cp /etc/dhcpcd.conf /etc/dhcpcd.conf.bak
sudo nano /etc/dhcpcd.conf

Додайте параметри статичного профілю внизу /etc/dhcpcd.conf:

interface eth0
static ip_address=192.168.1.100/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

Видалити оренду:

sudo rm /var/lib/dhcp/*

Перезавантажте:

reboot

Інший варіант - відключити dhcpcd. Після відключення dhcpcd ви можете використовувати /etc/network/interfacesнатомість статичний IP.

Налаштування /etc/network/interfaces:

sudo cp /etc/network/interfaces /etc/network/interfaces.bak
sudo nano /etc/network/interfaces

Замініть ручне налаштування на статичні параметри в /etc/network/interfaces:

auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
network 192.168.1.1
broadcast 192.168.1.255
gateway 192.168.1.1

Налаштування dhcpcd:

sudo cp /etc/dhcpcd.conf /etc/dhcpcd.conf.bak
sudo nano /etc/dhcpcd.conf

Додайте опцію внизу /etc/dhcpcd.conf:

denyinterfaces eth0

Або ви можете відключити службу dhcpcd:

systemctl disable dhcpcd.service

Видалити оренду:

sudo rm /var/lib/dhcp/*

Перезавантажте:

reboot

Джерело:


1
"Не використовуйте / etc / network / інтерфейси для встановлення статичного IP-адреси". - Я не погоджуюся. Це може бути життєздатним рішенням про помилку, яку переживає ОП, але загалом це не є гарною порадою.
Даніель Б

1
@Daniel B, це не помилка. Власний /etc/network/interfacesфайл Raspian навіть говорить про використання /etc/dhcpcd.confнатомість: "Для статичного IP-адреси зверніться до /etc/dhcpcd.conf та" man dhcpcd.conf "". Це рекомендований Raspian спосіб встановлення статичного IP.
XP1

Це дійсно має бути прийнятою відповіддю.
Dan Loewenherz

0

Спочатку деяке тло.

У Debian і, отже, Raspbian є кілька способів налаштування мережі. Два найпоширеніших є.

  1. "ifupdown", традиційне рішення, яке добре працює для статичних мережевих налаштувань, таких як настільні ПК та сервери, але насправді не дуже добре працює на пристроях, які бродять навколо.
  2. мережевий менеджер, інструмент, який надають люди-гноми і тепер використовуються за замовчуванням у настільних установках Debian. Добре впорається з динамічними ситуаціями, але досить важкий і з ним важко працювати, якщо у вас не працює графічний інтерфейс та функціонування правил.

Фонд малинового пі вирішив не використовувати жодне з цього, а замість цього використовувати dhcpcd5 для конфігурації мережі у своїх зображеннях малинових. dhcpcd5 упакований у Debian, але зображення малинових пі-файлів малинових зображень є єдиною системою на базі Debian, яку я знаю, щоб використовувати її за замовчуванням.

Я можу зрозуміти, чому вони хотіли перейти від ifupdown до чогось, що краще обробляє роумінгові пристрої, але я не дуже впевнений, чому вони обрали dhcpcd через мережевого менеджера. Можливо, їм було легше або простіше інтегрувати їх у налаштування робочого столу чи щось таке.


У будь-якому випадку, через вибір програми Raspberry pi, якщо ви налаштовуєте IP-адресу через / etc / network / інтерфейси, тоді ifupdown встановлює вашу статичну адресу, як ви очікуєте, тоді dhcpcd приходить і додає dhcp-адресу.

Є два можливі рішення для цього.

  1. Використовуйте конфігурацію dhcpcd для встановлення статичної адреси.
  2. Позбавтеся від dhcpcd5 і налаштуйте мережевий солей за допомогою ifupdown.

Який кращий варіант, ймовірно, залежить від того, для чого ви хочете використовувати Pi.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.