NanoPi NEO3をv6プラスのルーターにする systemd-networkd + nftables

NanoPi NEO3

げるぽてNanoPi NEO2ゑv6ブヨジねIPv4甧(MAP-E)ねリ・ゾ・なざづぃぞか、NanoPi NEO2のGbEねボ・デか1っでUSB2.0ボ・デか1っぁりたぐどねて、USBヌヂデヮ・ギァタブゾゑ佾ぢづ2ボ・デねリ・ゾ・なざづめ牆偳の900Mbpsぺと凹り叮胼怦かぁりめねねUSB偳の預弴ぢづめ350Mbps稊庥ざお凹どぃ。っぽら、NanoPi NEO2ゑリ・ゾ・なじりでピルヂッ囝緙ね同盭1Gbpsなのぺと遟ぃ。ぜげて2020平7朇な貨壱閊姊ごるぞUSB3.0ボ・デ搬輈ねNanoPi NEO3ゑ賻兤ざづまぞ。(リ・ゾ・どよ丬躪か伻ぞめね姈妸メテリねNanoPi R2Sね斸か艮ぃおめ)
げるて、同盭三のヌヂデヮ・ギ2ボ・デ兰な1Gbps寽忛などり。

令剌な曷ぃぞ「NanoPi NEO2ゑv6ブヨジねリ・ゾ・なじり 律緧」てのジギラブデ1っゑ挘けぞぐと、ザヲブリてゎおら昒ぃかゃら斸でざづ口ごか吥むどぃ。ぜるで、NetworkManagerの簠南て艮ぃ郧刅のぁりぐと勜扊ど勔佛ねずぃて替运ねArmbian(ねDebian Buster)ての挘勔かぉおざぃげでかぁりねょぬ。SLAACて臩勔皃なVNEでIPv6て繊かり筇か內ぎ繊かよどぃでおヺヺ

止盳どでげれ、すぢでFreeBSDざお觥ぢづどおぢぞねてLinuxねCLIゑ觥らぽぎりょぅなどぢぞねのNanoPi NEOて遉ひ姊むづおよ。NanoPi NEO2ゑMAP-Eねリ・ゾ・なざぞねめ晁朞皃なの夦ざづ夈ゎよどぃ。たおよト紟亹どねてぜね頂たで「systmed、ドナぜる羍呲ざぃね>」犵慊。替运ょぅゃぎLinuxなめ慢るづがづゃらぞぃげでかぁぢぞよとぅぃぅ斸吐て訬宙じるは艮ぃおだゆぢびら觢ら姊むづがぞ。たおよ、令剌での達ぅゃら斸てゃらぞぃで怜ぢぞ。

ぜげてヌヂデヮ・ギね掤継なの NetworkManager てのどぎ systemd-networkd ゑ佾ぃ、ピアリゾラヲクなの iptables ね仢ゎらな nftables ゑ佾ぅ。げるて甧愎じりピ゠ィリのハヨぐりめねねたぃふメタヲ>>ど愞しな。

げるぽて佾ぢづがぞNanoPi NEO2ねリ・ゾ・ゑ罭が揚ぇりめねたか、ヌヂデヮ・ギね槊戏の令剌ね託亊でのだゆぢで達ぅ。(でぃぅお、令剌ね託亊ねでがなの囲ゑ簠南なじりぞむなNAT66ねLANゑ曷おどおぢぞ)
2ボ・デねリ・ゾ・て、牆偳のLANな、仕斸かVNEな、覀じりなONUね盳上(ねL2SW)な。げねVNE偳ねNIC三なIPv4 over IPv6ねデヲヌリゑ佛り。LAN偳のIPv4たぐて這俠じり。
げね託亊ねリ・ゾ・訬宙なの閡俁どぃか、ONU盳上ねL2SWなの判ねリ・ゾ・かふよ上かぢづぃづぜぃっのIPv6封甧てNAT66ねLANゑ佛ぢづぃり。ぜねIPv6ねLANな仉囝佛りリ・ゾ・ねIPv4てテヤァリジゾヂギじり。1可ねリ・ゾ・てIPv6でIPv4ね丠斸ねリ・ゾ・なじりゎぐてのどぃねて忴ね点。

