IPv4 over IPv6に対応させた記事に纏め直しています.こちらを参照ください.
WM×LI: Raspberry Pi を楽天ひかりのIPv4 over IPv6(DS-Lite・Xpass)に対応したルーターにする
【2020年7月24日追記】IPv6 に対応させました.
【2021年2月10日追記】DNS サーバも併用させました.
ようやく日本でも注文可能になったので早速,Raspberry Pi 4 を購入した.メモリ 4.0GB 搭載.Bluetooth 対応など,かなり機能が拡張されたが,個人的に熱いのは 5.0GHz帯の無線LANに対応したことだ.
今回はそのメリットを活かして,以前作成した無線LANルーターを 5.0GHz に対応させつつ,当時の欠点の克服,さらに今までに獲得したノウハウも詰め込んでいく.
一方,残念なことに5.0GHzの無線LAN に非対応の機器も僅かながら稼働中のため,USBドングルで拡張させ,2.4GHz の無線LAN も同時に動かす.
まず以前作成したルーターについては,下記の記事に残してある.
WM×LI: Raspberry Pi をルーター&無線LANルーター化する
このときは,eth0(WAN側の有線),eth1(LAN側の有線),wlan0(LAN側の無線) をすべて別セグメントに設定していたが,LAN側の有線と無線は同じセグメントにしたほうが便利なことが多い.長らくその手法がわからなかったが,ひょんなことから作成したラズパイのスイッチングハブ(下記,記事参照)を応用すれば,簡単に作れることがわかった.
WM×LI: Rapberry Pi をスイッチングハブ化する 【bridge-utils】
また,起動時の設定で cron の @reboot を使用していたが,/etc/rc.local に記述するほうが簡単なのでそちらを採用する.
前置きが長くなったが,ここから設定方法について記載していく.
最終型は以下の構成だ.
WAN側(eth0) :ラズパイにある有線LANポート.スイッチングハブと接続する. LAN側(eth1) :USB-NICで拡張した有線LANポート.WAN側のモデムと接続し,DHCPで自動的にIPアドレスを取得する. LAN側(wlan0):ラズパイにある無線LANポート.5.0GHz 無線LANアクセスポイントとして動作させる. LAN側(wlan1):USBドングルで拡張した無線LANポート.2.4GHz 無線LANアクセスポイントとして動作させる. Bridge(br0) :eth1,wlan0,wlan1をつなぐブリッジ.192.168.100.1/24に設定する. br0 に DPCPサーバー を設定し,接続した機器には自動でIPアドレスを振るように設定.
1.必要なソフトのインストール.
# apt install bridge-utils # apt install hostapd # apt install isc-dhcp-server # apt install radvd # apt install dnsmasq
2.ブリッジの設定.
/etc/network/interfaces(以下を,追記) ------------------------------ auto br0 iface br0 inet manual bridge_ports eth0 wlan0 wlan1 bridge_stp off bridge_maxwait 3
/etc/dhcpcd.conf(以下を,追記) ------------------------------ denyinterfaces eth0 wlan0 wlan1 interface br0 static ip_address=192.168.100.1/24 static ip6_address=fd00:0:0:1::1/64 static domain_name_servers=8.8.8.8 8.8.4.4
3.5.0GHz 無線アクセスポイントの設定.
/etc/default/hostapd(以下の通り,修正) ------------------------------ (修正前)#DAEMON_CONF="" (修正後)DAEMON_CONF="/etc/hostapd/hostapd.conf"
/etc/hostapd/hostapd.conf(新規作成) ------------------------------ interface=wlan0 bridge=br0 driver=nl80211 ssid=hogehoge5.0 hw_mode=a channel=36 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=piyopiyo wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP
4.2.4GHz 無線アクセスポイントの設定.
(以下のコマンドを実行) ------------------------------ # sed -e 's/hostapd\/hostapd.conf/hostapd\/hostapd2.conf/g' /etc/default/hostapd > /etc/default/hostapd2 # sed -e 's/hostapd\/hostapd.conf/hostapd\/hostapd2.conf/g' -e 's/default\/hostapd/default\/hostapd2/g' /lib/systemd/system/hostapd.service > /etc/systemd/system/hostapd2.service
/etc/hostapd/hostapd2.conf(新規作成) ------------------------------ interface=wlan1 bridge=br0 driver=nl80211 ssid=hogehoge2.4 hw_mode=g channel=1 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=piyopiyo wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP
5.DHCPサーバの設定.
/etc/default/isc-dhcp-server(以下の通り,修正) ------------------------------ (修正前)INTERFACESv4="" (修正後)INTERFACESv4="br0"
/etc/dhcp/dhcpd.conf(以下の通り,修正) ------------------------------ (修正前) option domain-name "example.org"; option domain-name-servers ns1.example.org, ns2.example.org; #authoritative (修正後) #option domain-name "example.org"; #option domain-name-servers ns1.example.org, ns2.example.org; authoritative subnet 192.168.100.0 netmask 255.255.255.0 { range 192.168.100.101 192.168.100.200; option domain-name-servers 192.168.100.1; option routers 192.168.100.1; option broadcast-address 192.168.100.255; default-lease-time 600; max-lease-time 7200; }
5.radvd の設定.
/etc/radvd.conf(新規作成) ------------------------------ interface br0 { AdvSendAdvert on; MinRtrAdvInterval 30; MaxRtrAdvInterval 100; prefix fd00:0:0:1::/64 { AdvOnLink on; AdvAutonomous on; AdvRouterAddr on; }; };
6.DNSサーバの設定.
/etc/dnsmasq.conf(以下の通り,修正) ------------------------------ (修正前)#domain-needed #bougus-priv (修正後)domain-needed (コメントを外す) bougus-priv (コメントを外す)
/etc/hosts(適宜,追記) ------------------------------ 192.168.100.XX hoge 192.168.100.XX piyo 192.168.100.XX fuga
7.IPv4 / IPv6 のフォワーディングを有効化.
/etc/sysctl.conf(以下の通り,修正) ------------------------------ (修正前)#net.ipv4.ip_forward=1 #net.ipv6.conf.all.forwarding=1 (修正後)net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1
8.iptables / ip6tablesの設定.
(以下のコマンドを実行) ------------------------------ # iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth1 -j MASQUERADE # ip6tables -t nat -A POSTROUTING -s fd00:0:0:1::/64 -o eth1 -j MASQUERADE
(以下のコマンドを実行.2行目以降はteeコマンドによる標準出力) ------------------------------ # iptables-save | tee /etc/iptables.settings # Generated by xtables-save v1.8.2 on Sat Dec 7 00:31:50 2019 *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A POSTROUTING -s 192.168.100.0/24 -o eth1 -j MASQUERADE COMMIT # Completed on Sat Dec 7 00:31:50 2019
(以下のコマンドを実行.2行目以降はteeコマンドによる標準出力) ------------------------------ # ip6tables-save | tee /etc/ip6tables.settings # Generated by xtables-save v1.8.2 on Fri Jul 24 09:08:36 2020 *nat :PREROUTING ACCEPT [64:6182] :INPUT ACCEPT [6:1518] :POSTROUTING ACCEPT [7:649] :OUTPUT ACCEPT [13:1225] -A POSTROUTING -s fd00:0:0:1::/64 -o eth1 -j MASQUERADE COMMIT # Completed on Fri Jul 24 09:08:36 2020
/etc/rc.local(追記) ------------------------------ /sbin/iptables-restore /etc/iptables.settings && printf "[ OK ] IPv4 Tables Restore : Success\n" /sbin/ip6tables-restore /etc/ip6tables.settings && printf "[ OK ] IPv6 Tables Restore : Success\n"
9.各設定を起動時に自動的に読み込めるよう以下の通り,systemd の設定を変更する.
(以下のコマンドを実行) ------------------------------ # systemctl unmask hostapd.service # systemctl enable hostapd.service # systemctl enable hostapd2.service # systemctl enable isc-dhcp-server.service # systemctl enable dnsmasq.service # systemctl enable radvd.service
10.DHCPサーバのバグ対応(起動後に時間を空けて,デーモンを再起動する)
【2020年7月14日修正】
sleep 5で足りないことがあったため,whileループで成功するまで無限にリスタートするように修正した.
その際,成功タイミングを確認できるようログも出力するように改良した.
/etc/rc.local(追記) ------------------------------ while true ; do sleep 5 systemctl restart isc-dhcp-server && break printf "[ NG ] Restart ISC-DHCP-SERVER : Failure\n" done printf "[ OK ] Restart ISC-DHCP-SERVER : Success\n"
11.無線LANアダプタのPower Managementを無効にする.【2020年8月2日追記】
Power Managementが有効になっていると,作成したアクセスポイントが不安定になるため無効化する.
/etc/rc.local(追記) ------------------------------ sudo /sbin/iw dev wlan0 set power_save off printf "[ OK ] Power Management : Off\n"
12.再起動して,設定を反映する.
以上.
0 件のコメント:
コメントを投稿