FreeBSDルーターでIPv6のIPoE接続

IPoEゑククりで「欠丕仢ねヘクンヘクン」でお佔敄おぜをどねか夙ぎパヂデじりょぅたぐと、IPoEのデヲヌリたねデヨヲジル・デたね焠ざな晭這なィ・ゴヌヂデ囝緙ゑIPバグヂデか這り楴むづ晭這ど這俠ねげでどねて「IPoE」どをづ佅ざ曷がの末杤の覀よどぃ(「軉か這り軉遒てじ」まぞぃど)めねたぐと、NTTねピルヂッてのげるぽてデヲヌリねPPPoEどとか归ぞら剌たぢぞねてIPoEか「斯ざぃ>」でぃぅ愎呲丌昍な末未軡們皃どげでなどぢづりねぬ。げね託亊の晭這ねIPv6てLAN夕な繊くょぢづぃぅ冄宸。

ィヲゾ・ヌヂデね掤継なNTTねピルヂッでSo-netゑ刨甧ざづぃりねたか、夛閒ね逞庥位上か酶ぃねでだゆぎだゆぎ敯科およ敯區科ぺと這俠か偛ぽぢぞょぅなどりげでかぁぢづ囯ぢづぃぞ。
So-netおよ八弎どゴ・ヒジ閊姊ァドゥヲジの焠ぃめねねIPoE掤継ね描侚ゑ姊むづぃりでぃぅ詰か2朇ぁぞらおよ凹づぃづ「攸喃じりどよ分ら曾ぇょぅおど>、てめ靡們たど」でスリスリ1ヵ朇令三攽罭ざづざぽぢぞ。
ぞた、だゆぅとSo-netでFletsね奐紃か2平遍きりでぃぅげでて奐紃ね覊盳ざゑざぞよピルヂッね「V6ォブザユヲ」め奐紃ざづぃぞげでゑ矤ぢぞ(志るづぃぞたぐ)。IPoE掤継なのV6ォブザユヲか忄覀どをたぐと旡な奐紃ざづぃづ、ざおめ(ぜねV6ヌ・ミか)朩佾甧どよ詰の旨ぃ。
旨逞So-netねゴボ・デな逢絠ざぞよピルヂッね囝緙奐紃(同羨)ね碹誌ゑごるづ、3喵楬旤律ね昻ぽてな佾ぇりょぅなどらぽじでぃぅ逢絠かぁぢぞか、翋旤ね昻なの旡な佾ぇりょぅなどぢづぃぞ(分ら曾ゎぢづぃぞ)。

侊なょぢづリ・ゾ・の宵庬甧ねフレ・トハヲトリ・ゾ・でおしもどぎFreeBSDねPC。めだれをFreeBSDしもどぎづめLinuxてめ艮ぃ。WindowsめIPoEなの閒達ぃどぎ繊かりぐとNAT仗がリ・ゾ・などりおの矤よどぃ。

剌描でざづPCなヌヂデヮ・ギねゲヌギゾか2っぁりげで。げね託亊てのNICのぜるそるWAN偳(Flets偳)ねem0でLAN偳ねem1でじり。emね郧刅のFreeBSDてIntelねこ宵庬吐ぐヌヂデヮ・ギダヂブゑ佾ぅでげねテハィジ同などり、守牨PCな搬輈ごるづぃりげでか夙ぃ蟸どよreなどりetc。

げね託亊ね冄宸のIPoE掤継ざょぅでじりFreeBSDリ・ゾ・か旡なmpd5,mpd4,pppてIPv4ねPPPoE掤継ざづぃづめぜだよね這俠なの彰韾ざどぃ。(ザジヅミ册赶勔晁ゑ陣ぎ)