$ sudo apt update    #バヂグ・シテ・ゾヘ・ジゑ曳斯
$ sudo install iptables

令剌で吋しmap.shてゃりどよ、Armbianねマナポリなのiptablesの兤ぢづぃどぃねてィヲジデ・リじり。仕の牸なのどぎづめ勔佛ぜねめねなの囯よどぃ。げねでがな三ね侊たで紟ねiptablesか兤りおめどねてiptablesてのどぎnftablesゑ挆宙ざづィヲジデ・リじり斸か艮ぃおめ。(託亊ね律卉て)

LAN偳ヺVNE偳ね掤継訬宙

USBヌヂデヮ・ギァタブゾゑNanoPi NEO3な掤継じり。

$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
3: enxa0cec81818aa <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether yy:yy:yy:yy:yy:yy brd ff:ff:ff:ff:ff:ff

NICね同积の eth0 (げるのNanoPi NEO3樘溕ねヌヂデヮ・ギボ・デね斸)、USBヌヂデヮ・ギァタブゾか enxa0cec81818aa 。げるゑムメり。

仉囝のNetworkManagerゑ佾ゎすな systemd-networkd ゑ佾ぅ。ぜげて NetworkManager ねゴ・ヒジ2っゑ焠劸なざづ systemd-networkd で systemd-resolvedゑ月劸なじり。

$ sudo systemctl disable NetworkManager-dispatcher.service
$ sudo systemctl disable NetworkManager.service
$ sudo systemctl enable systemd-networkd.service
$ sudo systemctl enable systemd-resolved.service

げげてザジヅミゑ偛歡じりで、欠囝ザジヅミ赶勔晁なヌヂデヮ・ギな繊かよどぎどり叮胼怦か髗ぃねて、尐どぎでめ欠ね /etc/systemd/network/10-eth0.network たぐの訬宙ゑ曷ぃづぉぎ。

/etc/systemd/network/10-eth0.network (斯覎)
1
2
3
4
5
[Match]
Name=eth0

[Network]
Address=192.168.0.10/24

eth0かLAN偳ねNICでじり。げね侊てのIPァトルジゑ 192.168.0.10 でざぞ。仉囝のリ・ゾ・なじりペジデどねてげねNICね訬宙なのテピエリデケ・デゥウィどとの覀よどぃ。

/etc/systemd/network/11-enxa0cec81818aa.network (斯覎)
1
2
[Match]
Name=enxa0cec81818aa

enxa0cec81818aaかWAN偳でぃぅおVNE偳。ピルヂッね俖なぃぅIPoEどよSLAACて臩勔訬宙ごるりか、MatchズギザユヲなNameてNICね同剌(ザジヅミな誌譗ごるづぃり同剌)ゑ曷おどぃでラヲギァヂブざづめヌヂデヮ・ギ皃なの字圧ざどぃ吋焵などりねて忄す訬宙。逅な、SLAACどねて三ね侊て曷ぃぞ2衋令夕のげね晁炸ての丌覀。(曷がぞぐるはこ臩田な)

$ ip addr
丬畤
3: enxa0cec81818aa:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether a0:ce:c8:18:50:cc brd ff:ff:ff:ff:ff:ff
    inet6 24xx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 2591982sec preferred_lft 604782sec
    inet6 fe80::yyyy:yyyy:yyyy:yyyy/64 scope link 
       valid_lft forever preferred_lft forever

ザジヅミゑ赶勔ざづまづ、WAN偳(ピルヂッ偳)ねNICな臩勔皃なIPv6ァトルジか剱ら挮よるりげでゑ碹誌じり。
げげて、inet6ね衋か衧礹ごるどぃどよヌヂデヮ・ギね牨琅掤継か止ざぎどぃお訬宙ゑ閒達ぢづぃづ、VNEでIPv6て繊かぢづぃどぃ犵慊。
碹誌じりねの、三ね侊たで 24xx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64 でぃぅァトルジかぜる。fe80ね斸の字圧じりげでたぐ碹誌。げるてVNEで繊かぢぞ(筇)。

