フレッツ光クロスで固定IPを使いたいと思い、調べたところコラボ(enひかりクロス)ですが、v6プラスの固定IPが利用できるようだったのでこちらに転用しました。2023/04/22にNTTに転用番号の払い出しを申請し取得、前のプロバイダにも月末解約を申し込み、その日のうちにenひかりに申し込んだところ翌日の連絡で開通予定日が5/2となったのですが、IPoE接続の切替えタイミングがずれ、前のプロバイダに問い合わせたところIPoEの切り替えは2-3日かかるとのことで最終的に5/3の午前中に切り替わり開通しました。 結果、"プレフィクス+インターフェースID"(CEアドレス)はLAN/WANのいずれに割り振ってもDebianルータでIPv6/IPv4ともに問題なく接続できたので備忘録として挙げてみました。構成は以下の通りです。
注意点としては "ONU直下にルータを置いている" というところです。このためWAN側にはRAではPrefixは降りてきません。(V6プラスの固定IP接続に関する各社のコンフィグ例で一部ONU直下ホームゲートウェイ直下のいずれかの明記もなく、RAからPrefixを取得することを前提としている設定例があり、少し混乱しました。)
早速ですが設定です。なお環境はDebian 12/Bookworm(testing)で行いました。まず、/etc/network/interfaces.d/enp1s0f0(WAN側)は以下の通りです。
こちらの環境では ookla speedtest にてウィンドウズで実測でDL 最大約8Gbps、UP 最大約7.8Gbps出たので良い感じです。
参考までにDebianルータから測定したところ、こちらはDL約8.0Gbps、UP約7.7Gbpsでました。なお、dhcpd、radvd、sysctl.conf、firewallの設定は今回も触れていませんので、悪しからずご了承ください。
2024/05/12追記:
上述の2024/05/12追記の通りLANのIPv6アドレスについてはGUAではなくULAを割り当てる様に変更しました。これに伴い、ip6tables (/etc/iptables/rules.v6) や /etc/radvd.conf 等の変更も必要となりますので、ご注意ください。
今回は以上です。それでは。
早速ですが設定です。なお環境はDebian 12/Bookworm(testing)で行いました。まず、/etc/network/interfaces.d/enp1s0f0(WAN側)は以下の通りです。
auto enp1s0f0 iface enp1s0f0 inet6 dhcp accept_ra 2 request_prefix 1enp1s0f1(LAN側)は以下の通りです。
auto enp1s0f1 iface enp1s0f1 inet static address 10.1.1.1 netmask 255.255.255.0 ## 2024/05/12: LAN側IPv6アドレスのULA化 iface enp1s0f1 inet6 static address fd98:1:1::1/64これらに色々書いてもよいのですが、かえってごちゃごちゃするので /etc/rc.local から /usr/local/sbin/ipt-v6p-static-lan-01.sh という名前にしたスクリプト(chmod +x)を呼び出して一括して設定するようにしました。スクリプトは以下の通りです。
#!/bin/bash UPDT_URL=http://xxx.enabler.ne.jp/update USER=userid PASS=p@ssw0rd IFID=000a:0b0c:0d00:0000 IP4=10.11.12.13 BR=2404:aaaa:bbbb:cccc::dd #対向のルータ(WAN側のデフォルトゲートウェイ):radvdumpでわかります。 #FGW=fe80::aaaa:bbff:fecc:ddee WANDEV=enp1s0f0 LANDEV=enp1s0f1 TUNDEV='tun0' # dhclientが呼び出されない場合の対処 if [ ! -f /run/dhclient6.$WANDEV.pid ];then dhclient -6 -v -pf /run/dhclient6.$WANDEV.pid -lf /var/lib/dhcp/dhclient6.$WANDEV.leases -I -P -N -df /var/lib/dhcp/dhclient.$WANDEV.leases $WANDEV fi # PREFIXを取得 PFX=`cat /var/lib/dhcp/dhclient6.$WANDEV.leases | grep iaprefix -m1 | awk '{print $2}'` PREFIX=`echo $PFX | awk 'BEGIN{FS="::"}{print $1}'` GW_PLEN=`echo $PFX | awk 'BEGIN{FS="/"}{print $2}'` # 2024/06/12: ULAを追加 ULA=fd98:1:1::/56 # 2024/05/11 CE_PLENを128から$GW_PLENに変更 # 2024/05/02 以下三行の記述位置をこちらへ移動 GW=1 CE=$PREFIX:$IFID CE_PLEN=$GW_PLEN # 2024/05/11 WANDEVにプレフィックス+インターフェースID(CEアドレス)を割り当てる場合を削除 ip -6 addr add $PREFIX::$GW/$GW_PLEN dev $LANDEV ip -6 addr add $CE/$CE_PLEN dev $LANDEV ip -6 tunnel add $TUNDEV mode ip4ip6 remote $BR local $CE dev $LANDEV encaplimit none ip link set dev $TUNDEV mtu 1460 ip link set dev $TUNDEV up ip -4 addr add $IP4/32 dev $TUNDEV ip route delete default ip route add default dev $TUNDEV #対向のルータ(WAN側のデフォルトゲートウェイ)が自動で設定されない場合 #ip -6 route add default proto static metric 20 \ # nexthop via $FGW dev $WANDEV weight 10 curl "$UPDT_URL?user=$USER&pass=$PASS" iptables -t nat -F iptables -t mangle -F iptables -t mangle -o $TUNDEV -I FORWARD 1 -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:65495 -j TCPMSS --clamp-mss-to-pmtu #マスカレードする場合 iptables -t nat -A POSTROUTING -o $TUNDEV -j MASQUERADE # FULLCONENAT モジュールを使用する場合 #iptables -t nat -A PREROUTING -i $TUNDEV -j FULLCONENAT #iptables -t nat -A POSTROUTING -o $TUNDEV -j FULLCONENAT # 2024/06/12 追加: ULA/GUA変換をnftで行う。 ip6tables-restore < /etc/iptables/rules.v6 nft insert rule ip6 nat POSTROUTING oifname "${WANDEV}" snat ip6 prefix to ip6 saddr map { "${ULA}" : "${PFX}" } nft insert rule ip6 nat PREROUTING iifname "${WANDEV}" dnat ip6 prefix to ip6 daddr map { "${PFX}" : "${ULA}" } ## other local setup below... ip link set $WANDEV txqueuelen 10000 ip link set $LANDEV txqueuelen 10000 ip link set $TUNDEV txqueuelen 10000 ## 2024/05/12追記:LAN側IPv6アドレスのULA化に伴う/etc/iptables/rules.v6の変更と再読み込み PREFIX_CHANGED="no" IF1PREFIX_NEW=`echo $PREFIX | awk -F":" '{ val1="0x"$1; printf "%x", val1; printf ":"; val2="0x"$2; printf "%x", val2; printf ":"; val3="0x"$3; printf "%x", val3; printf ":"; val4="0x"$4; val4=val4+"0x1"; printf "%x", val4; }'` #IF1PREFIX_ULAは環境に合わせてください。 IF1PREFIX_ULA=fd98:1:1 IF1PREFIX_OLD=`grep $IF1PREFIX_ULA /etc/iptables/rules.v6 | grep PREROUTING | awk -F"-d" '{print $2}' | awk '{print $1}' | awk 'BEGIN{FS="::"}{print $1}'` if [ "$IF1PREFIX_OLD" != "$IF1PREFIX_NEW" ]; then sed -i "s/$IF1PREFIX_OLD/$IF1PREFIX_NEW/g" /etc/iptables/rules.v6 PREFIX_CHANGED="yes" fi if [ "PREFIX_CHANGED" = "yes" ]; then ip6tables-restore < /etc/iptables/rules.v6 fiCEアドレスをデバイスに割り当ててIP4IP6トンネルを張る所と-j TCPMSSでTCP MSSクランプを使用している所以外は特に難しい設定はありません。その他、ルータのIPv6アドレスをこの例の場合は、$PREFIX::$GW/$GW_PLENにしていますが、必要に応じて変更してください。
こちらの環境では ookla speedtest にてウィンドウズで実測でDL 最大約8Gbps、UP 最大約7.8Gbps出たので良い感じです。
参考までにDebianルータから測定したところ、こちらはDL約8.0Gbps、UP約7.7Gbpsでました。なお、dhcpd、radvd、sysctl.conf、firewallの設定は今回も触れていませんので、悪しからずご了承ください。
2024/05/12追記:
上述の2024/05/12追記の通りLANのIPv6アドレスについてはGUAではなくULAを割り当てる様に変更しました。これに伴い、ip6tables (/etc/iptables/rules.v6) や /etc/radvd.conf 等の変更も必要となりますので、ご注意ください。
今回は以上です。それでは。
コメント
コメントを投稿