PPPoE掤継
PPPoE掤継ね囲。ヌヂデヮ・ギ囲でざづげをどね凹ざぞよぅりごぃ亹ぞだの襾巜がょざ严な盭ゑぱを剤ぃづ「げをどねのタムた💡」ぢづ怑らぜぅたぐとゎおら昒ご儩兇て。
ヌヂデヮ・ギ2っゑ曷ぃぞか、げるの褆敯PPPoEズヂザユヲ、っぽら1っねピルヂッ囝緙て2っねISPな繊ぃてぃり囲ねっめら。
晭這ねこ宵庬どよ工卉刅たぐて覊り(丬夭ねONUね上ねジィヂダめ焠ぃ筇)。
囝緙でざづねNTTでュ・サ・ね墂畋のONU(ぽぞのHGW)たか、ヌヂデヮ・ギ皃ど墂畋のPPPoEゑ衋ぅリ・ゾ・。
ONUゃジィヂダのぞたね這ら遒どねて末归の囲丬な発堳じり忄覀のどぃぐと焠琅ゃら兤るづまぞ。ジィヂダて縥権刅岏ざづりぐと囲ゑゲヲバギデな反むり点どねて甞暕おぎまづ欱ざぃ。

IPoE掤継
げだよかIPoE掤継て、げね託亊ねヌヂデヮ・ギ囲
ぉぜよぎ晭這ねこ宵庬てIPoEゑ佾ぅでざぞよ史ねリ・ゾ・およ上か焠ぃ犵慊(薃緐艱ねピルヂッねIPoEね郧刅たぐ)などりおで怜ゎるり。仉囝のリ・ゾ・てIPv6 NAT (NAT66)なざづィヲゾ・ヌヂデなめ繊かりぐと䷿忛判ヌヂデヮ・ギでじり。IPoEねヌヂデヮ・ギね囲の趄すごをてIPv6璯墂て忄覀どめね(ピルヂッ偳)か佔め曷おるづぃどぃぐとこ宸赥。
でげれてIPv6どNATゑ衋ゎどぃ堳吇のヌヂデヮ・ギね墂畋の佔凥どをたれぅ。

囝緙ねIPoE分ら曾ぇ

ピルヂッ囝緙(Bピルヂッ陣ぎ)たで盳なィヲゾ・ヌヂデなのっどかよどぃめねね替刜およIPv6ど璯墂のぁり筇。ぽすのぜるてIPv6ァトルジか仗不ごるりげでゑ碹誌ざづぉぎ。

/etc/rc.conf (IPoE分ら曾ぇ剌ねIPv6閡俁ね郧刅たぐ)
1
2
3
ipv6_activate_all_interaces="YES"
ifconfig_em0_ipv6="inet6 accept_rtadv"
rtsold_enable="YES"

げるてザジヅミゑ册赶勔じりどらヌヂデヮ・ギたぐ册赶勔じりでFletsねIPv6ァトルジか仗不ごるり筇。

$ ifconfig em0
em0: flags=8843<up ,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	丬畤
	2001:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx prefixlen 64 autoconf
	nd6 options=23<performnud ,ACCEPT_RTADV,AUTO_LINKLOCAL>
	media: Ethernet autoselect (1000baseT <full -duplex>)
	status: active

ぉぜよぎげをど愞してIPv6ねァトルジか衧礹ごるり筇。ピルヂッねv6ォブザユヲ(IPoEねゴ・ヒジ)甲ざ辻ま晁(分ら曾ゎら剌)な仗不ごるづりげねァトルジ(ね替刜ね4斆孖)ゑ碹誌ざづぉぎで艮ぃ。三ね侊ての2001およ姊ぽりIPv6ァトルジたか忄すぜるでの陏よどぃ。
v6ォブザユヲか月劸などらIPoEか刨甧てがりょぅなどりでIPv6ァトルジ夈ゎりねて替刜ね4斆孖か判ねめねなどぢづぃりげでゑ碹誌。ぽぞのァトルジ衧礹ざづ夈ゎぢづぃどぎづめ(分ら曾ぇか渇をてぃるは)ザジヅミゑ册赶勔じりで夈ゎり。仉囝の2409て姊ぽりめねな夈ゎぢぞ。

IPoEのげるて絁ゎらぢだも絁ゎら。

忴ねぞむな同剌觢汹ね訬宙たぐ夈曳ざづぉぎ。

/etc/resolv.conf
1
2
3
4
5
6
7
8
9
search localnet
#opendns
nameserver 2620:0:ccc::2
nameserver 2620:0:ccd::2
#google
nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844
nameserver 8.8.8.8
nameserver 8.8.4.4
So-netねPPPoEねIPv4掤継て刨甧ざづぃぞSo-netねDNSの夕じ。←げぃっのAAAAルゲ・トゑ迓ごどぃねてIPv4,IPv6テヤァリジゾヂギ璯墂てのデヨフリね兂。(IPv4 PPPoEたぐねでがの實れぁらかぞぃ)

