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

投稿

ラベル(map-e)が付いた投稿を表示しています

x64 Linux ルータのIPoE(map-e by nftables)環境でGame ConsoleをNAT越えさせる

Linuxルータでiptablesを使った場合、Game Console(Nintendo Switch)のナット判定をタイプAまたはタイプBにすることはできたのですが、nftablesでゲームコンソールをNAT越えさせるという記事は他に見当たりません。所謂ニチバンベンチはクリアできても、ナット判定はタイプDとなってしまい、NAT越えできない場合がほとんどです。 そこで、iptablesでナットタイプBになる例を参考にしながら試行錯誤した結果、Nintendo SWITCHはタイプB、PSはタイプ2にすることができたので備忘録として挙げてみました。 当方の環境はフレッツ光クロスでOCNバーチャルコネクト(プロバイダはぷらら)です。(つまり、DHCPv6-PD + map-e OCNバーチャルコネクトで、他のフレッツ光ではひかり電話あり+OCNバーチャルコネクトの環境と同じです。)早速ですが、/usr/local/sbin/nft.shとして以下のようにしました。なおパラメータは 例の計算機 で算出しています。 #!/bin/sh PFX=2400:4050:5c71:af00:: PLEN=56 GWA=1 BR='2001:380:a120::9' CE='2400:4050:5c71:af00:99:f171:c600:2f00' IP4='153.241.113.198' PSID=47 #対抗ルータのアドレスはradvdumpで確認できます。 FGW=fe80::aaaa:bbbb:cccc:dddd WANDEV='enp1s0f0' LANDEV='enp1s0f1' TUNDEV='tun0' # TYPE: [ OCN | V6P ] TYPE='OCN' if [ "$TYPE" = "OCN" ]; then \ lp=63 nxps=1024 # next port set elif [ "$TYPE" = "V6P" ]; then \ lp=15 nxps=4096 # next port set else ech...

x64 Linux ルータのIPoE(map-e by iptables)環境でGame ConsoleをNAT越えさせる -- その1fullconenat module追加有りの場合

随分前のことなのですが、フレッツ光クロスとNuro光の2回線を引いていた頃があり、クロス(ぷらら、OCNバーチャルコネクト)の方が1Gを安定して超えていたので、Nuroの方を解約することにした時のことです。回線切り替えテストのためNuroの回線を一旦停止し、ブリッジモードのwifiをフレッツ光クロス経由に切り替えところ、ゲームコンソール(具体的にはNintendo Switch)の NAT判定がNATタイプ Dになり、家人から「オンラインモードでお友達を招待できない」とのクレームがでました。 調べたところ、NAT Type Dは対照型NAT(Symmetric NAT)の状態だそうで、単にスクリプトを見直すだけでは当時はNAT越えできませんでした。 そこで、いろいろと試した結果、FULLCONENATのカーネルモジュールがあるのでそれを使えるようにし、スクリプトを書き換えたところNAT判定をタイプAまで持って行けたので当時のことをまとめてみました。 まず、今回の環境(2021-12-08時点)についてですが、ルータはx64機で10G x2 nic + 1G x 1 onboardで、debian versionは11.2、uname -a はLinux gw23 5.10.0-10-amd64 #1 SMP Debian 5.10.84-1 x86_64 GNU/Linuxです。 2023/04/14追記:Debian 12対応方法を追記しました。 2023/04/16追記: モジュール追加無し の場合を新規投稿しました。 まず、FULLCONENATカーネルモジュールとiptablesをコンパイル・パッケージ化します。詳細は割愛しますが、Debianでカーネルモジュールとパッケージがビルドできる状態にしておいてください。 ビルド手順はおよそ以下の通りです。(途中で再起動させるので注意してください。) apt-get install linux-headers-amd64 apt-get install build-essential debhelper git libxtables-dev cd /usr/src ## 2023/04/14 追記:以下 Debian 11の場合(Debian 12は不可) git clone https:/...

MAP-E: DHCPv6-PDにて取得したPREFIXからbashスクリプトにて各種パラメータを自動計算

前回 、 前々回 は、すでに計算済みのmap-eルールをDebian ルータの起動時に読み込ませていましたが、 javascriptで書かれた計算ページ のjavascriptソースをbashスクリプトに書き換え、各種パラメータを自動計算できるようにしてみました。環境は通信が、OCNバーチャルコネクトで、OSはDebianです。(v6Plusでも自動計算できる範囲であれば対応できると思います。) 追記2:ルータ自体からさらにサブネットルータにPDできるようにしました。 なお、今回の設定は、GUA(IPv4でいうグローバルアドレス)をLAN側に割り当てる設定であり、firewallの設定も入れていませんので、注意してください。 今回の設定は、以下のgw1の部分です。 以下、今回のスクリプトおよびインターフェースの設定等です。 ## 0-1a. WAN側インターフェス auto enp1s0f1 iface enp1s0f1 inet6 auto dhcp 1 request_prefix 1 ## 0-1b. LAN側インターフェス auto enp1s0f0 iface enp1s0f0 inet6 manual iface enp1s0f0 inet static address 192.168.1.1 netmask 255.255.255.0 追記3:forward設定をしている場合、外側インターフェースがaccept_ra=2でないとraにてgatewayが設定されない点を修正しました。 ## 0-2. forward設定(/etc/sysctl.conf) net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1 net.ipv6.conf.enp1s0f1.accept_ra=2 追記1:wan interfaceが自動でupされず、dhclientとdhcpdが正常に呼び出されない場合があります。おそらくタイミングの問題だと思いますが、その場合、/etc/rc.localに以下を追記してください。 ## 0-3. /etc/rc.local (chmod +x) ifup enp1s0f1 sleep 10 /etc/init.d/...

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

今回は、nftablesをつかって、map-e接続してみました。構成は 前回 と同じですが、nftablesでの "clamp your TCP MSS to Path MTU"は、Linux kernel 4.14 and nftables 0.9以降 なので、Debianはversion 11(Bullseye: 執筆現在はTestバージョン)を使用しました。 さて、早速設定ですが、大まかな設定の流れと事前の計算は、すでに、 前回 を読んでいて理解してくださっているものと仮定します。なお、今回は こちらを参考 にさせていただきました。ありがとうございます。 追記 2021/03/16:前回と同様に、radvdumpで対向ルータのアドレスがわかります。 前略 # # radvd configuration generated by radvdump 2.18 # based on Router Advertisement from fe80::wwww:xxxx:yyyy:zzzz # received by interface enp1s0f1 # 後略 #!/bin/bash #追記 2023/04/04:CEアドレスとtun0はWANDEVに割り当てる様に再度修正しました。 #追記 2023/03/28:PFXを分割しGWA(gateway address)を追加の上LAN側に割り当てるよう修正しました。 PFX=2400:4050:5c71:af00:: PLEN=56 GWA=1 BR='2001:380:a120::9' CE='2400:4050:5c71:af00:99:f171:c600:2f00' IP4='153.241.113.198' PSID=47 LANDEV='enp1s0' WANDEV='enp2s0' TUNDEV='tun0' # TYPE: [ OCN | V6P ] TYPE='OCN' if [ "$TYPE" = "OCN" ]; then \ lp=63 nxps=1024 # next port set elif...

フレッツ光クロス: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-...