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.10
と192.168.0.9
ipsの両方でsshを使用してPiにアクセスできることです。なぜそれが起こるのか考えはありますか?与えた静的アドレスのみを持つようにPiを設定するにはどうすればよいですか?
編集:将来の参考のために:問題はraspbianの最後の更新のバグであり、他の人もそれを経験していることがわかりました( https://www.raspberrypi.org/forums/viewtopic.php?f= 28&t = 111709 )
構成には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上の他のすべてのマシンによって無視されるため、近い将来確実に問題が増えるでしょう。
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
ソース:
最初にいくつかの背景。
Debian、したがってRaspbianには、ネットワークを構成する複数の方法があります。最も一般的に使用される2つはです。
Raspberry Pi Foundationは、これらのどちらも使用せず、代わりにraspbianイメージのネットワーク構成にdhcpcd5を使用することを選択しました。 dhcpcd5はDebianにパッケージ化されていますが、Raspberry Pi Foundationのラズベリーイメージは、デフォルトで使用することがわかっている唯一のDebianベースのシステムです。
彼らがifupdownからローミングデバイスをより適切に処理するものに移行したかった理由は理解できますが、なぜ彼らがネットワークマネージャーではなくdhcpcdを選択したのかはよくわかりません。たぶん彼らは、デスクトップのセットアップなどに統合する方が軽量で簡単だと感じたのでしょう。
とにかく、Raspberry Pi Foundationが行った選択により、/ etc/network/interfacesを介してIPアドレスを構成すると、ifupdownが期待どおりに静的アドレスを設定し、dhcpcdが実行され、dhcpアドレスも追加されます。
これには2つの可能な解決策があります。
どちらがより良いオプションであるかは、おそらくPiを何に使用したいかによって異なります。
narzanが指摘したように、ルーターにはまだ192.168.0.10のリースがある可能性があります。
ルーターを再起動することが役立つかどうかは明らかではありません。ルーターにログインしてみてください。
b8:27:eb:d2:e5:5b
にクリアします。