web-dev-qa-db-ja.com

Raspberrypiには静的IPアドレスとDHCPIPアドレスの両方があります

Raspbianを実行しているRaspberryPiを入手し、自宅のLAN(ISPのデフォルトルーター)でイーサネット経由で接続しました。ルーターは、192.168.0.10以降のアドレスをdhcpで提供するように構成されています。 Piに静的IPを与えたかったので、次のように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)

それでも、私のルーターは、ラズベリーがdhcp(192.168.0.10)から取得したIPを持っていることを示しています。最も奇妙なことは、192.168.0.10192.168.0.9ipsの両方でsshを使用してPiにアクセスできることです。なぜそれが起こるのか考えはありますか?与えた静的アドレスのみを持つようにPiを設定するにはどうすればよいですか?

編集:将来の参考のために:問題はraspbianの最後の更新のバグであり、他の人もそれを経験していることがわかりました( https://www.raspberrypi.org/forums/viewtopic.php?f= 28&t = 111709

4
Cantfindname

構成には3つの問題があります。1つは、DHCPリースの有効期限が通常1時間に設定されていることですが、それよりもはるかに長くなることもあります。静的アドレスはDHCPサーバーに完全に認識されていないため、イーサネットMACアドレスが2つのIPアドレスに関連付けられていることを知る方法はありません。

これまでのところ、誰かがその名前でRPIを検索した場合、接続はold IPアドレスに行われ、応答する人は誰もいません。このため、今後、SAMBAまたはBonjourサービスをアクティブ化しない限り、名前を介したRPIへの接続は不可能になります。

これが私がreserved addressesを好む理由です。DHCPは指定されたMACアドレスに常に同じIPアドレスを与えるように構成されていますが、DNSサーバーとマシン名のネゴシエーションが発生しますあたかも新しいリースがネゴシエートされていました。

次に、静的スタンザにDNSサーバーを構成していません。次の行を追加します。

dns-nameservers 8.8.8.8 8.8.4.4

(複数形、servers、および2つのIPアドレス間の句読点の欠如に注意してください)。 Google DNSが気に入らない場合は、自分に合ったものに交換してください。

第3に、ネットワークとネットマスクを指定すると、ブロードキャストアドレスが間違っています。/etc/network/interfacesスタンザとifconfigの出力(ちなみに、廃止されました。iproute2スイートのipを使用する必要があります)の両方で、 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トラフィックを含む)はLAN上の他のすべてのマシンによって無視されるため、近い将来確実に問題が増えるでしょう。

1
MariusMatutiae

Rasperry Pi Raspianに静的IPアドレスを設定する方法

静的IPを設定するために/etc/network/interfacesを使用しないでください。代わりに/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
XP1

最初にいくつかの背景。

Debian、したがってRaspbianには、ネットワークを構成する複数の方法があります。最も一般的に使用される2つはです。

  1. 「ifupdown」は、デスクトップやサーバーなどの静的ネットワークセットアップではうまく機能しますが、ローミングしているデバイスではあまりうまく機能しない従来の解決策です。
  2. ネットワークマネージャー。gnomeの人々が好むツールで、Debianデスクトップインストールでデフォルトで使用されるようになりました。動的な状況を適切に処理しますが、GUIが実行されておらず、policykitが正しく機能していない場合、かなり重く、操作が困難です。

Raspberry Pi Foundationは、これらのどちらも使用せず、代わりにraspbianイメージのネットワーク構成にdhcpcd5を使用することを選択しました。 dhcpcd5はDebianにパッケージ化されていますが、Raspberry Pi Foundationのラズベリーイメージは、デフォルトで使用することがわかっている唯一のDebianベースのシステムです。

彼らがifupdownからローミングデバイスをより適切に処理するものに移行したかった理由は理解できますが、なぜ彼らがネットワークマネージャーではなくdhcpcdを選択したのかはよくわかりません。たぶん彼らは、デスクトップのセットアップなどに統合する方が軽量で簡単だと感じたのでしょう。


とにかく、Raspberry Pi Foundationが行った選択により、/ etc/network/interfacesを介してIPアドレスを構成すると、ifupdownが期待どおりに静的アドレスを設定し、dhcpcdが実行され、dhcpアドレスも追加されます。

これには2つの可能な解決策があります。

  1. Dhcpcd構成を使用して、静的アドレスを設定します。
  2. Dhcpcd5を取り除き、ifupdownを使用してネットワークを構成します。

どちらがより良いオプションであるかは、おそらくPiを何に使用したいかによって異なります。

0
plugwash

narzanが指摘したように、ルーターにはまだ192.168.0.10のリースがある可能性があります。

ルーターを再起動することが役立つかどうかは明らかではありません。ルーターにログインしてみてください。

  1. 可能であれば、IPアソシエートをb8:27:eb:d2:e5:5bにクリアします。
  2. dHCPリーステーブルをクリアします(これにより、もちろん他のすべてのデバイスのIPが変更されます)。
0
Archemar