You are in US.
It is 01:03 JST now.
ファンレス PC Ubuntu 22.04, 20.04 で超高速 DS-Lite(RFC6333) ルーター
バグ対応 update dec. 2023
こちら https://mxnl.com/ipoe-ip-set/ からどうぞ
機器性能など update June. 2023
IPv4ではトンネリング経由だけでなくIPv4網自身も混雑していますので過度な期待はしないで下さい。それでも speedtest.netで計測した値は下り816.69Mbps 上り 318.67Mbpsとかなり高速です。
ちなみに下記のネットワーク図1G網で、iperf3 計測値で941Mbpsのスループットが出ています。 ルーターをはじめとしたネットワーク機器でかなりの性能差は出ます。実際にRaspberry PIにインストールされたものはcpu稼働率100%で30Mbpsのスループットだという記事がありました。
また高速に接続したい方に向けて記述しているのでひかりテレビなどの使用は全く考慮していません。
思い切り余談ですが Intel I225-V 4個使いのファンレス機で遊んでいます。
ルーター設定手順
- ZOOT NATIVEの申し込み
ネットからの申込で最大2ヶ月無料で、途中で解約しても違約金などは一切ない。
このようなプロバイダーはまれで最近はクレジットカードのみだとか制限だけしてユーザーだけにリスクを負わせる。という事は全くなくかなり好感がもてます!
申し込みはこのリンクからも可能です。またIIJmioひかり IPoEオプション, OCN IPoE(要注意) もOKです。 - インターフェース設定 ZOOT NATIVE の接続は NGN(NTT IPv6網)に接続してIPv6の場合は直接WANに繋がりますが、IPv4にはip4ip6(ipip6)トンネリングで繋がります。セキュリティー面からもOSも必ずアップデートしてください。
netplanによる方法 - ufwの設定
- DNS(unbound)をインストール
- DHCP RAなどの設定
- ハードの一例
ネットワーク図
クリックで拡大 今回、作成する機器はブルーのDS-Liteルーターです。
x86_64のルーターを使用する理由
一部のサイトでは速度があまり上がらないという話がありますが、実際に使用しているルーターのパフォーマンスだけでなくネットワーク設計によりかなり違います。特に¥40,000以下の安価なWiFiルーターの脆弱なMPU使用した機器の性能やそれに繋がれたスマートフォンの様な重いGUI機器ではもちろん数百MBpsの速度はでないことは明らかです。そのおかげでマンションタイプのギガネットでも500MBPS程度以上のパフォーマンスは出ていているので、ネット混雑にはなりにくいため、ある意味 助けられているのかもしれません。昨今、自分でサーバーも設定せずに何処ぞのブログサイトで技術云々を語っている多数の方々には理解不能かもしれませんが・・・
ちなみに瞬間最大速度ではなく多数のタスクを処理できないと安定して高速はできません。
実際、Unnumberで市販で¥10,000程度の無線LANルーターを使ってギガビットLANで接続された機器より100MBPSのFTTHで性能の良いルーターを使用した機器の方がより高速で安定したものになるでしょう。
ちなみにルーターを作成するのですから当然LANポート、ネットワークデバイスは2つ以上必要です。
Netplanを使ったIPアドレスとトンネリング
IPv6のアドレスとgateway(IPv6)
Ubuntu 18.04.3のインストールされたものにNGNを接続するして “ip -6 address show” コマンドを実行すれば次のように表示されます。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 2409:cafe:dead:feed:2e6:4cff:fe68:a27/64 scope global dynamic mngtmpaddr noprefixroute <- これがIPv6 Wan側 IP
valid_lft 2591986sec preferred_lft 604786sec
inet6 fe80::2e6:4cff:fe68:a27/64 scope link
valid_lft forever preferred_lft forever
3: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 fe80::2e6:4cff:fe68:a26/64 scope link
valid_lft forever preferred_lft forever
netplan yamlファイルの設定
ルーターを作成するにはUbuntuサーバー版が良いのでNetworkmanager を使わない時のサンプルです。
通常、/etc/netplan/50-cloud-init.yaml 編集します。
network: ethernets: enp1s0: # RAで割当られたグローバルIP使用する場合は記述しない accept-ra: no # RA割当られたグローバルIPを書く場合はこの2行だけでOK dhcp4: no dhcp6: no # グローバルIPを固定化する場合(上記の様にgatewayを確認した上で記述) addresses: - 2409:cafe:dead:feed::801/64 gateway6: 2409:cafe:dead:feed::fffe # RA割当られたグローバルIPを書く場合は記述不要 # LAN 側 enp2s0: accept-ra: no addresses: - 192.168.1.1/24 - fd00:cafe::1/64 #if use static route routes: - to: 10.0.0.0/8 via: 192.168.1.254 on-link: true - to: 4.3.2.1/32 via: 192.168.1.254 on-link: true nameservers: addresses: - fd00:cafe::80a - 192.168.1.11 search: - ntools.net tunnels: ip6tnl1: mode: ipip6 #NTT 東日本の場合 remote: 2404:8e00::feed:100 #NTT 西日本の場合 remote: 2404:8e01::feed:100 #上記どちらかを記述
# グローバルIPを記述 local: 2409:cafe:dead:feed:2e6:4cff:fefe:cead # OCN等 mtu 設定が必要な場合
# mtu: 1460 #
routes: - to: 0.0.0.0/0 scope: link version: 2
Unbound インストール
別途ネームサーバーがあれば不要ですが、DS-Liteではダイナミックに通知されるので設定するのがお勧め。
sudo apt install unbound
unbound の設定ファイルは /etc/unbound/unbound.conf.d/unbound-local.conf で、編集は好みのエディターで以下の様なものがサンプルになります。設定は interface: に自分のIPアドレスをIPv4、IPv6 それぞれ設定すればOKです。
また、アクセスを許可する ネットアドレスを access-control: で設定します。下記のサンプルは、allow すなわち許可範囲で deny 禁止も可能です。Unboundに関しては日本Unboundユーザー会に詳しく解説されています。好みで適当なものでもOKです。
server: interface: 127.0.0.1 interface: 192.168.1.1 interface: fd00:cafe::1 interface: 2409:250::1fb access-control: 2409:250::/64 allow access-control: fd00:cafe::/64 allow access-control: 192.168.1.0/24 allow
ufw の設定
ufw 設定と言っても中身はiptables の設定で、Masquarade でLANとWANとの接続を行ったり、サービスを開放します。システムとしてしっかり設定をしてUbuntuのカーネル等のバージョンアップにもしっかりとした設定をして下さい。過去の遺物を使った設定や意味がわからずにやらないようにすることが寛容です。
forwarding 設定
/etc/ufw/sysctl.conf のエディト。9行目からコメントマーク#を消す。
Uncomment this to allow this host to route packets between interfaces
#net/ipv4/ip_forward=1
#net/ipv6/conf/default/forwarding=1
#net/ipv6/conf/all/forwarding=1 ↓ # Uncomment this to allow this host to route packets between interfaces
net/ipv4/ip_forward=1
net/ipv6/conf/default/forwarding=1
net/ipv6/conf/all/forwarding=1
/etc/default/ufw のエディト。19行目を編集。
# Set the default forward policy to ACCEPT, DROP or REJECT. Please note that # if you change this you will most likely want to adjust your rules DEFAULT_FORWARD_POLICY="Drop" ↓ DEFAULT_FORWARD_POLICY="ACCEPT"
/etc/ufw/before.rules のエディト。はじめにMasquaradeを記述
# # rules.before # # Rules that should be run before the ufw command line added rules. Custom # rules should be added to one of these chains: # ufw-before-input # ufw-before-output # ufw-before-forward # # Masquarade ここから *nat :POSTROUTING ACCEPT [0:0] :PREROUTING ACCEPT [0:0] -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE COMMIT # don't delete the 'COMMIT' line or these rules won't be processed # ここまで追加 # Don't delete these required lines, otherwise there will be errors *filter :ufw-before-input - [0:0] :ufw-before-output - [0:0] :ufw-before-forward - [0:0] :ufw-not-local - [0:0]
続いて /etc/ufw/before6.rules のエディト。/etc/ufw/before.rules と同様にMasquaradeを記述
# # rules.before # # Rules that should be run before the ufw command line added rules. Custom # rules should be added to one of these chains: # ufw-before-input # ufw-before-output # ufw-before-forward # # Masquarade ここから *nat :POSTROUTING ACCEPT [0:0] :PREROUTING ACCEPT [0:0] -A POSTROUTING -s fd00:cafe::/64 -j MASQUERADE COMMIT # don't delete the 'COMMIT' line or these rules won't be processed # ここまで追加 # Don't delete these required lines, otherwise there will be errors *filter :ufw6-before-input - [0:0] :ufw6-before-output - [0:0] :ufw6-before-forward - [0:0] :ufw6-not-local - [0:0]
以下のコマンドを実行してLAN側からのアクセスをすべて許可(外部からは不可)
ufw allow from 192.168.1.0/24 ufw allow from fd00:cafe::1 ufw allow from 2409:250::/64
DHCP RAなどの設定
Ubuntu 22.04 パッケージでDHPCP サーバーの isc-dhcp-serverは、IPv4,IPv6双方に対応し使用しても良いでしょう(未検証)。IPV6のルーティング情報はradvdだけで十分です。
いい加減な記事に『radvdはDNS情報設定は出来ない』などの嘘っぱちが多いので注意が必要です。
複数のDNSの指定も RDNSS fd00:cafe::beaf fd00:cafe::abe3 {} とスペースで区切り複数設定が可能。
apt install isc-dhcp-server radvd
radvdの設定
/etc/radvd.conf の編集。ちなみにGatewayはradvdをインストールした機器が設定されます。設定は簡単でdhcpサーバーの方が難解です。
interface enp2s0 { # RA(dhcp代わり) 対象のI/F AdvSendAdvert on; MinRtrAdvInterval 3; MaxRtrAdvInterval 10; AdvOtherConfigFlag on; prefix fd00:cafe::/64 { AdvOnLink on; AdvAutonomous on; AdvRouterAddr on; };
RDNSS fd00:cafe::beaf {}; # DNSのIPを記述 };
検証は radvdump で表示出来ます。 インストールは apt install radvdump でOK。
使用感など
さすがに日本のネット環境は素晴らしいというのが感想で、実際に100Mbps を超える環境を使用できる国は少ない。海外生活が長い自身の感想がこれです! またモバイル環境などの瞬間最大速度ではなく、タスク配分もCiscoやヤマハの高額ルーターよりも高速なものが手軽に作れるのが嬉しい限りです。
用途として固定IPはPPPoEが主流なので今後も使用していきたいのですが、ワークステーションやOSのダウンロードやアップデートの経路にIPoEのZOOT NATIVEの活用はなかなか小気味の良いものであり、WiFi アクセスポイントも構築していくのも良いかもしれません。
契約をしていなくて検証ができていませんが、IIJのブロードバンドサービス、IIJmioひかりや、IIJmio FiberAccess/NF でのIPoEでも使用できると思います。
MTU の設定(OCNで必要)
ip6tnlでモードをipip6 にすれば 自動的にMTUは 1452 に設定されますが、OCN用にMTUを1460にする場合はnetplan yaml ファイルでコメントに記載されたように mtu: xxxx で変更できるので必要に応じて変更して下さい。
最後にNTT V6オプションを設定すればONUにもれなくNGNに接続されて、これには全世界にIPv6では固定IPが ::/64 で使用できます。