スポンサーリンク

OpenWrtを使用したv6プラスと固定IP

未分類

旧回線から新しく光クロス回線を引きました。光クロスの環境では、PPPoEを提供しているプロバイダーは極端に少なく、IPv6 IPoEでのインターネット接続しか選択肢がありません。今使っているプロバイダーでは、v6プラス(MAP-E)、Xpass(DS-Lite)が選択式になっていて、以前にDS−Liteを試用したので、今回はMAP-Eにしました。それと、今回は固定IP(IPIP6)も使えるようにしました。というわけで、環境が出来たので、OpenWrtで接続をした記録です。

OpenWrtの設定

IPv6で設定していく

v6プラス、固定IPサービスのどちらもトンネルでIPv4通信をします。

wanにケーブル繋いでIPv6のアドレスを取得したら、必要なパッケージを追加していきます。
素のOpenWrtではMAP-Eが使えないので次のソフトウェアインストールします。インストールはluciからやるか、コンソールでopkg installかapk add。

#snapshotだとapk
apk add map ip-full luci-proto-ipv6

luciからだと一つずつインストールで。めんどい

wan6の設定

DHCPv6のDHCP設定はrelayにしています。56でPD降ってくるので、必要無い気がしますがrelayにしています。無効でも通信問題ないので、たぶん無効でいいと思います。

MAP-Eの設定

アドレス取得が出来ていたら、それを使って例のページからMAP-Eの設定情報を計算します。本来は設定サーバーから取ってくるらしいですが、認証が必要なので、手動計算します。

例のページ https://ip4.web.fc2.com/map-e.html

そのままoption出ているので、sshからconfig貼り付けるか、Webから入力します。
今回はwanをそのまま編集して設定変えました。

luciからだと [従来のMAPを使用] のチェックいれるのを忘れずに

全部設定が完了すると、トンネル用の_がついたインターフェース増えて接続されます。

なんか面白い資料見つけたので今度追記か実験書きます。

ページが見られなくなる問題

そのままではポートセットが一部しか使われず、ポートが枯渇してIPv4のページが開けなくなる問題が頻発するので、次のスクリプトをfirewall.userあたりに追加して実行されるようにします。が、めんどくさいのでスタートアップのローカルにべた貼りとかでもいいみたいです。

#!/bin/sh
# suggest https://aose.hatenablog.jp/entry/2022/12/04/224418
# this script based https://zenn.dev/wistnki
# use map version
# 

IPv4=[IP Address]
TUNDEV=map-wan
PSID=36
PREFIX=4096
BLOCKS=15

nft table ip mape_nat
nft delete table ip mape_nat

nft add table ip mape_nat
nft add map ip mape_nat chain_map { type mark : verdict \; }
nft add chain ip mape_nat POSTROUTING { type nat hook postrouting priority 100 \; }
nft add rule mape_nat POSTROUTING oifname $TUNDEV meta l4proto { tcp, udp, icmp } mark set numgen inc mod $BLOCKS offset 0x11 counter
nft add rule mape_nat POSTROUTING oifname $TUNDEV meta mark vmap @chain_map;

for r in `seq 1 $BLOCKS ` ; do
    mark=$(( r + 0x10 ))
    port_l=$(( r * PREFIX + PSID * 16 ))
    port_r=$((port_l + 15))
    
    nft add chain ip mape_nat mape_ports$r
    nft add rule ip mape_nat mape_ports$r meta l4proto { tcp, udp, icmp } counter snat to $IPv4:$port_l-$port_r persistent
    nft add element ip mape_nat chain_map { $mark : goto mape_ports$r }
done

他の参考も置いておく

https://pastebin.pl/view/raw/06212cd8
openWRTでV6プラス/BIGLOBEに接続するためのスクリプト
openWRTでV6プラス/BIGLOBEに接続するためのスクリプト. GitHub Gist: instantly share code, notes, and snippets.

俗にニチバンベンチとか言われていましたが、IPv4でしか接続出来ないサイトに接続すると、ポート不でページ開けなくなる問題を軽減してくれます。F5すると駄目なところは駄目。

固定IPサービス

固定IPサービスはipip6での単純トンネル。PPPoE接続の感覚で利用できます。
予算があったらぜひ使いたい固定IP。
なお、NTTのレンタルルーターなど業務機でしか対応機種が無いみたいで、一般のWiFiルーターは対応状況壊滅。

あとはOpenWrtなどソフトルーターが選択肢。

IPIP6の設定

難しいことはなく、プロバイダから届いた設定のとおりに入力していきますが、
たぶんプロバイダはPrefixを書いてこないので、察して降ってきたwan6のアドレスで入力していきます。

インターフェイスを新規作成でwan2を作って設定します

リモートIPv6アドレスにBRアドレス
IPv4アドレスは、割当られた固定IP
IPv6アドレスは、今降ってきているPrefix + プロバイダが通知してきたIPv6インターフェイスID
MTUは1460
注意点として、hintに必ず0を入力します。
ファイアウォール設定はとりあえずWANと同じにしておきます。

アップデートURLも通知送られてきていると思いますが、IPv6の割当変更が起きたときに叩くみたいです。今回は特に何もしなくてもつながっているので未使用です。

23.05以前のOpenWrtの場合はパッケージ壊れているみたいなので、githubからスクリプト取ってきて置き換え必要です。

というわけでv6プラスに固定IPサービスしたら、実質2つIPが使えるようになりました。

ちょっと思っていたのと違うんですけど、mwanで使い分けたりですかね。

コメント

タイトルとURLをコピーしました