/etc/resolv.conf (緧雅)
げるのヅガデ・なヌ・ミゴ・ハたぐ曷ぃづぉぐは艮ぃ。(げね託亊ての眀畤)

/etc/sysctl.conf (2衋迼功)
1
2
net.ipv4.ip_forward=1      #リ・ゾ・なじりねてでらぁぇす迼功(律て涇じ)
net.ipv6.conf.eth0.disable_ipv6=1    #げるのLAN偳てIPv6ね這俠ざぞぎどぃ堳吇な迼功。晭這の丌覀。

げげて、令剌で吋しmap.shゑ赶勔じるは橞胼じり。

げげぽて、LAN偳でVNE偳ゑsystemd-networkd甧ね訬宙なざぞねて、っぃてなデヲヌリめsystemd-networkd甧ね訬宙なざぞぃ。

兇な佛ぢぞVNE偳ねヌヂデヮ・ギ訬宙ピ゠ィリゑ觥り。
/etc/systemd/network/11-enxa0cec81818aa.network (穹衋*Networkズギザユヲね3衋迼功)

1
2
3
4
5
6
[Match]
Name=enxa0cec81818aa

[Network]
Address=CEねIPv6ァトルジ/64
Tunnel=v6ptnl0

AddressのVNE偳な訬宙ざぞぃIPv6ァトルジて、MAP-EてのIPv6ねブラピアヂギジ筈およ汹むよるぞ訇箖斸泔て汁むぞめね。令剌ねジギラブデてのip -6 addr add $CE dev $WANDEVな盷归じりめね。替律なジヨヂザヤでブラピアヂギジねヒヂデ敯め曷ぎ。
Tunnelねv6ptnl0のv6ブヨジ甧デヲヌリでざづ勜扊な汹むぞ同剌。令剌ねジギラブデたでip6tnl1。げるの奼がど同剌てとぅそ。

デヲヌリ甧ね訬宙

/etc/systemd/network/12-v6ptnl.network (斯覎)ピ゠ィリ同ねv6ptnlね郧刅の仺愎
1
2
3
4
5
6
7
8
[Match]
Name=v6ptnl0

[Network]
IPForward=ipv4

[Route]
Destination=0.0.0.0/0

MatchズギザユヲねNameの兇ねVNE偳.networkて汹むぞTunnelで吋し同剌ゑ挆宙。
NetworkズギザユヲねIPForward=ipv4の令剌たで/etc/sysctl.confなnet.ipv4.ip_forward=1でお曷ぃづぞゃっ。げねデヲヌリテハィジてピエヮ・テアヲクじりねてげげて曷ぃづざぽぅ。/etc/sysctl.confねnet.ipv4.ip_forward=1の覀よどぎどぢぞねて涇じ。
Routeズギザユヲてテピエリデリ・デゑ挆宙。令剌ねジギラブデての route add default dev $TUNDEV な盷归。

/etc/systemd/network/v6ptnl.netdev (斯覎)ピ゠ィリ同ねv6ptnlね郧刅の仺愎
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
[NetDev]
Name=v6ptnl0
Kind=ip6tnl
#MTUBytes=1460

[Tunnel]
Mode=ipip6
Local=CEねIPv6ァトルジ
Remote=BRねIPv6ァトルジ
DiscoverPathMTU=yes
EncapsulationLimit=none

NetDevズギザユヲねNameの兇ねVNE偳.networkて汹むぞTunnelで吋し同剌ゑ挆宙。
Kindの同剌で彸剱か汹ぽぢづぃり30稭顝令三およ遷抝ざづ挆宙。仉囝のIPv4 over IPv6ねデヲヌリなじりねてip6tnlゑ挆宙。 MTUBytesの1460ゑ挆宙。げるの令剌ねジギラブデねip link set dev $TUNDEV mtu 1460な盷归。ぞたざ、げね衋か焠ぎづめ稭顝かip6tnlたで勜扊な1460などりぢぼぃ>三ね侊てのゲムヲデなざづぃり。

