NanoPi R4S + OpenWrtã§v6ãã©ã¹åºå®IPã使ã£ã¦ã¿ã
- NanoPi R4S
- OpenWrt
- åæè¨å®
- ããã±ã¼ã¸ã®æ´æ°ã»è¿½å
- IPv6ãã¹ã¹ã«ã¼ã®è¨å®
- WAN6ã®ã¤ã³ã¿ã¼ãã§ã¤ã¹IDã®åºå®å
- IPv4 over IPv6ã®è¨å®
- ã¹ãããã·ã§ããã®ã¢ããã°ã¬ã¼ã
- é度測å®
NanoPi R4S
Gigabit LAN x 2 ã§æ ååºåãªãã¨ããããã«ã¼ã¿ã«ç¹åãããããªããã¤ã¹ã§4G RAMã¢ãã«ã¨1G RAMã¢ãã«ããããä»åã¯4Gã§ã±ã¼ã¹ä»ããè³¼å ¥ããã
ã¹ãã¬ã¼ã¸ã¯SBCãããmicro SDã«ã¼ãã§ãç¡ç·LANã¯ã¤ãã¦ããªãã
CPUã¯Rockchipã®armv8ã§RK3399ã¨ãããã®ãããã
OpenWrt
å¸è²©ã®ã«ã¼ã¿ã§åä½ã§ããã»ã©è»½éãªLinux distributionã§ãå¸è²©ã®ã«ã¼ã¿ã®çã®åãè§£æ¾ãããããã
ãããæ®å¿µãªãããNanoPi R4Såãã«ã¯stable releaseããã¦ãããéçºçã®snapshotã使ãå¿
è¦ãããã
è¿½è¨ 2022/9/6 22.03ããªãªã¼ã¹ãããNanoPi R4Såãã®ã¤ã¡ã¼ã¸ãstable releaseã¨ãã¦åºã¾ããã
åæè¨å®
OSæ¸ãè¾¼ã¿
downloads.openwrt.org
ãã
openwrt-22.03.0-rockchip-armv8-friendlyarm_nanopi-r4s-squashfs-sysupgrade.img.gz
ããã¦ã³ãã¼ãããé©å½ãªã©ã¤ã¿ã¼ã§microSDã«æ¸ãè¾¼ãã
microSDãNanoPiã«æ¿ã黿ºãã¤ãã¦LANãã¼ãã¨PCãæç·ã§ç¹ãã¨ãDHCPã§192.168.1.0/24
ã®ã¢ãã¬ã¹ãéã£ã¦ããã
$ ssh [email protected]
sshã§ç¹ãã¨ãã¹ã¯ã¼ããªãã«ãã°ã¤ã³ã§ããã®ã§ããããã
root@OpenWrt:~# passwd
ãã¹ã¯ã¼ãã®è¨å®ãããã
䏿¦exit
ã§PCã«æ»ãssh-keyã®è¨å®ããã(OpenWrtã§ä½¿ããã¦ããSSHãµã¼ãã§ããdropbearã¯yubikeyã§ä½¿ã£ã¦ãecdsaã«å¯¾å¿ãã¦ããªããããæ°ãã«ed25519ã§éµãä½ãå¿
è¦ããããããã§çµæ§ããã£ãâ¦)ã
ssh-copy-id
ã使ãã¨dropbearã«åãããè¨å®ããã¦ãããã®ã§ä¾¿å©(~/.ssh/authorized_key
ã§ã¯ãªã/etc/dropbear/authorized_keys
ã«è¿½è¨ããå¿
è¦ããã)ã
$ cd ~/.ssh $ ssh-keygen -t ed25519 $ ssh-copy-id -i id_ed25519 [email protected]
ããã§
$ ssh [email protected]
ã§ãã¹ã¯ã¼ããªãã§ãã°ã¤ã³ã§ããããã«ãªã£ãã
ãããã¯ã¼ã¯ã®åæè¨å®
OpenWrtã§ã¯å種è¨å®ã¯/etc/config/
以ä¸ã«ä¿åããã¦ããuci
ã³ãã³ãã§æä½ãããã¨ãã§ããã
ä¾ãã°ãããã¯ã¼ã¯ã«é¢ããè¨å®ã¯/etc/config/network
ã«ãããåæç¶æ
ã§ã¯ãã®ããã«ãªã£ã¦ã
root@OpenWrt:~# cat /etc/config/network config interface 'loopback' option device 'lo' option proto 'static' option ipaddr '127.0.0.1' option netmask '255.0.0.0' config globals 'globals' option ula_prefix 'fd56:d548:f6c2::/48' config device option name 'br-lan' option type 'bridge' list ports 'eth1' config device option name 'eth1' option macaddr 'ab:cd:ef:gh:ij:kl' config interface 'lan' option device 'br-lan' option proto 'static' option ipaddr '192.168.1.1' option netmask '255.255.255.0' option ip6assign '60' config device option name 'eth0' option macaddr '12:34:56:78:90:ab' config interface 'wan' option device 'eth0' option proto 'dhcp' config interface 'wan6' option device 'eth0' option proto 'dhcpv6'
ãã®ãã¡ã¤ã«ãuci
ã³ãã³ãçµç±ã§è¦ãã¨
root@OpenWrt:~# uci show network network.loopback=interface network.loopback.device='lo' network.loopback.proto='static' network.loopback.ipaddr='127.0.0.1' network.loopback.netmask='255.0.0.0' network.globals=globals network.globals.ula_prefix='fd56:d548:f6c2::/48' network.@device[0]=device network.@device[0].name='br-lan' network.@device[0].type='bridge' network.@device[0].ports='eth1' network.@device[1]=device network.@device[1].name='eth1' network.@device[1].macaddr='ab:cd:ef:gh:ij:kl' network.lan=interface network.lan.device='br-lan' network.lan.proto='static' network.lan.ipaddr='192.168.1.1' network.lan.netmask='255.255.255.0' network.lan.ip6assign='60' network.@device[2]=device network.@device[2].name='eth0' network.@device[2].macaddr='12:34:56:78:90:ab' network.wan=interface network.wan.device='eth0' network.wan.proto='dhcp' network.wan6=interface network.wan6.device='eth0' network.wan6.proto='dhcpv6'
ãã®ããã«ãªãã
OpenWrtã¯ããã©ã«ãã§LANããã¤ã¹ã¨WLANããã¤ã¹ãããªãã¸ãã¦ãããããbr-lan
ã¨ããããã¤ã¹ãå®ç¾©ããã¦ããããããlan
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¨ãªã£ã¦ããã
ããããNanoPi R4Sã«ã¯WLANããã¤ã¹ã¯ãªããããã®ããªãã¸ããã¤ã¹ãåé¤ãã¦ããã
ãã¡ã¤ã«ãç´æ¥ç·¨éãã¦ããããuci
ã³ãã³ãã§è¨å®ãã¦ãããããä»åã¯uci
ã³ãã³ãã§è¨å®ãè¡ãã
ã¤ãã§ã«lanã«ããipv6ã®è¨å®ãæ¶ãã¦ããã
root@OpenWrt:~# uci delete network.@device[0] root@OpenWrt:~# uci set network.lan.device=eth1 root@OpenWrt:~# uci delete network.lan.ip6assign='60' root@OpenWrt:~# uci show network network.loopback=interface network.loopback.device='lo' network.loopback.proto='static' network.loopback.ipaddr='127.0.0.1' network.loopback.netmask='255.0.0.0' network.globals=globals network.globals.ula_prefix='fd56:d548:f6c2::/48 network.@device[0]=device network.@device[0].name='eth1' network.@device[0].macaddr='ab:cd:ef:gh:ij:kl' network.lan=interface network.lan.device='eth1' network.lan.proto='static' network.lan.ipaddr='192.168.1.1' network.lan.netmask='255.255.255.0' network.@device[1]=device network.@device[1].name='eth0' network.@device[1].macaddr='12:34:56:78:90:ab' network.wan=interface network.wan.device='eth0' network.wan.proto='dhcp' network.wan6=interface network.wan6.device='eth0' network.wan6.proto='dhcpv6
commitãè¡ããã¨ã«ããè¨å®ãã¡ã¤ã«ãæ´æ°ãããã
root@OpenWrt:~# uci commit network root@OpenWrt:~# cat /etc/config/network config interface 'loopback' option device 'lo' option proto 'static' option ipaddr '127.0.0.1' option netmask '255.0.0.0' config globals 'globals' option ula_prefix 'fd56:d548:f6c2::/48' config device option name 'eth1' option macaddr 'ab:cd:ef:gh:ij:kl' config interface 'lan' option device 'eth1' option proto 'static' option ipaddr '192.168.1.1' option netmask '255.255.255.0' config device option name 'eth0' option macaddr '12:34:56:78:90:ab' config interface 'wan' option device 'eth0' option proto 'dhcp' config interface 'wan6' option device 'eth0' option proto 'dhcpv6'
ããã±ã¼ã¸ã®æ´æ°ã»è¿½å
ããã§NanoPiã®WANãã¼ãã«æ¢åã¤ã³ã¿ã¼ããã(DHCPã§ã¢ãã¬ã¹ãå²ãå½ã¦ããã)ãæ¥ç¶ããã
# ååã¯è¨¼ææ¸ãåãã¦ãããããããã§ãã¯ãããã«è¡ã root@OpenWrt:~# opkg update --no-check-certificate # Webã¤ã³ã¿ã¼ãã§ã¤ã¹ root@OpenWrt:~# opkg install luci-ssl
IPIP6ããã±ã¼ã¸ã®ä½æ
v6ãã©ã¹åºå®IPã§ä½¿ç¨ããIPIP6ãã³ãã«ã«é¢ããããã±ã¼ã¸ã¯å ¬å¼ã«ã¯ãªãããã github.com ãã¡ãã使ç¨ããã¦ããã ããã
ã«ã¹ã¿ã ãã«ãããã®ã¯ããªãæéãªã®ã§ããã±ã¼ã¸ãæä½ããããã¨ã«ããã
# ipip6ããã±ã¼ã¸ä½æ $ mkdir ipip6 $ cd ipip6 ## control.tar.gzã®ä½æ $ mkdir control $ cd control $ cat << EOS > ./control Package: ipip6 Version: 0.1 Depends: libc, kmod-ip6-tunnel, resolveip Source: feeds/base/package/network/ipv6/ipip6 SourceName: ipip6 License: GPL-2.0 Section: net SourceDateEpoch: 1641284700 Maintainer: kenjiuno <[email protected]> Architecture: all Installed-Size: 2716 Description: Provides support for ipip6 (RFC2473) in /etc/config/network. EOS $ cat << EOS > ./postinst #!/bin/sh [ "${IPKG_NO_SCRIPT}" = "1" ] && exit 0 [ -s ${IPKG_INSTROOT}/lib/functions.sh ] || exit 0 . ${IPKG_INSTROOT}/lib/functions.sh default_postinst $0 $@ EOS $ cat << EOS > ./postinst-pkg [ -n "${IPKG_INSTROOT}" ] || { rm -f /tmp/luci-indexcache rm -rf /tmp/luci-modulecache/ killall -HUP rpcd 2>/dev/null exit 0 } EOS $ cat << EOS > ./prerm #!/bin/sh [ -s ${IPKG_INSTROOT}/lib/functions.sh ] || exit 0 . ${IPKG_INSTROOT}/lib/functions.sh default_prerm $0 $@ EOS $ chmod +x postinst postinst-pkg prerm $ tar --numeric-owner --group=0 --owner=0 -czf ../control.tar.gz ./ $ cd .. ## data.tar.gzã®ä½æ $ mkdir data $ cd data $ mkdir -p ./lib/netifd/proto $ mkdir -p ./www/luci-static/resources/protocol $ wget -O ./lib/netifd/proto/ipip6.sh https://github.com/HiraokaHyperTools/openwrt-ipip6/raw/main/net/ipv6/ipip6/files/ipip6.sh $ wget -O ./www/luci-static/resources/protocol/ipip6.js https://github.com/HiraokaHyperTools/openwrt-ipip6/raw/main/net/ipv6/ipip6/files/ipip6.js $ chmod +x ./lib/netifd/proto/ipip6.sh $ tar --numeric-owner --group=0 --owner=0 -czf ../data.tar.gz ./ $ cd .. ## debian-binaryã®ä½æ $ cat << EOS > ./debian-binary 2.0 EOS ## ipip6_0.1_all.ipkã®ä½æ $ tar --numeric-owner --group=0 --owner=0 -czf ./ipip6_0.1_all.tar.gz ./debian-binary ./data.tar.gz ./control.tar.gz $ mv ipip6_0.1_all.tar.gz ../ipip6_0.1_all.ipk
åºæ¥ä¸ãã£ããipip6_0.1_all.ipk
ãNanoPiã«æã£ã¦ãããã¤ã³ã¹ãã¼ã«ããã
root@OpenWrt:~# opkg install ./ipip6_0.1_all.ipk
ããã§NanoPiãåèµ·åããWANã«æ¿ãã¦ããã±ã¼ãã«ãONUç´çµã¸ã¨å¤ããã
IPv6ãã¹ã¹ã«ã¼ã®è¨å®
Webã¤ã³ã¿ã¼ãã§ã¤ã¹(https://192.168.1.1)ãéããNetwork
->Interface
ã«ããWAN6
ãEditããã
DHCP Server
ã®ã¿ãã«è¡ããSet up DHCP Server
ãæ¼ãã
IPv6 Settings
ã®ã¿ãã«è¡ããDesignated master
ã«ãã§ãã¯ãå
¥ããå
¨ã¦relay mode
ã«ããã
åæ§ã«LAN
ãè¨å®ããã
ä»åº¦ã¯DHCPv6 Service
ã®ã¿server mode
ã«ãããã以å¤ã¯relay mode
ã«ããã
Announced IPv6 DNS servers
ã«Public DNSãµã¼ãã®IPv6ã¢ãã¬ã¹ãå
¥ããã
- 2001:4860:4860::8888 # Google
- 2606:4700:4700::1111 # CloudFlare
NDP-Proxy slaveã«ã¯ãã§ãã¯ãå ¥ããªã
次ã«Advanced Settings
ã®ã¿ãã«è¡ãDHCPä¼ããDNSãµã¼ãã®è¨å®ããã
ã
DHCP-Options
ã®ã¨ããã« 6,8.8.8.8,1.1.1.1
ã¨å
¥ããã
6ãDNSã®è¨å®ã§ãã以éã«ã³ã³ãåºåãã§ãã¢ãã¬ã¹ãå ¥ããã
ããã§LANå´ã«ã¤ãªããPCããIPv6ã¢ã¯ã»ã¹ãå¯è½ã¨ãªãã
WAN6ã®ã¤ã³ã¿ã¼ãã§ã¤ã¹IDã®åºå®å
åºå®IPãµã¼ãã¹ã®IPIP6ãã³ãã«ãå¼µãã«ã¯ãã¼ã«ã«ï¼èªèº«ï¼ã®IPv6ã¢ãã¬ã¹ã®ã¤ã³ã¿ã¼ãã§ã¤ã¹IDãæå®ããããã®ã§ãªãã¨ãããªãã®ã§ä¸æ¸ãããã
root@OpenWrt:~# uci set network.wan6.ifaceid='::[ISPããéç¥ãããã¤ã³ã¿ã¼ãã§ã¤ã¹ID]' root@OpenWrt:~# uci commit network
IPv4 over IPv6ã®è¨å®
Add new interface...
ãæ¼ããProtocol
ã IPv4 over IPv6 (ipip6)
ã鏿ããã
Tunnel remote IPv6 address
ã«v6ãã©ã¹ã®BRã®ã¢ãã¬ã¹ãå
¥ããã
Your global IPv4 address
ã«ã¯ISPããéç¥ãããåºå®IPv4ã¢ãã¬ã¹ãå
¥ããã
Local IPv6 address
ã¯ç©ºã«ããï¼ã¹ã¯ãªã¼ã³ã·ã§ããã§ã¯ä¾ç¤ºç¨ã¢ãã¬ã¹ãå
¥ãã¦ããï¼ã
Firewall Settings
ã®ã¿ãã§wan
ã¾ã¼ã³ã«é©å¿ããã
ããã§ãIPv4ã§ã®ã¢ã¯ã»ã¹ãå¯è½ã¨ãªãã
ã¹ãããã·ã§ããã®ã¢ããã°ã¬ã¼ã
ã¢ããã°ã¬ã¼ããè¡ãã¨è¨å®ã¯ä¿æãããããããã±ã¼ã¸ã¯åæç¶æ ã«ãªãã®ã§å度ã¤ã³ã¹ãã¼ã«ããã
root@OpenWrt:~# wget https://downloads.openwrt.org/releases/22.03.0/targets/rockchip/armv8/openwrt-22.03.0-rockchip-armv8-friendlyarm_nanopi-r4s-squashfs-sysupgrade.img.gz root@OpenWrt:~# sysupgrade -v ./openwrt-22.03.0-rockchip-armv8-friendlyarm_nanopi-r4s-squashfs-sysupgrade.img.gz # åèµ·åããããæ´æ°ããã root@OpenWrt:~# opkg update root@OpenWrt:~# wget https://static.akashisn.info/packages/openwrt/ipip6_0.1_all.ipk root@OpenWrt:~# opkg install ./ipip6_0.1_all.ipk root@OpenWrt:~# opkg install luci-ssl luci-i18n-base-ja luci-i18n-firewall-ja luci-i18n-opkg-ja # 以ä¸ã好ã¿ã§ root@OpenWrt:~# opkg install map ds-lite iptables-mod-ipopt root@OpenWrt:~# opkg install ca-certificates root@OpenWrt:~# opkg install qrencode wireguard-tools luci-proto-wireguard luci-app-wireguard luci-i18n-wireguard-ja root@OpenWrt:~# opkg install openvpn-openssl kmod-ovpn-dco openvpn-easy-rsa luci-app-openvpn luci-i18n-openvpn-ja root@OpenWrt:~# opkg install ddns-scripts-cloudflare luci-app-ddns luci-i18n-ddns-ja root@OpenWrt:~# opkg install acme acme-dnsapi luci-app-acme luci-i18n-acme-ja root@OpenWrt:~# reboot
é度測å®
2ã¹ã¬ãããã使ããã¦ããªãããã ãã
ååã«é度ãåºã¦ããã