スクリプトの見直しだけではタイプAにはできませんでしたが、fullcone nat カーネルモジュール追加なしでのiptablesを使ったDebina/LinuxルータでのNAT越え対応(Nintendo SwitchではタイプB, PSではタイプ2)の map-e 構成についてです。
以前の構成と同様、ルータがDebian GNU/Linuxで、回線がフレッツ光クロス+OCNバーチャルコネクト(map-p)であること以外特に変わりのない構成です。
早速ですが、設定です。以下のスクリプトを、/usr/local/sbin/にipt.sh(chmod +x)としておき、/etc/rc.localから呼び出すようにしています。なおパラメータは今回も例の計算機で算出しています。
参考までに、Debianのインストールはnetinst.isoというインストーラを使い、最小インストールを行っています。これだとnetworkmanager等の設定が入らないので手軽にルーターを組むことができます。
なお、今回のインターフェース設定は以下のようにDHCP-PDを使用する様にしています。
なお、2023/04/15現在、Debian12/Bookworm(テスト版)で dhclient(prefix delegation)が起動できない場合があり、この場合しばらくたつと接続が切れたり接続できなかったりするのですが、/etc/rc.localに以下の記述をすることで、対応できました。
以前の構成と同様、ルータがDebian GNU/Linuxで、回線がフレッツ光クロス+OCNバーチャルコネクト(map-p)であること以外特に変わりのない構成です。
早速ですが、設定です。以下のスクリプトを、/usr/local/sbin/にipt.sh(chmod +x)としておき、/etc/rc.localから呼び出すようにしています。なおパラメータは今回も例の計算機で算出しています。
#!/bin/bash PLEN=56 PFX=2400:4050:5c71:af00:: GWS=23 BR='2001:380:a120::9' CE='2400:4150:7c20:300:99:fcf0:8000:300' IP4='153.241.113.198' PSID='47' WANDEV='enp1s0f0' LANDEV='enp1s0f1' TUNDEV='tun0' ## TYPE: [ OCN | V6P ] TYPE='OCN' if [ "$TYPE" = "OCN" ]; then \ lp=63 skip=0 lp=`expr $lp - $skip` nxps=1024 # next port set elif [ "$TYPE" = "V6P" ]; then \ lp=15 skip=0 lp=`expr $lp - $skip` nxps=4096 # next port set else echo Unknown TYPE: $TYPE exit 1 fi ip -6 addr add $CE dev $WANDEV ip -6 addr add $PFX$GWS/$PLEN dev $LANDEV 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 route delete default ip route add default dev $TUNDEV iptables -t nat -F iptables -t mangle -F iptables -t mangle -A POSTROUTING -o $TUNDEV -j HMARK --hmark-tuple sport --hmark-mod $lp --hmark-offset 0 --hmark-rnd 0 rule=1 while [ $rule -le $lp ] ; do mark=$rule pn=`expr $rule - 1` portl=`expr \( $rule + $skip \) \* $nxps + $PSID \* 16` portr=`expr $portl + 15` iptables -t nat -A POSTROUTING -p icmp -o $TUNDEV -m mark --mark $mark -j SNAT --to $IP4:$portl-$portr iptables -t nat -A POSTROUTING -p tcp -o $TUNDEV -m mark --mark $mark -j SNAT --to $IP4:$portl-$portr iptables -t nat -A POSTROUTING -p udp -o $TUNDEV -m mark --mark $mark -j SNAT --to $IP4:$portl-$portr rule=`expr $rule + 1` done iptables -t mangle -o $TUNDEV --insert FORWARD 1 -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:65495 -j TCPMSS --clamp-mss-to-pmtu ## local setups below.スクリプトは以上です。
参考までに、Debianのインストールはnetinst.isoというインストーラを使い、最小インストールを行っています。これだとnetworkmanager等の設定が入らないので手軽にルーターを組むことができます。
なお、今回のインターフェース設定は以下のようにDHCP-PDを使用する様にしています。
#/etc/network/interfaces.d/enp1s0f0 auto enp1s0f0 iface enp1s0f0 inet6 dhcp request_prefix 1 #/etc/network/interfaces.d/enp1s0f0 auto enp1s0f1 iface enp1s0f1 inet static address 172.16.1.1 netmask 255.255.255.0 iface enp1s0f1 inet6 static address 2400:4050:5c71:af10::1/64今回も/etc/sysctl.confや/etc/dhcp以下、/etc/radvd.conf、firewall設定などについては触れていませんので悪しからずご了承ください。
なお、2023/04/15現在、Debian12/Bookworm(テスト版)で dhclient(prefix delegation)が起動できない場合があり、この場合しばらくたつと接続が切れたり接続できなかったりするのですが、/etc/rc.localに以下の記述をすることで、対応できました。
#/etc/rc.local dhclient -6 -v -pf /run/dhclient6.enp1s0f0.pid -lf /var/lib/dhcp/dhclient6.enp1s0f0.leases -I -P -N -df /var/lib/dhcp/dhclient.enp1s0f0.leases enp1s0f0 /usr/local/sbin/ipt.sh今回は以上です。それでは。
コメント
コメントを投稿