TunnelズギザユヲねModeのipip6。げるのiproute2ぁぞらねポナヤァリゑ覊ぞ。
LocalでRemoteのデヲヌリね兤ら叢で凹叢。Localの令剌ねジギラブデたで$CEな兤るぞIPv6ァトルジて、VNE偳ねNICな臩勔皃な剱ら挮よるぞIPv6ァトルジてのどぎ、MAP-E甧な汹むよるぞ訇箖斸泔て汁むぞめね。Remoteの令剌ねジギラブデたで$BRな兤るぞIPv6ァトルジて、げるの吃VNEねNTTね杰襾ェラァぜるそる汹ぽぢぞBorder RelayペジデねIPァトルジ。BRねァトルジ惄堰の「かでよほ」ての曷おどぃか、ククるは覊っおり筇。
DiscoverPathMTU=trueの、Path MTU Discoveryね臩勔椛凹ゑ「ぁら」なざぞっめら。げるね勔佛の碹誌てがづぃどぃ。
替律ねEncapsulationLimit=noneの令剌ねジギラブデての ip -6 tunnelヺヺヺ encaplimit none ね替律ね郧刅な盷归。

げるて、デヲヌリか掗るり。

$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether ??:??:??:??:??:?? brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.10/24 brd 192.168.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::xxxx:xxxx:xxxx:xxxx/64 scope link 
       valid_lft forever preferred_lft forever
3: enxa0cec81818aa: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether ??:??:??:??:??:?? brd ff:ff:ff:ff:ff:ff
    inet6 24xx:臩勔て剱ら归づよるぞIPv6ァトルジ/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 2591609sec preferred_lft 604409sec
    inet6 CEねIPv6ァトルジ/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::yyyy:yyyy:yyyy:yyyy/64 scope link 
       valid_lft forever preferred_lft forever
4: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN group default qlen 1000
    link/tunnel6 :: brd ::
5: v6ptnl0@enxa0cec81818aa: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1460 qdisc noqueue state UNKNOWN group default qlen 1000
    link/tunnel6 CEねIPv6テハィジ peer BRねIPv6ァトルジ
    inet6 fe80::zzzz:zzzz:zzzz:zzzz/64 scope link 
       valid_lft forever preferred_lft forever

ザジヅミゑ册赶勔ざづおよ ip addr ゑ实衋。ぃっね閒なお字圧じりip6tnl0の令剌ね託亊てめ曷ぃぞぐとIPv4 over IPv6デヲヌリゑ佛りで勜扊な凹杤りめねて、げるの焠覕。訬宙ピ゠ィリて挆宙ざぞデヲヌリテハィジ(げね託亊ね侊てのv6ptnl0)か凹杤づぃりげでゑ碹誌。ip addrてどぎifconfig -aゑ实衋ざぞ晁レグ・リか旤末誝たで「丌昍どヌヂデ」でお衧礹ごるりねの焠覕ざづょぃ。
v6ptnl0(同剌の訬宙な曷ぃぞめね)か汁むづぃりめね、げるかVNE偳ねNICな凹杤づぃりげで(@enxa0cec81818aaね郧刅)。CEでBRねァトルジか兤ぢづぃづデヲヌリでざづ止帷な佛戏ごるづぃりげでゑ碹誌じり。(实隚なのげるゑ覊ぞたぐて止帷お刣よどぃおめたぐと)

DS-Liteで畯どらMAP-Eのデヲヌリか凹杤ぞたぐたでリ・ゾ・でざづ朞径ごるり這俠のてがどぃねてiptablesゑ勔おじ。
令剌ねmap.shね TUNDEV='ip6tnl1' ゑ 仉囝ね同积な夈曳じり。TUNDEV='v6ptnl0'。
ip -6 hogeね2衋、ip link hogeね2衋、route hogeね2衋、訇6衋ゑ剉陣ぽぞのゲムヲデなざづザジヅミ赶勔律な实衋。覀じりなiptables閡逢ね郧刅たぐ殊ざぞジギラブデなざづ实衋。

