ds-lite(IPv4 over IPv6ルータ)の構築 -自分の状況(2025.11.19 現在)-
“VPSサーバ" と “ミニPC" を使用し、"ds-lite(IPv4 over IPv6ルータ)の構築(以降、ds-lite)" をしています。
色々とWebサイトを閲覧していたところ・・・『note(2025年版)PCゲーマーなら必ず設定した方がいいネットワーク設定(Realtek PCIe GbE Family Controller)めちゃ細かく教えちゃいます!ゲーミング設定 – 最適化おじさん(K)PCゲームのあれこれ さん』 の参考にさせて頂いて、少しネットワーク機器の値を変更し、また、"カーネルパラメーター","nftable(ファイアウォール)" の設定を少し変更したことを書きたいと思います。
【お願い】
ds-lite(IPv4 over IPv6ルータ) の構築については、解らない部分・理解が出来ていないことがあります。自分のPC、インターネット環境を使用してds-liteの情報を掲載しますが、これが正しいと思わないようにお願いします。
また、自分はVPSサーバー(クラウドサーバ)を使用しています。※サービスは従量制ため、ご使用の場合は注意をお願いします。今回の記事について、PC,その他のトラブルについては責任を負いかねます。自己責任でお願い致します。
1. 自分のインターネット環境・機器
・光回線事業者:ドコモ光 1ギガ Aタイプ
・IPoeサービス:v6プラス
・ミニPC:Skynew IN-1
OS名:Red Hat Enterprise Linux 9 (無償版)
2. VPSサーバー
・Akamai Cloud(Linode)※紹介リンクにさせて頂いています。(使用中)
サービス名:Shared CPUプラン/Nanode 1 GB/(IPv4&IPv6)
location:Tokyo
OS名:Red Hat Enterprise Linux 9 (無償版)
3. ds-lite接続構築
3.1【前提条件】
・少し構築の部分で変更があり設定について順番に書きますが、過去のds-liteの構築についてほとんど変わりありません。恐れ入りますが、省略をさせて頂きます。
・過去のds-liteの構築については、カテゴリより"ds-lite"を見て頂きますようお願いします。
・ミニPCにdhcpサーバが構築されている。
・VPSサーバとminiPCのds-lite接続はperl言語で記述して接続を行っています。
3.2 VPSサーバ側
3.2.1 VPSサーバ/カーネルパラメータ設定
ds-lite@vps:~ $ sudo vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 net.ipv4.conf.all.forwarding = 1 net.ipv4.conf.lo.forwarding = 0 net.ipv4.conf.enp0s4.forwarding = 1 net.ipv4.conf.ip6tnl.forwarding = 1 #------------------------------------ net.ipv6.conf.all.forwarding = 1 net.ipv6.conf.default.forwarding = 1 net.ipv6.conf.lo.forwarding = 0 net.ipv6.conf.enp0s4.forwarding = 1 #------------------------------------ net.ipv6.conf.enp0s4.accept_ra = 0 #------------------------------------ net.ipv4.conf.default.rp_filter = 0 net.ipv4.conf.all.rp_filter = 0 net.ipv4.conf.enp0s4.rp_filter = 0 net.ipv4.conf.ip6tnl.rp_filter = 0 #---
【更新のためコマンドを実行】
ds-lite@vps:~ $ sudo sysctl -p
3.2.2 NIC設定
NICよりオフロード,チェックサム等の値を変更します。
【1行ずつコマンドを実行】
ds-lite@vps:~ $ sudo nmcli connection modify enp0s4 ethtool.feature-gso off ds-lite@vps:~ $ sudo nmcli connection modify enp0s4 ethtool.feature-ntuple off ds-lite@vps:~ $ sudo nmcli connection modify enp0s4 ethtool.feature-rxhash off ds-lite@vps:~ $ sudo nmcli connection modify enp0s4 ethtool.feature-rx-gro-hw off ds-lite@vps:~ $ sudo nmcli connection modify enp0s4 ethtool.feature-rx-udp-gro-forwarding off ds-lite@vps:~ $ sudo nmcli connection modify enp0s4 ethtool.feature-rx-udp_tunnel-port-offload off ds-lite@vps:~ $ sudo nmcli connection modify enp0s4 ethtool.feature-tso off ds-lite@vps:~ $ sudo nmcli connection modify enp0s4 ethtool.feature-tx-checksum-ipv4 off ds-lite@vps:~ $ sudo nmcli connection modify enp0s4 ethtool.feature-tx-checksum-ipv6 off ds-lite@vps:~ $ sudo nmcli connection modify enp0s4 ethtool.feature-tx-checksum-ip-generic off ds-lite@vps:~ $ sudo nmcli connection modify enp0s4 ethtool.feature-tx-udp-segmentation off ds-lite@vps:~ $ sudo nmcli connection modify enp0s4 ethtool.feature-tx-udp_tnl-csum-segmentation off ds-lite@vps:~ $ sudo nmcli connection modify enp0s4 ethtool.feature-tx-udp_tnl-segmentation off ds-lite@vps:~ $ sudo nmcli connection modify enp0s4 ethtool.coalesce-adaptive-rx 0 ds-lite@vps:~ $ sudo nmcli connection modify enp0s4 ethtool.coalesce-adaptive-tx 0 ds-lite@vps:~ $ sudo nmcli connection modify enp0s4 ethtool.coalesce-rx-frames 0 ds-lite@vps:~ $ sudo nmcli connection modify enp0s4 ethtool.coalesce-rx-usecs 0 ds-lite@vps:~ $ sudo nmcli connection modify enp0s4 ethtool.coalesce-tx-frames 0 ds-lite@vps:~ $ sudo nmcli connection modify enp0s4 ethtool.coalesce-tx-usecs 0 ds-lite@vps:~ $ sudo nmcli connection modify enp0s4 ethtool.pause-autoneg off ds-lite@vps:~ $ sudo nmcli connection modify enp0s4 ethtool.pause-rx off ds-lite@vps:~ $ sudo nmcli connection modify enp0s4 ethtool.pause-tx off
ここで再起動
ds-lite@vps:~ $ sudo reboot
3.2.3 ファイアウォール(nftable)設定
ソースコードを掲載しますが、【】の部分は変更しています。
※ファイアウォールの細かい設定は、個々で設定を行ってください。
ds-lite@vps:~ $ sudo vim /etc/sysconfig/nftables.conf
flush ruleset
table netdev filter {
chain ingress_filter {
ip frag-off & 0x1fff != 0 counter drop
tcp flags & (fin|syn|rst|psh|ack|urg) == fin|syn|rst|psh|ack|urg counter drop
tcp flags & (fin|syn|rst|psh|ack|urg) == 0x0 counter drop
tcp flags syn tcp option maxseg size 1-535 counter drop
meta l4proto igmp counter packets 0 bytes 0 drop
}
}
table ip filter {
chain input {
type filter hook input priority filter; policy accept;
iifname "lo" counter packets 0 bytes 0 accept
ct state established,related counter packets 0 bytes 0 accept
}
chain output {
type filter hook output priority filter; policy accept;
ct state established,related counter packets 0 bytes 0 accept
}
}
table ip6 filter {
chain input {
type filter hook input priority filter; policy accept;
iifname "lo" counter packets 0 bytes 0 accept
ip6 saddr 【ミニPC:取得済みのIPv6アドレス】 iifname "enp0s4" counter packets 0 bytes 0 accept
ct state established,related counter packets 0 bytes 0 accept
}
chain output {
type filter hook output priority filter; policy accept;
oifname "enp0s4" ip6 daddr 【ミニPC:取得済みのIPv6アドレス】 counter packets 0 bytes 0 accept
ct state established,related counter packets 0 bytes 0 accept
}
}
table ip nat {
chain prerouting {
type nat hook prerouting priority dstnat; policy accept;
ct state related,established counter packets 0 bytes 0 accept
}
chain POSTROUTING {
type nat hook postrouting priority srcnat; policy accept;
oifname { ip6tnl, enp0s4 } counter packets 0 bytes 0 masquerade
ct state related,established counter packets 0 bytes 0 accept
}
chain forward {
type filter hook forward priority filter; policy drop;
oifname { ip6tnl, enp0s4 } counter packets 0 bytes 0 accept
ct state related,established counter packets 0 bytes 0 accept
}
}
【ファイアウォール(nftable)の更新】
ds-lite@vps:~ $ sudo systemctl restart nftables.service
3.2.4 VPS/ds-liteの設定
“perl言語"を使って実行をしています。
ソースコードを掲載しますが、【】の部分は変更しています。
ds-lite@vps:~ $ sudo vim /home/ds-lite/vps_ds-lite.pl
#!/usr/bin/perl
#-----------【魔法の言葉】------------
use POSIX qw(strftime);
use File::Path;
use strict;
use warnings;
#-----------【変数】------------
#IP関連設定
my $LOCAL_IPV6="【ミニPC:取得済みのIPv6アドレス】";
my $VPS_SERVER_IPV6="【VPSサーバ:取得済みのIPv6アドレス】";
my $LOCAL_IPV4="【ミニPC:dhcpクライアントのipv4アドレス/サブネットマスク】";
#-----------【処理】------------
print "ds-liteの構築を開始します。\n";
print "※スーパーユーザーで実行してください\n";
print "項目の値を変更したい場合はテキストエディターなど使用し編集を行ってください。\n";
print "\n";
print "ds-liteを開始したい場合は・・・ 1 \n";
my $question = <STDIN>;
chomp $question;
if($question == "1"){
print "これより ds-lite の構築を開始します。\n";
my $ipip6tunnel_1 = `modprobe ip6_tunnel`;
my $ipip6tunnel_2 = `ip -6 tunnel add ip6tnl mode ipip6 remote '${LOCAL_IPV6}' local '${VPS_SERVER_IPV6}' dev ens3 encaplimit none`;
my $ipip6tunnel_3 = `ip link set dev ip6tnl up`;
my $route_1 = `route add -net 192.168.0.0/16 dev ip6tnl`;
my $route_2 = `route add -net 10.0.0.0/8 dev ip6tnl`;
my $route_3 = `route add -net 172.16.0.0/12 dev ip6tnl`;
my $route_4 = `route add -net '${LOCAL_IPV4}' dev ip6tnl`;
print("ipv6 ds-lite の構築が完了しました。\n");
}else{
print "1以外の入力がされました。\n";
print "終了します。\n";
}
【VPSサーバ/ds-lite接続の実行】
ds-lite@vps:~ $ sudo perl /home/ds-lite/vps_ds-lite.pl
3.2.5 NIC/enp0s4 MTU設定(経路)
MTU:1460 に変更する。
ds-lite@vps:~ $ sudo ip route add 【ミニPC:DHCPサーバ ipv4アドレス/サブネットマスク】 mtu 1460 dev enp0s4
3.3 ミニPC側
3.2.1 ミニPC/カーネルパラメータ設定
ds-lite@minipc:~ $ sudo vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 net.ipv4.conf.all.forwarding = 1 net.ipv4.conf.lo.forwarding = 0 net.ipv4.conf.enp1s0.forwarding = 1 net.ipv4.conf.enp2s0.forwarding = 0 net.ipv4.conf.enp3s0.forwarding = 0 net.ipv4.conf.enp4s0.forwarding = 0 net.ipv4.conf.wlp0s20u5.forwarding = 0 net.ipv4.conf.ip6tnl1.forwarding = 1 #------------------------------------ net.ipv6.conf.all.forwarding = 1 net.ipv6.conf.default.forwarding = 1 net.ipv6.conf.lo.forwarding = 0 net.ipv6.conf.enp1s0.forwarding = 0 net.ipv6.conf.enp2s0.forwarding = 0 net.ipv6.conf.enp3s0.forwarding = 0 net.ipv6.conf.enp4s0.forwarding = 1 net.ipv6.conf.wlp0s20u5.forwarding = 0 net.ipv6.conf.ip6tnl1.forwarding = 0 #------------------------------------ net.ipv6.conf.enp1s0.accept_ra = 0 net.ipv6.conf.enp2s0.accept_ra = 0 net.ipv6.conf.enp3s0.accept_ra = 0 net.ipv6.conf.enp4s0.accept_ra = 2 net.ipv6.conf.wlp0s20u5.accept_ra = 0 #------------------------------------ net.ipv4.conf.default.rp_filter =0 net.ipv4.conf.all.rp_filter = 0 net.ipv4.conf.ip6tnl1.rp_filter = 0 net.ipv4.conf.enp1s0.rp_filter = 0
【更新のためコマンドを実行】
ds-lite@minipc:~ $ sudo sysctl -p
3.3.2 NIC設定
NICよりオフロード,チェックサム等の値を変更します。
【1行ずつコマンドを実行】
《NIC/enp1s0 の設定》
ds-lite@minipc:~ $ sudo nmcli connection modify enp1s0 ethtool.feature-gso off ds-lite@minipc:~ $ sudo nmcli connection modify enp1s0 ethtool.feature-ntuple off ds-lite@minipc:~ $ sudo nmcli connection modify enp1s0 ethtool.feature-rxhash off ds-lite@minipc:~ $ sudo nmcli connection modify enp1s0 ethtool.feature-rx-gro-hw off ds-lite@minipc:~ $ sudo nmcli connection modify enp1s0 ethtool.feature-rx-udp-gro-forwarding off ds-lite@minipc:~ $ sudo nmcli connection modify enp1s0 ethtool.feature-rx-udp_tunnel-port-offload off ds-lite@minipc:~ $ sudo nmcli connection modify enp1s0 ethtool.feature-tso off ds-lite@minipc:~ $ sudo nmcli connection modify enp1s0 ethtool.feature-tx-checksum-ipv4 off ds-lite@minipc:~ $ sudo nmcli connection modify enp1s0 ethtool.feature-tx-checksum-ipv6 off ds-lite@minipc:~ $ sudo nmcli connection modify enp1s0 ethtool.feature-tx-checksum-ip-generic off ds-lite@minipc:~ $ sudo nmcli connection modify enp1s0 ethtool.feature-tx-udp-segmentation off ds-lite@minipc:~ $ sudo nmcli connection modify enp1s0 ethtool.feature-tx-udp_tnl-csum-segmentation off ds-lite@minipc:~ $ sudo nmcli connection modify enp1s0 ethtool.feature-tx-udp_tnl-segmentation off ds-lite@minipc:~ $ sudo nmcli connection modify enp1s0 ethtool.coalesce-adaptive-rx 0 ds-lite@minipc:~ $ sudo nmcli connection modify enp1s0 ethtool.coalesce-adaptive-tx 0 ds-lite@minipc:~ $ sudo nmcli connection modify enp1s0 ethtool.coalesce-rx-frames 0 ds-lite@minipc:~ $ sudo nmcli connection modify enp1s0 ethtool.coalesce-rx-usecs 0 ds-lite@minipc:~ $ sudo nmcli connection modify enp1s0 ethtool.coalesce-tx-frames 0 ds-lite@minipc:~ $ sudo nmcli connection modify enp1s0 ethtool.coalesce-tx-usecs 0 ds-lite@minipc:~ $ sudo nmcli connection modify enp1s0 ethtool.pause-autoneg off ds-lite@minipc:~ $ sudo nmcli connection modify enp1s0 ethtool.pause-rx off ds-lite@minipc:~ $ sudo nmcli connection modify enp1s0 ethtool.pause-tx off
《NIC/enp4s0 の設定》
ds-lite@minipc:~ $ sudo nmcli connection modify enp4s0 ethtool.feature-gso off ds-lite@minipc:~ $ sudo nmcli connection modify enp4s0 ethtool.feature-ntuple off ds-lite@minipc:~ $ sudo nmcli connection modify enp4s0 ethtool.feature-rxhash off ds-lite@minipc:~ $ sudo nmcli connection modify enp4s0 ethtool.feature-rx-gro-hw off ds-lite@minipc:~ $ sudo nmcli connection modify enp4s0 ethtool.feature-rx-udp-gro-forwarding off ds-lite@minipc:~ $ sudo nmcli connection modify enp4s0 ethtool.feature-rx-udp_tunnel-port-offload off ds-lite@minipc:~ $ sudo nmcli connection modify enp4s0 ethtool.feature-tso off ds-lite@minipc:~ $ sudo nmcli connection modify enp4s0 ethtool.feature-tx-checksum-ipv4 off ds-lite@minipc:~ $ sudo nmcli connection modify enp4s0 ethtool.feature-tx-checksum-ipv6 off ds-lite@minipc:~ $ sudo nmcli connection modify enp4s0 ethtool.feature-tx-checksum-ip-generic off ds-lite@minipc:~ $ sudo nmcli connection modify enp4s0 ethtool.feature-tx-udp-segmentation off ds-lite@minipc:~ $ sudo nmcli connection modify enp4s0 ethtool.feature-tx-udp_tnl-csum-segmentation off ds-lite@minipc:~ $ sudo nmcli connection modify enp4s0 ethtool.feature-tx-udp_tnl-segmentation off ds-lite@minipc:~ $ sudo nmcli connection modify enp4s0 ethtool.coalesce-adaptive-rx 0 ds-lite@minipc:~ $ sudo nmcli connection modify enp4s0 ethtool.coalesce-adaptive-tx 0 ds-lite@minipc:~ $ sudo nmcli connection modify enp4s0 ethtool.coalesce-rx-frames 0 ds-lite@minipc:~ $ sudo nmcli connection modify enp4s0 ethtool.coalesce-rx-usecs 0 ds-lite@minipc:~ $ sudo nmcli connection modify enp4s0 ethtool.coalesce-tx-frames 0 ds-lite@minipc:~ $ sudo nmcli connection modify enp4s0 ethtool.coalesce-tx-usecs 0 ds-lite@minipc:~ $ sudo nmcli connection modify enp4s0 ethtool.pause-autoneg off ds-lite@minipc:~ $ sudo nmcli connection modify enp4s0 ethtool.pause-rx off ds-lite@minipc:~ $ sudo nmcli connection modify enp4s0 ethtool.pause-tx off
3.3.3 ファイアウォール(nftable)設定
ソースコードを掲載しますが、【】の部分は変更しています。
※ファイアウォールの細かい設定は、個々で設定を行ってください。
ds-lite@vps:~ $ sudo vim /etc/sysconfig/nftables.conf
flush ruleset
table netdev filter {
chain ingress_filter {
ip frag-off & 0x1fff != 0 counter drop
tcp flags & (fin|syn|rst|psh|ack|urg) == fin|syn|rst|psh|ack|urg counter drop
tcp flags & (fin|syn|rst|psh|ack|urg) == 0x0 counter drop
tcp flags syn tcp option maxseg size 1-535 counter drop
meta l4proto { igmp } counter packets 0 bytes 0 drop
}
}
table ip6 filter {
chain input {
type filter hook input priority 0; policy accept;
ip6 saddr【VPSサーバ:取得済みのIPv6アドレス】iifname "enp4s0" counter packets 0 bytes 0 accept
iifname "lo" counter packets 0 bytes 0 accept
ct state related,established counter packets 0 bytes 0 accept }
chain output {
type filter hook output priority filter; policy accept
ip6 daddr【VPSサーバ:取得済みのIPv6アドレス】oifname "enp4s0"counter packets 0 bytes 0 accept
ct state related,established counter packets 0 bytes 0 accept
}
}
table ip filter {
chain input {
type filter hook input priority filter; policy accept
meta l4proto { ipv4, icmp } counter packets 0 bytes 0 accept
ip saddr【ミニPC:DHCPサーバ ipv4アドレス/サブネットマスク】iifname "enp1s0" counter packets 0 bytes 0 accept
ct state related,established counter packets 0 bytes 0 accept
}
chain forward {
type filter hook forward priority filter; policy drop;
iifname { enp1s0, ip6tnl1 } oifname { enp1s0, ip6tnl1 } counter packets 0 bytes 0 accept
ct state related,established counter packets 0 bytes 0 accept
}
chain output {
type filter hook output priority filter; policy accept
ip daddr【ミニPC:DHCPサーバ ipv4アドレス/サブネットマスク】oifname "enp1s0" counter packets 0 bytes 0 accept
ct state related,established counter packets 0 bytes 0 accept
}
}
table ip nat {
chain prerouting {
type nat hook prerouting priority dstnat; policy accept;
ct state related,established counter packets 0 bytes 0 accept
}
chain postrouting {
type nat hook postrouting priority srcnat; policy accept;
oifname { ip6tnl1, enp1s0 } counter packets 0 bytes 0 masquerade
ct state related,established counter packets 0 bytes 0 accept
}
chain forward {
type filter hook forward priority filter; policy drop;
oifname { enp1s0, ip6tnl1 } counter packets 0 bytes 0 accept
ct state related,established counter packets 0 bytes 0 accept
}
}
【ファイアウォール(nftable)の更新】
ds-lite@vps:~ $ sudo systemctl restart nftables.service
3.3.4 ds-liteの設定
“perl言語"を使って実行をしています。
ソースコードを掲載しますが、【】の部分は変更しています。
ds-lite@minipc:~ $ sudo vim /home/ds-lite/minipc_ds-lite.pl
#!/usr/bin/perl
#-----------【魔法の言葉】------------
use POSIX qw(strftime);
use File::Path;
use strict;
use warnings;
#use NetAddr::IP;
#use Net::Netmask;
#use utf8;
#-----------【変数】------------
#IP関連設定
my $LOCAL_IPV6="【ミニPC:取得済みのIPv6アドレス】";
my $VPS_SERVER_IPV6="【VPSサーバ:取得済みのIPv6アドレス】";
#-----------【処理】------------
print "ds-liteの構築を開始します。\n";
print "※スーパーユーザーで実行してください\n";
print "項目の値を変更したい場合はテキストエディターなど使用し編集を行ってください。\n";
print "\n";
print "ds-liteを開始したい場合は・・・ 1 \n";
my $question = <STDIN>;
chomp $question;
if($question == "1"){
print "これより ds-lite の構築を開始します。\n";
my $ipip6tunnel_1 = `modprobe ip6_tunnel`;
my $ipip6tunnel_2 = `ip -6 tunnel add ip6tnl mode ipip6 remote '${VPS_SERVER_IPV6}' local '${LOCAL_IPV6}' dev ens3 encaplimit none`;
my $ipip6tunnel_3 = `ip link set dev ip6tnl up`;
print("ipv6 ds-lite の接続が完了しました。\n");
}else{
print "1以外の数字が入力されました。\n";
print "終了します。\n";
}
【ミニPC/ds-lite接続の実行】
ds-lite@minipc:~ $ sudo perl /home/ds-lite/vps_ds-lite.pl
3.3.5 NIC/enp1s0 MTU設定(経路)
MTU:1460 に変更する。
ds-lite@minipc:~ $ sudo ip route add 【ミニPC:DHCPサーバ ipv4アドレス/サブネットマスク】 mtu 1460 via 【ミニPC:DHCPサーバ デフォルトゲートウェイ(ipv4アドレス)】
以上になります。
自分はPS5でオンラインゲームをしています。
※機器自体のMTU:1460に変更しています。
今現在ですが・・・ApexLegends が重いようなぁ〜ふわふわしたようなぁ〜動きが鈍いような感じがします。
また、相手に攻撃しても全然当たらない。。。
VPSとミニPCの細かい設定したところ安定しているような感じがします。
少し様子をみたいと思います。
【実験動画】
【使用サービス情報】
NTT Docomo さん
JPIX さん
Akamai Cloud(Linode)※紹介リンクにさせて頂いています。
【参考文献】
note(2025年版)PCゲーマーなら必ず設定した方がいいネットワーク設定(Realtek PCIe GbE Family Controller)めちゃ細かく教えちゃいます!ゲーミング設定 – 最適化おじさん(K)PCゲームのあれこれ さん』
note FPSゲーマー必見のNICの受信・伝送(送信)バッファを深堀 – フォートナイトラグ改善マニアMuji さん
ディスカッション
コメント一覧
まだ、コメントがありません