RaspberryPiが二重にIPアドレスを取得してしまった件

dhcpcd.confと/etc/network/interfacesの二重存在による弊害みたいです。

Raspberry Piにつながらない


ふとVPNを接続しようと思うとつながらない。
ついでに起動していたメインPCからssh接続もつながらない。

という状況に陥りました。出先で。
この時点で考えられる原因は

  • 何らかの原因でRaspberryPiのシステムがダウン
  • ネットワークの問題

「上だったら原因究明面倒だなぁ…」なんて考えていたときTwitterにて


は?
おまえ何sshやVPNつながらないくせして呟けてんの?廃人なの?

ネットワークの問題と判明

RaspberryPiの生存確認用として運用していたCPU温度のおかげでRaspberryPi自体は生きている事が判明したので、ネットワークの問題だと確定しました。
というのも、VPNやSSHはIPv4のみ。TwitterはIPv6対応です。
VPNのサービスが停止していた可能性もありますが、cronが稼働しているのにSSHがダウンしているとは考えにくいです。
外出先でしたが、幸運な事にメインPCは起動中だったのでTeamViewerを利用してまずはルーターを再起動します。
すると固定しているはずのRaspberryPiになぜかDHCPが振られているわけです。
それもブリッジ構成のはずなのに元のeth0のMACアドレス宛に

私の構成としては
eth0にbr0をブリッジさせ、br0には192.169.91.9/24が振られています。
この固定は/etc/network/interfacesに記述しており、それで通信できていたので放置していました。
しかし、どうやらRaspberryPiはとりあえずeht0がDHCPを使用するという仕様らしく、不要なはずのeth0にもDHCPが振られていました。
ただすぐにbr0にブリッジされるため、eth0についたIPは破棄されるはずです。
ルーター側で無闇に固定されなければ
この辺でルーターで91.9/24を固定してしまったのがとりあえずの原因と判断し、それを解除。再起動させました。
すると91.9/24にbr0が。91.2/24にeth0がそれぞれ割り当てられました。
この状態になるとVPNでのアクセスも復旧しましたので、とりあえず出先での作業はそこであきらめました。

eth0とDHCPを切り離す

出先から帰宅後。ローカル環境(SSHだけど)でいろいろ作業していたところ、ようやく全貌が見えてきました。

  • eth0にはDHCPで91.2/24が。br0には/etc/network/interfacesの記述で91.9/24
  • ifconfigではeth0には16~のローカルアドレスが入っていると思いきや/24のアドレスが実は当てられていた

fingやIPスキャナーなどのアプリではRaspberryPiが二つのIPアドレスを取得しているとのことで、あまり気分のいいものではありません。
ということで、eth0がDHCPを取得しないよう、設定することにします。

Raspbian jessie で bridge する備忘録Raspbian jessie で bridge する備忘録 

こちらのサイトによると、やはりeth0は何が何でもとりあえずDHCPを行う仕様のようです。
とりあえず、サイトに従い、dhcpcd.confに記述します。

denyinterfaces eth0

これでeth0にDHCIPによってIPアドレスが振られることはなくなりました。
あと、/etc/network/interfacesでIPアドレスを固定することは御法度のようですので、ここで固定してしまいます。

interface br0
static ip_address=192.168.91.9/24
static routers=192.168.91.1
static domain_name_servers=192.168.91.1

※IPアドレスは状況に応じて変更してください。

/etc/network/interfacesへの記述はeht0をbr0をブリッジする。という記述のみでもいいかと思います。

auto br0
iface br0 inet static
bridge_ports eth0
bridge_maxwait 10

ただ、一応保険のため、/etc/network/interfacesでも固定しておきます。

auto br0
iface br0 inet static
address 192.168.91.9
netmask 255.255.255.0
network 192.168.91.0
broadcast 192.168.91.255
gateway 192.168.91.1
bridge_ports eth0
bridge_maxwait 10

dhcpcd.confに記述した内容と差が無ければ特に問題も起きないかと思います。
あとはifconfigでeth0にIPが振られていないかどうかや、ルーターのDHCPサーバがeth0宛にIPアドレスを発行していない事を確認して、完了です。

おそらくこれで大丈夫だとは思いますが、しばらく様子見です。

追記


ケース買いました。ヒートシンクは別売ですが、ファン付なので夏場でも問題なさそうです。

今回は黒色を購入したのですが、もう売り切れのようです。
ただ、積層式ケースなので非常に頑丈っぽいです。おすすめです。