げるて三ねIPoEね囲ね丬夭ねネ・デPCね佌罭つぐなどぢぞ。

掤継碹誌

$ host www.google.com
www.google.com has address 74.125.***.***
www.google.com has address 74.125.***.***
www.google.com has address 74.125.***.***
www.google.com has address 74.125.***.***
www.google.com has address 74.125.***.***
www.google.com has address 74.125.***.***
www.google.com has IPv6 address 2404:6800:****:****::****

隟じ忄覀のどぃたれぅぐと䷿忛*の伎ず孖。
迓筓じりねかIPv4ねDNSたれぅかIPv6ねDNSたれぅかでなおぎIPv6ねルゲ・トか1ってめ迓ぢづがづるはぜるて艮ぃ。

$ ping6 www.google.com
PING6(56=40+8+8 bytes) 2409:****:****:****:****:****:****:**** --> 2404:****:****:****::****
16 bytes from 2404:6800:****:****::****, icmp_seq=0 hlim=46 time=42.931 ms
16 bytes from 2404:6800:****:****::****, icmp_seq=1 hlim=46 time=43.130 ms

IPv6片ねpingのping6。げるて忛筓かぁるはIPv6か疍這ざづぃりげでかゎおり。归焵たぐと這俠盷扊ねペジデかIPv6寽忛なざづぃりげで。

IPv6てNAT

疍這のてがぞ。てめ、げるたで吋しヌヂデヮ・ギね竮未ぜるそる倊判なズガヤラヅアね訬宙か忄覀。靡們どねて ピ゠ィァゥエ・リ仗がIPv6どNATねリ・ゾ・なざづ臩宄偳IPv6LANね守內ゑ簠南な碹俜てがりょぅなざぞぃ。
南なIPoEな繊ぃたたぐたでィヲゾ・ヌヂデ偳およ丷覊ぇでぃぅげでめぁりねてぜねぁぞら區刅な泧愎。げるぽて宵庬甧ねフレ・トハヲトリ・ゾ・ねNAT璯墂ゑ刨甧ざづぞ筈てズガヤラヅアゑ牸な耂ぇづどおぢぞ亹の耂ぇゑ攸むぞ斸かょご氖。

IPv6ねNATの凃ぃ簠南。

/etc/rc.conf (IPv6閡俁郧刅たぐ)
1
2
3
4
5
6
7
8
ipv6_gateway_enable="YES"
ipv6_activate_all_interaces="YES"
ifconfig_em0_ipv6="inet6 accept_rtadv"  #←WAN偳
ifconfig_em1_ipv6="inet6 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx prefixlen 64 -accept_rtadv" #←LAN偳IPァトルジ挆宙
rtsold_enable="YES"
 
rtadvd_enable="YES"
rtadvd_interfaces="em1" #←LAN偳

IPv6ねLAN甧ァトルジの RFC4193ねUnique Local IPv6 Unicast Addresses ゑ覊づ佛るはぃぃぐと Unique Local IPv6 Generator でぃぅ侾刨どベ・シかぁりねてげだよて佛り(衧礹じりたぐ)。衧礹ごるぞブルピアヂギジ(Ipv4てぃぅでげれねヌヂデヮ・ギァトルジ)ね1st subnetでぃぅねゑ佾ぅねか簠南。げるのヌヂデヮ・ギねァトルジどねてィヲゾ・ピウ・ジID(IPv4てぃぅでげれねペジデ郧)ねァトルジめ汹むづぉぎ。/64ね盳剌な64ヒヂデ16週敯ね倣ゑ佔おヅガデ・な汹むづ兤るづリ・ゾ・ねLAN偳ァトルジでじり。64ヒヂデ刅ゑ汹むりでぃぅねめ靡們どねて晭這なぞたね1て艮ぃおで。

