dhcpcd.confと/etc/network/interfacesの二重存在による弊害みたいです。
Raspberry Piにつながらない
ふとVPNを接続しようと思うとつながらない。
ついでに起動していたメインPCからssh接続もつながらない。
という状況に陥りました。出先で。
この時点で考えられる原因は
- 何らかの原因でRaspberryPiのシステムがダウン
- ネットワークの問題
「上だったら原因究明面倒だなぁ…」なんて考えていたときTwitterにて
@tos 2017-02-02_12:00 現在、Riki_piのCPU温度は 33.2 ℃です。
— ゆーとし (@yuutosi_hiyuu) 2017年2月2日
は?
おまえ何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を取得しないよう、設定することにします。
こちらのサイトによると、やはり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アドレスを発行していない事を確認して、完了です。
おそらくこれで大丈夫だとは思いますが、しばらく様子見です。
追記
ケース買いました。ヒートシンクは別売ですが、ファン付なので夏場でも問題なさそうです。
積層式ケースなので非常に頑丈っぽいです。おすすめです。