ジャンル不定の日記です。

ArmbianでOrange pi R1をルーター化1

メインPCが復活(再インストール)したんで、Orange pi R1のルーター化に挑戦した。
miZyは読み込み専用になっちゃうし、OpenWRTはwifiデバイスを使うのが難しそうだったし、どうせSDになるならArmbianでいいや。
というわけで、とりあえずArmbianを使ってルーター化に挑戦することにした。

Orange pi R1は有線インターフェイスが2つあるが、Armbianだとeth0とudevが命名したデバイスだったが、eth0とeth1にしたい。
公式の製品ページ見ると、eth1はボードのシリアルピンの側にあるmacアドレスの書いたシールが貼ってある方みたい。
こっちがRTL8152Bでeth0の方がCPU内臓の。
/etc/udev/rules.d/10-network.rulesを
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="macアドレス", NAME="eth1"
で設定したらeth1になる。
/etc/udev/rules.d/以下にあればファイル名はどうでもいい。

UTCになってたからタイムゾーンの設定をしようとしたのだが、armbian-configというArmbianの設定ツールがあるらしいので入れて使ってみた。
そしたら、
Network > Hotspot なる項目が!
これやったらアクセスポイント化に使えるhostapdを設定してくれた。
のだが、ほとんど手動で書き換える必要があったから微妙かな・・・
armbian-configは最初シリアルコンソールで使ったが、画面崩れてまともに操作できないのでsshで接続して使ったほうが良かった。

armbian-configで設定したらできた?
hostapdの設定ファイルは /etc/hostapd.conf にあった。
country_code=JP
に変更したのと、wpa_passphraseにパスフレーズを変更した。
最初USになってたが、JPじゃないと違法電波が飛ぶかもしれないらしい。

armbian-config でHotspot設定をしたら wlan0 にIPアドレスが設定されてたが、
設定ファイルは /etc/network/interfaces.d/armbian.ap.nat みたい。
172.からのクラスB?アドレスが設定されてたが、192.168からの見慣れたアドレスにしたいので変えた。
/etc/network/interfaces.d/armbian.ap.nat
# armbian NAT hostapd
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
プライベートアドレスの仕様忘れてたんで調べたが、
ネットワーク範囲の先頭と末尾のアドレスは割り当てられないので、192.168.1.0-192.168.1.255のネットワークの場合192.168.1.0と192.168.1.255はアドレスに使えないので192.168.1.1になる。
192.168.0.0-192.168.0.255のネットワークにすることも考えたが、ルーターを2台置くような感じにすると192.168.0.0-192.168.255.255の範囲で上位ネットワークを作ることになるので3桁目も0にしないほうが良さそう。

再起動したらwlan0のアドレスが予定通り192.168.1.1に変わってたが、起動ログで dnsmasq がエラー。
これは小規模なdnsサーバーとdhcpサーバーとして機能するサービスみたいで、ルーターにするのに丁度いいね。
設定ファイルは /etc/dnsmasq.conf にあった。
interface=wlan0
#listen-address=192.168.1.1
bind-interfaces
server=8.8.8.8
domain-needed
bogus-priv
dhcp-range=192.168.1.100,192.168.1.150,12h
listen-addressとdhcp-rangeが変更前の172.からのアドレスだったのでコケたぽい。
そして、iptablesを設定してから気づいたが、listen-addressは設定してるとNAT設定したあとにまた起動時にdnsmasq がエラー吐いた。
コメントアウトした。
DNS機能はなしでDHCPだけにすることはできないのかな?

iptablesの設定はかなりハマったが、
/etc/systemd/system/armbian-restore-iptables.service が起動時に /etc/iptables.ipv4.nat を読み込むみたい。
なので、iptablesをいじったあとは、
$ sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
で保存されて再起動後も有効になるぽい。
調べてたら iptables-persistent を入れて/etc/iptables/rules.v4 に保存するみたいな情報が散乱してたが、
iptables-save は最初から入ってて、/etc/iptables/rules.v4は起動時に読み込まれない。

iptablesの設定は、
$ sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
1行だけ。
設定してから上のコマンドで保存すれば再起動後も有効。
-t nat がnatテーブルの指定。
-A POSTROUTING がPOSTROUTINGチェインに追加。
-s 192.168.1.0/24 が送信元アドレス。
-o eth0が転送先インターフェイス。
-j MASQUERADE が処理内容。
で、Androidスマホで確認したが192.168.1.0/24の範囲からの通信をグローバルに出れるインターフェイスに転送された。

これでwifi中継ルーター的なことはできるようになったが、
eth1をメインPCとつなぐLANポートにしたいんで、そっちもNATとdhcpdの設定が必要。
dhcpdにdnsmasqを使うのは正解なのか?別のにするかも・・・

あとは、今回はeth0はルーターにつないだが、pppoeでプロバイダにつなぐようにする。
ってすればルーター化が完成。
wifiの電波強度も屋内全域で問題ないか確認だな。

続きは明日やる。