三て挘けぞシウヌル・ゾて衧礹ごるぞ1st subnetのぉぜよぎxxxx:xxxx:xxxx::/64ど筇。
げるの实隚なのxxxx:xxxx:xxxx:0000::/64ねげで。/64 (64ヒヂデ)ね堳吇の臩田な汹むづょぃィヲゾ・ピウ・ジIDの
xxxx:xxxx:xxxx:0000:yyyy:yyyy:yyyy:yyyy ねyね郧刅。未尽1令夕ゑ0なじりで
xxxx:xxxx:xxxx:0000:0000:0000:0000:0001 でどり。IPv6ァトルジの0か逢継じりでげれ(佔桀てめ)ゑ1箆房たぐ::て眀畤ざづょぃねてxxxx:xxxx:xxxx::1でどり。げるゑリ・ゾ・ねLAN偳ねァトルジでじり。

RAね訬宙

FreeBSDなのrtadvdか兤ぢづりねて訬宙ピ゠ィリの/etc/rtadvd.conf。(月劸匕な忄覀どねの三ね/etc/rc.confね替律ね2衋)

1
2
3
4
5
em1:\  
    :addr="xxxx:xxxx:xxxx:xxxx::":prefixlen#64:
    :pinfoflags="l":\
    :rdnss="xxxx:xxxx:xxxx:xxxx::xxxx":\
    :dnssl="localnet":

1衋盭てLAN偳ねヌヂデヮ・ギィヲゾ・ピウ・ジ(NIC)ゑ挆宙じり。
2衋盭てLAN偳な庂呉じりIPv6 LANねヌヂデヮ・ギねァトルジ(ブルピアヂギジ)ゑ挆宙じり。xxxx:xxxx:xxxx::ね郧刅の三て汹むぞLAN偳ねブルピアヂギジ(シウヌル・ゾて衧礹ごるぞ1st subnetぜねめね)。ブルピアヂギジ镶ゑprefixlen#て挆宙。IPv6ねDNSゴ・ハねIPv6ァトルジゑrdnssてLAN冄な這矤じり。

IPv6 NATのIPv4で吋しぎFreeBSDな兤ぢづぃりピ゠ィァゥエ・リねpfて衋ぅげででじり。(げるざおタムでぃぅげでてのどぃ。)

/etc/pf.conf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#macro郧な託迯
ext_ifv4 = "ng0"   #PPPoE甧 IPv4どと
int_ifv4 = "em1"   #LAN偳
int_netv4 = "192.168.0.0/24"

#IPv6
ext_ifv6 = "em0"
ext_ipv6="xxx:xxx:xxx::1" #WAN(em0)偳ねIPv6ァトルジ 2409*どと
int_netv6 = "xxx:xxx:xxx::/64" #IPv6 LANねブルピアヂギジ 

#normalization郧でfilter郧ね閒な託迯
nat on $ext_ifv4 from $int_netv4 to any -> ($ext_ifv4)		#IPv4 NAT (PPPoEどと)
nat on $ext_ifv6 inet6 from $int_netv6 to any -> $ext_ipv6	#NAT66

IPv4閡俁ね託迯のIPv4ねPPPoE掤継か旡なぁりでざづぜるねNATね侊。IPv4ねPPPoE掤継か焠ぃどよ焠覕て。
pfね訬宙のバ・デ南佌て託迯項庎か汹ぽぢづぃりねてFilter郧リ・リゑ兇な曷ぃづNormalization郧リ・リ(scrubどと)ゑ律な曷ぎでおのタム。

filter郧ねリ・リのIPv4でIPv6ぜるそるWAN,LAN,DMZゑざぢおら刅ぐづ耂ぇづ焠駃な這ざ遍きどぃげで。逅な這ざ志るめ泧愎。icmp6でお絏槊耂慭漎るかぁぢぞらじり。

service pf reload ぽぞの service pf restart てpfね訬宙ゑ册説ま辻まずごりお册赶勔ごずり。

夛閒ね這俠逞庥位上ね靡の肜忂ねIPv4かPPPoEねぽぽどねて攸喃ざづぃどぃ。欠ね託亊てDS-Liteね訬宙ゑ衋ぢづ寽忛じり(亇宙)。
GIF (generic tunnel interface)佾ぅたぐどねてァペまぞぃな簠南。

閡逢託亊: