スキップしてメイン コンテンツに移動

フレッツ光クロス コラボ(enひかりクロス)でv6プラスの固定IPにてDebianを使い接続

フレッツ光クロスで固定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側)は以下の通りです。
auto enp1s0f0
iface enp1s0f0 inet6 dhcp
  accept_ra 2
  request_prefix 1
enp1s0f1(LAN側)は以下の通りです。
auto enp1s0f1
iface enp1s0f1 inet static
  address 10.1.1.1
  netmask 255.255.255.0
iface enp1s0f1 inet6 manual
これらに色々書いてもよいのですが、かえってごちゃごちゃするので /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が呼び出されない場合の対処 (2024/05/04追記:上述enp1s0f0の記述でdhclientは呼び出されるはずなのでコメント化しました。)
#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

# 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/05/02 以下三行の記述位置をこちらへ移動
GW=1
CE=$PREFIX:$IFID
CE_PLEN=128

ip -6 addr add $PREFIX::$GW/$GW_PLEN dev $LANDEV

# LANDEVにプレフィックス+インターフェースID(CEアドレス)を割り当てる場合
ip -6 addr add $CE/$CE_PLEN dev $LANDEV
ip -6 tunnel add $TUNDEV mode ip4ip6 remote $BR local $CE dev $LANDEV encaplimit none
# WANDEVにプレフィックス+インターフェースID(CEアドレス)を割り当てる場合
#ip -6 addr add $CE/$CE_PLEN dev $WANDEV
#ip -6 tunnel add $TUNDEV mode ip4ip6 remote $BR local $CE dev $WANDEV 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

## other local setup below...
ip link set $WANDEV txqueuelen 10000
ip link set $LANDEV txqueuelen 10000
ip link set $TUNDEV txqueuelen 10000
CEアドレスをデバイスに割り当てて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の設定は今回も触れていませんので、悪しからずご了承ください。
今回は以上です。それでは。

コメント

このブログの人気の投稿

wsdd を使ってSamba サーバをネットワークに表示

Windows 10のアップデートで、セキュリティー対応のため、smbv1がデフォルトではインストールされなくなり、Samba serverがエクスプローラーのネットワークに表示されなくなってしまいました。そこで、いくつか方法を調べたのですが、linuxでwsdの実装がないか探したところ、 https://github.com/christgau/wsdd が、見つかりましたので、さっそくインストールしてみました。まだパッケージにはないようですが、インストール自身は簡単です。wsdd自体は以下のように取得し、linkを張っておきます。 cd /usr/local/bin/ sudo wget https://raw.githubusercontent.com/christgau/wsdd/master/src/wsdd.py sudo chmod 755 wsdd.py sudo ln -sf wsdd.py wsdd こちらのsambaサーバはDebianなので、/etc/systemd/system/wsdd.serviceは以下のようにしました。 [Unit] Description=Web Services Dynamic Discovery host daemon Requires=network-online.target After=network.target network-online.target multi-user.target [Service] Type=simple ExecStart=/usr/local/bin/wsdd -d MYDOMAIN [Install] WantedBy=multi-user.target wsdd -d MYDOMAINのところを、環境にあわせて書き換えてください。 次に、systemdに登録・起動テストを行います。 systemctl enable wsdd systemctl start wsdd 起動に成功すると、エクスプローラーのネットワークに表示されます。  なおこのwsddはpython3が必要です。一度試してみてください。SMBv1/CIFSを停止していても、大丈夫です。 cで書かれたほかのwsddの実装もあるようなので、いずれパッケージになるかもしれませ

Hyper-V Server2019にワークグループ環境下でWindows10(1809)から接続

Hyper-V server 2019に、ワークグループ環境にてWindows10(1809)から接続してみました。Windows10にHyper-V管理ツールがインストールされていることと、Hyper-V Serverをインストール済であることが前提です。以下、Hyper-V serverは名前がHyperVSV、アドレスは192.168.1.110としています。 まず、Hyper-V server上で、powershellを起動し、以下のコマンドを入力します。 Enable-WSManCredSSP -Role Server -Force 続いて、クライアントのWindows10のpowershell で以下のコマンドを入力します。 winrm quickconfig -Force Enable-WSManCredSSP -Role Client -DelegateComputer * -Force さらに、クライアントマシンで、gpedit(グループポリシーエディタ)を起動し、以下の要領でポリシーを設定します。 a. [コンピューターの構成]->[管理テンプレート]->[システム]->[資格情報の委任]->[NTLMのみのサーバー認証で新しい資格情報の委任を許可する] を有効にし、サーバを一覧に追加[表示...]ボタンをクリックして、「WSMAN/*」を追加 b. [コンピューターの構成]->[管理テンプレート]->[システム]->[資格情報の委任]->[NTLM のみのサーバー認証で保存された資格情報の委任を許可する] を有効にし、サーバを一覧に追加[表示...]ボタンをクリックして、「*」を追加 また、名前解決できるように、(notepadを管理者権限で実行し)C:\Windows\System32\Drivers\etc\hostsにサーバ名とIPアドレスの対を追加。 192.168.1.110 HyperVSV 最後に、Hyper-Vマネージャーを起動し、Windows10からHyper-V サーバに接続します。手順は以下の通りです。 「サーバーに接続」->コンピュータの選択->別のコンピューターに[HyperVSV]と入力し、[別のユーザーとして接続する

フレッツ光クロス:MAP-E ROUTER by Debian Box (iptables)

フレッツ光クロスがようやく開通したので、Debianにてrouterを構成し接続してみました。なお、プロバイダーを選ぶにあたっては、IPoE方式がそれぞれ異なるため検討したところ、IPoEでは、MAP-Eでもv6plusとocnバーチャルコネクトがあり、前者がポート数240なのに対し、後者は約4倍のポート数が使えるようなネットの情報をみて、OCNバーチャルコネクトを選択しました。(プロバイダーとしてはぷららです。なおDS-LiteはCE側でのNATではないので今回は見送りました。)そこで、OCN バーチャルコネクトをDebian(iptables)で実現するとどうなるかと思い、ネットの情報を頼りにしつつ、設定した次第です。 実際に試した結果、とりあえず通信できていますが、MAP-Eは本来マッピングルールをマップサーバから取得するはずなので、今回のやり方が正解とはいえませんし、仕様変更されると通信できなくなる可能性があります。あくまでも参考程度ですが、本稿をUPしてみました。 2023/03/16追記: こちら にゲームコンソールNAT越え(Nintendo Switch ナットタイプ A判定)対応版を投稿しました。 2023/03/28追記:※1の記述および3行無効化によりNAT越え(Nintendo Switch ナットタイプ B判定)できるようになりました。 構成は以下の通りです。 ルーターがDebianで回線がOCNバーチャルコネクトであること以外はなにも特別なところはない構成です。 さて、いきなり設定ですが、まず、割り当てられたプレフィックスを確認します。 確認は、 dhclient -6 -d -P enp2s0 とします。出力の中に 前略 RCV: | | X-- IAPREFIX 2400:4050:5c71:af00::/56 後略 このようにプレフィックスが表示されるので、その確認したプレフィックスを書き留めておきます。これを こちらで 入力します。すると、 CE: 2400:4050:5c71:af00:99:f171:c600:2f00 IPv4 アドレス: 153.241.113.198 ポート番号:(1776-1791 2800-2815 3824-3839) 4848-4863 5872-5887 6896-