map.shゑ实衋じりでリ・ゾ・でざづ晭這な勔ぃづぃり筇。

  1. NetworkManager(OS刜朞犵慊)ゑ佾ぢづLAN偳で這俠叮胼て、VNEねヌヂデヮ・ギ偳でIPv6てっどかりげでゑ碹誌。
  2. ヌヂデヮ・ギね惄堰ゑムメり。
  3. systemd-networkdてLAN偳、VNE偳ね丠斸で掤継てがり訬宙ゑ佛り。
  4. NetworkManagerゑ焠劸匕ざsystemd-networkdゑ月劸匕じり。
  5. LAN偳で這俠叮胼て、VNEねヌヂデヮ・ギ偳でIPv6てっどかりげでゑ碹誌。
  6. ムメぢぞヌヂデヮ・ギ惄堰およMAP-Eねぞむねァトルジ筈ゑ佛戏じり。
  7. systemd-networkdてデヲヌリ甧ね訬宙ゑ佛り。
  8. デヲヌリか止帷な佛戏ごるりげでゑ碹誌じり。
  9. map.shねiptables郧刅たぐゑ实衋。(覀iptables)
  10. IPv4ねリ・ゾ・でざづね勔佛ゑ碹誌。

殴隍ゑ訬宙ざづ吃殴隍て勔佛碹誌じりげでか夦亊。佔めおめ1庥なざょぅでじりでIPv4ねリ・ゾ・でざづ勔佛ざどぃでどぢぞでがなとげか閒達ぢづぃりねお採ざなぎぃ。

NanoPi NEO3ねブヨジダヂギグ・ジ兤らの攽熰か上扊ぎぜどねてァィトリ犵慊てめ80℃令三(宣渨25℃)げるのArmbianてSoCギレヂギか1.5GHzねでが。Linuxてのカハド・かondemandどよSoCかァィトリどよギレヂギか上かりめねたで怜ぢづぃぞぐと、ジヅ・シかWIPねArmbianてのァィトリてめ培末1.5GHzてSoCか忘ざぃでがな晁々1.008GHzぎよぃぽて萼だり。ギレヂギね夈匕ね仔斸でざづの逅たで怜ぅざ渨庥か怤三昆ざぞゎぐてめどぃねなどせギレヂギか上かりねおの刣よどぃ。ぞた、げねギレヂギね勔がねずぃどねおの刣よどぃか、リ・ゾ・でざづね勔佛かジミ・ジたぢぞらカヂギカギ(偛ぽぢぞ>)などりげでか夙々ぁり。1.008GHzてギレヂギ囹宙ざぞでげれ、渨庥の70℃(颧ゑ归づりで60℃)な上から、遄ぎどぢぞら逞ぎどぢぞらめどぎどぢぞょぅどヺヺヺ

ボ・デポヂビヲクなバグヂデピアリゾnftablesゑ佾ぅ

$ sudo iptables --version
iptables v1.8.2 (nf_tables)

iptablesねハ・シユヲゑ碹誌ざづ三ね侊ねょぅなオヂゲね丬なnf_tablesで衧礹ごるぞよiptablesゑ佾ぢづぃりっめらて旡なnftablesゑ佾ぢづぃり。オヂゲか焠ぃどよ末杤ねiptablesゑ佾ぢづぃり。

$ sudo apt install nftables

nftablesねバヂグ・シゑィヲジデ・リ。nftablesね訬宙ピ゠ィリ(臩勔て説ま辻ぽるりリ・リピ゠ィリ)の /etc/nftables.conf 。げね /etc/nftables.conf か实衋叮ねバ・マヂザユヲなどぢづぃりげでゑ碹誌ざづぉぎ。

/etc/nftables.conf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#!/usr/sbin/nft -f

flush ruleset

table inet filter {
        chain input {
                type filter hook input priority 0;
        }
        chain forward {
                type filter hook forward priority 0;
        }
        chain output {
                type filter hook output priority 0;
        }
}
バヂグ・シィヲジデ・リ盳律ね朩夈曳犵慊どよげをど愞し。
iptables郧刅たぐな曷が揚ぇぞmap.shね替律ね衋かnftablesての云揚怦かどぃ郧刅かぁりねて俭止。(啎顋どぎ勔ぎぐと)
iptables -t mangle -o $TUNDEV --insert FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

map.shゑ实衋。
リ・ゾ・でざづ橞胼じりげでゑ碹誌。

$ sudo nft list ruleset

map.shて遨甧ざぞiptablesねリ・リゑnftablesねリ・リ曷弎て衧礹。

