読者です 読者をやめる 読者になる 読者になる

メモ的ななにか

@Maleic1618

Raspberry Piをルーター&DHCPサーバーにしようとしてできなかった話

自分用のログなので悪しからず.

事の発端

今まで使っていたBuffalo製のルーターが壊れたので新しいものを買うことになったのですが,違う会社のルーターも使ってみるかということでNEC製のルーターを買いました.

これが大外れでPPTPサーバーの機能はないしログ出力もない.というわけでこれはブリッジ専用機にしてRaspberry Piルーター&DHCPサーバーにすることにしました.こうすればWebサーバーにするときも楽そうだしPPTPサーバーも簡単に追加できそうですからね.

とりあえず以下のような構成にしたい.

(the Internet)
      |
      |
(Raspberry Pi)
      |
      |
(ゴミルーター)←ブリッジモード
      |
      |←無線
(PC, iPad, etc..)

…というわけでRaspberry Piのデータを全部消してあれこれやったのですがうまくいってません.以下そのログ.

初期設定

Raspbianの公式サイトにOSのイメージファイルがそのまま置いてあるのでこれをSDカードに展開します. SSHを使ってusername:pi password:raspberry でログインできるはず. SoftPerfect Wi-Fi Guardとかを使えばRaspberry PiのIPはわかる.

rootのパスを変更し,さらにユーザーを追加.visudo で追加した一般ユーザーがsudo出来るようにする.その後piは削除.SSHではrootにはアクセスできないので注意.

$ sudo passwd root
$ sudo adduser [username]
$ visudo

(new userに切り替えて)

$ sudo userdel -r pi

アップデートと必要なソフトだけインストールする.DHCPサーバーはdnsmasqを使う予定.

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt install vim dnsmasq dnsutils netfilter-persistent

あれこれの設定

IPは次のようにしたい.(よくわかってない)

  • Raspberry Piのthe Internet側のIPは192.168.122.1,LAN側のIPは192.168.122.2

  • DHCPの割り当て範囲は192.168.122.10-30

とりあえずRaspberry PiのIP固定をする.

/etc/network/interface

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.122.1
network 192.168.122.0
netmask 255.255.255.0
broadcast 192.168.122.255
gateway 192.168.0.1

auto eth1
iface eth1 inet static
address 192.168.122.2
netmask 255.255.255.0
gateway 0.0.0.0

eth0がthe Internet側,eth1がLAN側(ゆくゆくはブリッジモードのルーターにつなぐ側) gatewayがよくわかってないのでここがなんか問題な気がする.要見直し.

次にiptablesの設定.

$ sudo iptables -A FORWARD -i eth1 -s 192.168.122.0/24 -m conntrack --ctstate NEW -j ACCEPT
$ sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$ sudo iptables -t nat -A POSTROUTING -s 192.168.122.0/24 -j MASQUERADE
$ sudo iptables-save
$ sudo /etc/init.d/netfilter-persistent save
$ sudo /etc/init.d/netfilter-persistent restart

dnsmasqの設定.とりあえずデフォルトの設定ファイルが長いので別のファイルも設定ファイルにするように設定.

/etc/dnsmasq.conf

conf-file=/etc/dnsmasq.more.conf

/etc/dnsmasq.more.conf

interface=eth1
dhcp-range=192.168.122.10,192.168.122.30,12h
dhcp-option=option:dns-server,192.168.122.2,8.8.8.8
dhcp-option=option:router,192.168.0.1
dhcp-leasefile=/var/lib/misc/dnsmasq.leases
log-dhcp

これ大丈夫なんですかね.logは/var/log/syslogに出るはず. 最後に起動時にdnsmasqをロードするように設定

$ sudo systemctl dnsmasq enable

参考:

dnsmasq - ArchWiki

ここまでやって再起動. eth0とthe Internet,eth1を適当なPCにつないだけどダメっぽかった. ログは読んだけどよくわからなかった.

とりあえずここまで.