<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>dhcpv6 &#8211; richliu&#039;s blog</title>
	<atom:link href="https://richliu.com/tag/dhcpv6/feed/" rel="self" type="application/rss+xml" />
	<link>https://richliu.com</link>
	<description>Linux, 工作, 生活, 家人</description>
	<lastBuildDate>Mon, 25 Apr 2016 09:02:38 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>[Gentoo][Linux] Hinet PPPoE IPv6 Dual Stack 設定</title>
		<link>https://richliu.com/2016/03/07/1930/hinet-pppoe-ipv6-dual-stack-%e8%a8%ad%e5%ae%9a/</link>
					<comments>https://richliu.com/2016/03/07/1930/hinet-pppoe-ipv6-dual-stack-%e8%a8%ad%e5%ae%9a/#comments</comments>
		
		<dc:creator><![CDATA[richliu]]></dc:creator>
		<pubDate>Mon, 07 Mar 2016 06:19:46 +0000</pubDate>
				<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[dhcpv6]]></category>
		<category><![CDATA[dual stack]]></category>
		<category><![CDATA[hinet]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[routing]]></category>
		<guid isPermaLink="false">https://richliu.com/?p=1930</guid>

					<description><![CDATA[<p>自從中研院 Tunnel Broker 因為硬碟壞掉終止服務, Hinet Tunnel Broker 一直斷 [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://richliu.com/2016/03/07/1930/hinet-pppoe-ipv6-dual-stack-%e8%a8%ad%e5%ae%9a/">[Gentoo][Linux] Hinet PPPoE IPv6 Dual Stack 設定</a> appeared first on <a rel="nofollow" href="https://richliu.com">richliu&#039;s blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>自從中研院 Tunnel Broker 因為硬碟壞掉終止服務, Hinet Tunnel Broker 一直斷線根本不能用.<br />
己經很久沒有使用 IPv6 的服務.<br />
前二天聽到 Kenduest Lee 說到 Hinet 光世代 PPPoE 有 IPv6 的服務, 立馬就跑去申請.<br />
<span id="more-1930"></span>第一件事, 請到中華電信營業所申請 IPv6 的服務, 這邊特別提醒,<br />
不是每個服務人員都熟悉什麼叫 IPv6, 你碰到的服務人員可能不懂, 這也表示 IPv6 這個服務非常少人使用.<br />
所以如果他們不知道你在說什麼, 請查資料並多些耐心<br />
希望我今天這篇文章可以吸引更多人來用 IPv6 的服務 (目前好像也沒有什麼好處 XD)</p>
<p>剛剛長輩提示, Hinet 也可以線上申請 IPv6</p>
<p>到 <a href="https://123.cht.com.tw/ecas/B09" target="_blank" rel="noopener">中華電信網路客服中心</a> , 選更多線上服務.<br />
找到 IPv6 , 登入之後再申請即可</p>
<p>&nbsp;</p>
<p>開通之後, 快的話數個小時就會開通, 如果沒有開通, 過幾天工程人員也會打電話通知你.</p>
<p>如何知道有沒有開通, PPPoE 設定完之後, 重新撥接可以用 PPPoE or DHCP 取得 IPv6 IP.</p>
<p>如果是 ubuntu 預設套件, 請編輯 /etc/ppp/option<br />
並且加上</p>
<blockquote><p>ipv6 ,</p></blockquote>
<p>請注意有逗號, 中間有空白. 然後再重新撥接 PPPoE 就可以.</p>
<p>如果是用 Gentoo/rp-pppoe, 請編輯 /etc/ppp/option 加上這一行</p>
<blockquote><p>+ipv6 ipv6cp-use-ipaddr</p></blockquote>
<p>這樣就可以取得 IPv6 IP.</p>
<p>如果不能取得 IP, 請檢查有沒有執行 radvd<br />
Gentoo 執行 /etc/init.d/net.ppp0 restart 之後, 會自動帶起來 radvd, 這時候會造成 radvd 影響取得 IPv6 的 IP<br />
所以在 /etc/rc.conf 下將 rc_depend_strict 設 &#8220;NO&#8221; 就不會自動呼叫 radvd (其他 service dependency 也會受影響, 請注意)</p>
<p>另外還在 /etc/conf.d/net 加上 code 確保 radvd 一定沒有執行</p>
<blockquote><p>postdown() {<br />
if [ ${IFVAR} == &#8220;ppp0&#8221; ] ; then<br />
/etc/init.d/radvd stop<br />
sleep 2<br />
killall -9 radvd<br />
fi<br />
return 0<br />
}</p></blockquote>
<p>如果 Linux 這一台是 Router 時, 從 Hinet 那邊取得的 IPv6 Routing 要稍稍修改一下才能正確傳遞到內網<br />
因為預設的 Interface 是 /64 的 IP, 在 route table 那邊會多一行 /64 的 routing table, 這個 record 會讓 IPv6 Forwarding 不正常<br />
像是這樣,</p>
<blockquote><p>2001:b011:3810:cc9::/64 :: UA 256 0 0 ppp0</p></blockquote>
<p>這時候就要重新設定 ppp interface 的 IP 和 routing table.</p>
<p>所以我做了如下的設定<br />
1) 取得 IPv6/default gateway IP<br />
2) 將 ppp0 的 interface 改成 /128<br />
3) 寫入資訊到 radvd<br />
4) 啟動 radvd<br />
5) 加入原來 hinet 的 default gateway IP</p>
<p>這樣就大功告成了, 內網也可以順利的透過 Linux 連到外部去.<br />
這邊就不解釋各步驟要下什麼指令, 直接看 script 比較快</p>
<blockquote><p>WANIF=ppp0<br />
LANIF=eth1<br />
WANIP=`ifconfig ppp0 | grep inet6 | grep global | awk &#8216;{print $2}&#8217;`</p>
<p>if [ x${WANIP} == &#8220;x&#8221; ] ; then<br />
echo &#8220;NO IPv6 Address !!!!!!!&#8221;<br />
exit 0<br />
fi</p>
<p>GATEWAY=`route -n6 | grep ppp0 | grep &#8220;::\/0&#8243; | awk &#8216;{print $2}&#8217;| head -1`<br />
RADVDCFG=&#8221;/etc/radvd.conf&#8221;<br />
PREFIX=`echo ${WANIP}| cut -d &#8216;:&#8217; -f1`&#8221;:&#8221;`echo ${WANIP}| cut -d &#8216;:&#8217; -f2`&#8221;:&#8221;`echo ${WANIP}| cut -d &#8216;:&#8217; -f3`&#8221;:&#8221;`echo ${WANIP}| cut -d &#8216;:&#8217; -f4`<br />
echo &#8220;WANIP : ${WANIP}&#8221;<br />
echo &#8220;GATEWAY : ${GATEWAY}&#8221;<br />
echo ${PREFIX}<br />
# Create RADVD configuration file<br />
cat&gt;${RADVDCFG}&lt;&lt;EOL<br />
interface ${LANIF}<br />
{<br />
AdvSendAdvert on;<br />
prefix ${PREFIX}::/64<br />
{<br />
AdvOnLink on;<br />
AdvRouterAddr on;<br />
AdvAutonomous on;<br />
};<br />
};<br />
EOL</p>
<p>ifconfig ${WANIF} inet6 del ${WANIP}/64<br />
ifconfig ${WANIF} inet6 add ${WANIP}/128<br />
# assign one for LAN to avoid routing problem<br />
ifconfig $(LANIF) inet6 add ${PREFIX}::1/64</p>
<p>ip -6 route del ${PREFIX}::/64 dev ppp0<br />
sleep 1<br />
/etc/init.d/radvd start<br />
sleep 1</p>
<p>route -A inet6 add default gw ${GATEWAY} dev ${WANIF}</p></blockquote>
<p>有防火牆也可以參考這個 script 取得目前的 IP .</p>
<p>在 /etc/conf.d/net 加上一些 code 讓他呼叫這個 scrip.</p>
<blockquote><p>postup() {</p>
<p>if [ ${IFVAR} == &#8220;ppp0&#8221; ] ; then<br />
echo test<br />
sleep 3<br />
bash /usr/local/script/ipv6.sh<br />
fi<br />
return 0<br />
}</p></blockquote>
<p>如果是用 dhcpcd 這個套件取得 IP, 並且要設定另一個介面的 Interface , 可以參考這個設定</p>
<blockquote><p>duid<br />
noipv6rs<br />
waitip 6<br />
# Uncomment this line if you are running dhcpcd for IPv6 only.<br />
ipv6only</p>
<p># use the interface connected to WAN<br />
interface ppp0<br />
ipv6rs<br />
iaid 1<br />
# use the interface connected to your LAN<br />
ia_pd 1 eth2<br />
#ia_pd 1/::/64 eth2/0/64</p></blockquote>
<p>小州大大的 DHCP6C 配置 (偷來放 BLOG 他應該不會介意)</p>
<blockquote><p># use the interface connected to your WAN<br />
interface ppp0 {<br />
send ia-pd 0;<br />
};</p>
<p>id-assoc pd 0 {<br />
# use the interface connected to your LAN<br />
prefix-interface eth2 {<br />
sla-id 1;<br />
sla-len 8;<br />
};<br />
};</p></blockquote>
<p>之前在 Facebook 上和小州大大討論過, 他是用 PPPoE 取得第一段 IPv6 , 用 DHCPv6 取得第二段, 所以會拿到二組不同的 IPv6 IP.<br />
我這個方法設定麻煩, 但是只會拿到一組 IPv6 的 IP.</p>
<p>Ref.<br />
<a href="http://blog.xuite.net/zack_pan/blog/62384661-Linux透過PPPoE取得IPv6的IP" target="_blank" rel="noopener">Linux透過PPPoE取得IPv6的IP</a></p>
<p>The post <a rel="nofollow" href="https://richliu.com/2016/03/07/1930/hinet-pppoe-ipv6-dual-stack-%e8%a8%ad%e5%ae%9a/">[Gentoo][Linux] Hinet PPPoE IPv6 Dual Stack 設定</a> appeared first on <a rel="nofollow" href="https://richliu.com">richliu&#039;s blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://richliu.com/2016/03/07/1930/hinet-pppoe-ipv6-dual-stack-%e8%a8%ad%e5%ae%9a/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