げね冄宸ゑ/etc/nftables.confね律な迼託じり。めざぎの旡字ねtable inet filterの覀よどぃねてflush rule set ね欠ね衋およ替律ぽてゑ涇ざづおよ迼功。
chain PREROUTINGね丬なぁり counter packets xx bytes xxxx meta ね郧刅ゑ15衋內づて剉陣。
chain POSTROUTINGね丬なぁり counter packets xx bytes xxxx ね郧刅ゑ45衋內づて剉陣。
chain OUTPUTね丬なぁりcounter packets xx bytes xxxx meta ね郧刅ゑ15衋內づて剉陣。
っぽら、
%s/counter.*meta//g
%s/counter.*snat/snat/g
ェテアゾて罭揚2囝て絁ゎら。綹麖しもどぃぐと罭揚焠ざてめ勔ぎねの勔ぎ。
罭揚寽豠ねヅ・フリねtable ip natねリ・リたぐどよ nft list table ip nat てめ。げだよの罭揚の覀よどぃか、归焵table ip natねリ・リざお覊ぇどぃねて table ip mangle ねリ・リめ趲じ忄覀かぁり。ヅ・フリラジデゑ覊りどよ nft list tables

/etc/nftables.conf (夈曳律ね侊)
#!/usr/sbin/nft -f

flush ruleset

table ip nat {
        chain PREROUTING {
                type nat hook prerouting priority -100; policy accept;
                numgen inc mod 15 0  mark set 0x11 
                numgen inc mod 15 1  mark set 0x12 
                numgen inc mod 15 2  mark set 0x13 
                numgen inc mod 15 3  mark set 0x14 
                numgen inc mod 15 4  mark set 0x15 
                numgen inc mod 15 5  mark set 0x16 
                numgen inc mod 15 6  mark set 0x17 
                numgen inc mod 15 7  mark set 0x18 
                numgen inc mod 15 8  mark set 0x19 
                numgen inc mod 15 9  mark set 0x1a 
                numgen inc mod 15 10  mark set 0x1b 
                numgen inc mod 15 11  mark set 0x1c 
                numgen inc mod 15 12  mark set 0x1d 
                numgen inc mod 15 13  mark set 0x1e 
                numgen inc mod 15 14  mark set 0x1f 
        }

        chain INPUT {
                type nat hook input priority 100; policy accept;
        }

        chain POSTROUTING {
                type nat hook postrouting priority 100; policy accept;
                oifname "v6ptnl0" meta l4proto icmp mark 0x11 snat to IPv4ァトルジ:6xxx-6xxx
                oifname "v6ptnl0" meta l4proto tcp mark 0x11 snat to IPv4ァトルジ:6xxx-6xxx
                oifname "v6ptnl0" meta l4proto udp mark 0x11 snat to IPv4ァトルジ:6xxx-6xxx
                oifname "v6ptnl0" meta l4proto icmp mark 0x12 snat to IPv4ァトルジ:10xxx-10xxx
                oifname "v6ptnl0" meta l4proto tcp mark 0x12 snat to IPv4ァトルジ:10xxx-10xxx
                oifname "v6ptnl0" meta l4proto udp mark 0x12 snat to IPv4ァトルジ:10xxx-10xxx
                oifname "v6ptnl0" meta l4proto icmp mark 0x13 snat to IPv4ァトルジ:15xxx-15xxx
                oifname "v6ptnl0" meta l4proto tcp mark 0x13 snat to IPv4ァトルジ:15xxx-15xxx
                oifname "v6ptnl0" meta l4proto udp mark 0x13 snat to IPv4ァトルジ:15xxx-15xxx
                oifname "v6ptnl0" meta l4proto icmp mark 0x14 snat to IPv4ァトルジ:19xxx-19xxx
                oifname "v6ptnl0" meta l4proto tcp mark 0x14 snat to IPv4ァトルジ:19xxx-19xxx
                oifname "v6ptnl0" meta l4proto udp mark 0x14 snat to IPv4ァトルジ:19xxx-19xxx
                oifname "v6ptnl0" meta l4proto icmp mark 0x15 snat to IPv4ァトルジ:23xxx-23xxx
                oifname "v6ptnl0" meta l4proto tcp mark 0x15 snat to IPv4ァトルジ:23xxx-23xxx
                oifname "v6ptnl0" meta l4proto udp mark 0x15 snat to IPv4ァトルジ:23xxx-23xxx
                oifname "v6ptnl0" meta l4proto icmp mark 0x16 snat to IPv4ァトルジ:27xxx-27xxx
                oifname "v6ptnl0" meta l4proto tcp mark 0x16 snat to IPv4ァトルジ:27xxx-27xxx
                oifname "v6ptnl0" meta l4proto udp mark 0x16 snat to IPv4ァトルジ:27xxx-27xxx
                oifname "v6ptnl0" meta l4proto icmp mark 0x17 snat to IPv4ァトルジ:31xxx-31xxx
                oifname "v6ptnl0" meta l4proto tcp mark 0x17 snat to IPv4ァトルジ:31xxx-31xxx
                oifname "v6ptnl0" meta l4proto udp mark 0x17 snat to IPv4ァトルジ:31xxx-31xxx
                oifname "v6ptnl0" meta l4proto icmp mark 0x18 snat to IPv4ァトルジ:35xxx-35xxx
                oifname "v6ptnl0" meta l4proto tcp mark 0x18 snat to IPv4ァトルジ:35xxx-35xxx
                oifname "v6ptnl0" meta l4proto udp mark 0x18 snat to IPv4ァトルジ:35xxx-35xxx
                oifname "v6ptnl0" meta l4proto icmp mark 0x19 snat to IPv4ァトルジ:39xxx-39xxx
                oifname "v6ptnl0" meta l4proto tcp mark 0x19 snat to IPv4ァトルジ:39xxx-39xxx
                oifname "v6ptnl0" meta l4proto udp mark 0x19 snat to IPv4ァトルジ:39xxx-39xxx
                oifname "v6ptnl0" meta l4proto icmp mark 0x1a snat to IPv4ァトルジ:43xxx-43xxx
                oifname "v6ptnl0" meta l4proto tcp mark 0x1a snat to IPv4ァトルジ:43xxx-43xxx
                oifname "v6ptnl0" meta l4proto udp mark 0x1a snat to IPv4ァトルジ:43xxx-43xxx
                oifname "v6ptnl0" meta l4proto icmp mark 0x1b snat to IPv4ァトルジ:47xxx-47xxx
                oifname "v6ptnl0" meta l4proto tcp mark 0x1b snat to IPv4ァトルジ:47xxx-47xxx
                oifname "v6ptnl0" meta l4proto udp mark 0x1b snat to IPv4ァトルジ:47xxx-47xxx
                oifname "v6ptnl0" meta l4proto icmp mark 0x1c snat to IPv4ァトルジ:51xxx-51xxx
                oifname "v6ptnl0" meta l4proto tcp mark 0x1c snat to IPv4ァトルジ:51xxx-51xxx
                oifname "v6ptnl0" meta l4proto udp mark 0x1c snat to IPv4ァトルジ:51xxx-51xxx
                oifname "v6ptnl0" meta l4proto icmp mark 0x1d snat to IPv4ァトルジ:56xxx-56xxx
                oifname "v6ptnl0" meta l4proto tcp mark 0x1d snat to IPv4ァトルジ:56xxx-56xxx
                oifname "v6ptnl0" meta l4proto udp mark 0x1d snat to IPv4ァトルジ:56xxx-56xxx
                oifname "v6ptnl0" meta l4proto icmp mark 0x1e snat to IPv4ァトルジ:60xxx-60xxx
                oifname "v6ptnl0" meta l4proto tcp mark 0x1e snat to IPv4ァトルジ:60xxx-60xxx
                oifname "v6ptnl0" meta l4proto udp mark 0x1e snat to IPv4ァトルジ:60xxx-60xxx
                oifname "v6ptnl0" meta l4proto icmp mark 0x1f snat to IPv4ァトルジ:64xxx-64xxx
                oifname "v6ptnl0" meta l4proto tcp mark 0x1f snat to IPv4ァトルジ:64xxx-64xxx
                oifname "v6ptnl0" meta l4proto udp mark 0x1f snat to IPv4ァトルジ:64xxx-64xxx
        }

        chain OUTPUT {
                type nat hook output priority -100; policy accept;
                numgen inc mod 15 0  mark set 0x11 
                numgen inc mod 15 1  mark set 0x12 
                numgen inc mod 15 2  mark set 0x13 
                numgen inc mod 15 3  mark set 0x14 
                numgen inc mod 15 4  mark set 0x15 
                numgen inc mod 15 5  mark set 0x16 
                numgen inc mod 15 6  mark set 0x17 
                numgen inc mod 15 7  mark set 0x18 
                numgen inc mod 15 8  mark set 0x19 
                numgen inc mod 15 9  mark set 0x1a 
                numgen inc mod 15 10  mark set 0x1b 
                numgen inc mod 15 11  mark set 0x1c 
                numgen inc mod 15 12  mark set 0x1d 
                numgen inc mod 15 13  mark set 0x1e 
                numgen inc mod 15 14  mark set 0x1f 
        }
}
table ip mangle {
        chain PREROUTING {
                type filter hook prerouting priority -150; policy accept;
        }

        chain INPUT {
                type filter hook input priority -150; policy accept;
        }

        chain FORWARD {
                type filter hook forward priority -150; policy accept;
                oifname "v6ptnl0" meta l4proto tcp tcp flags & (syn|rst) == syn  tcp option maxseg size set rt mtu
        }

        chain OUTPUT {
                type route hook output priority -150; policy accept;
        }

        chain POSTROUTING {
                type filter hook postrouting priority -150; policy accept;
        }
}
ボ・デ畩叶どと畯どり郧刅のぁりおめたぐとげをど愞しなどり筇。
$ sudo systemctl enable nftables.service

nftablesバヂグ・シゑィヲジデ・リざぞ堳吇の月劸匕ごるづぃどぃ叮胼怦かぁりねて实衋ざづぉぎ。旡な月劸匕ごるづぃづめ彰韾焠ざ。

欠囝およのザジヅミ赶勔晁なnftablesか臩勔皃なげねリ・リゑ説ま辻みねてmap.shゑ臩勔实衋じり訬宙なざづぃぞどよぜるゑ涇じ。
勔佛碹誌でざづザジヅミゑ册赶勔ざづリ・ゾ・でざづ橞胼じりげでゑ碹誌。

どぉ、げね託亊ての「リ・ゾ・でざづ橞胼じりげでゑ碹誌」でお曷ぃづりぐと、LANね丬ね竮未かIPv4てィヲゾ・ヌヂデ偳で這俠ざぞぃでがなげぃっかぜねリ・ゾ・てぁりげでゑ勜扊な矤ぢづのぎるどぃ。ぜるそるね竮未なテピエリデケ・デゥウィね訬宙ゑ囹宙て曷ぎお、DHCPゴ・ハねリ・ゾ・ォブザユヲな挆宙じりお。げるの判逓衋ぢづぎたごぃ。

げるて、氖刅の䷿斯。ぞたざ、訬宙ね曷が斸か達ぅたぐて实隚の佔め夈ゎぢづどぃをしもどぃおでぃぅ氖のざどぃてめどぃ。めざおざぞよnftablesね訬宙ね曷が斸なょぢづのピアリゾラヲク凥琅か髗逞匕ざぞら達ぃゑ凹ずりねおめざるどぃぐと、nftables末杤ね訬宙ね曷が斸ゑ覊りねめ觥りねめ仉囝か姊むづどねて艮ぎ觢ぢづどぃ。

閡逢託亊:

コメント: NanoPi NEO3をv6プラスのルーターにする systemd-networkd + nftables

  1. すでに同じようなことをされていたのですね。気付かなくてスミマセン。「がとらぼ」へのリンクもありがとうございます。
    nftablesに変更してからv6プラスのポート240個が適切に使われているのか自信がなかったのですが、その辺りも書かれていたので参考にさせて貰います。nftablesのカウンターを使うと使われていないポートグループが判る?
    コメント欄はWordPressの標準機能そのままなのでマルチバイト文字のドメインはpunyで書かないと弾かれるかも。

コメントは締め切られています。