<?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>Network &#8211; richliu&#039;s blog</title>
	<atom:link href="https://blog.richliu.com/category/computer/network/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.richliu.com</link>
	<description>Linux, 工作, 生活, 家人</description>
	<lastBuildDate>Thu, 21 Nov 2024 07:09:46 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.2</generator>
	<item>
		<title>TTPoE Tesla Transport Protocol (TTP) Over Ethernet 簡評</title>
		<link>https://blog.richliu.com/2024/11/21/6081/ttpoe-tesla-transport-protocol-ttp-over-ethernet-%e7%b0%a1%e8%a9%95/</link>
					<comments>https://blog.richliu.com/2024/11/21/6081/ttpoe-tesla-transport-protocol-ttp-over-ethernet-%e7%b0%a1%e8%a9%95/#respond</comments>
		
		<dc:creator><![CDATA[richliu]]></dc:creator>
		<pubDate>Thu, 21 Nov 2024 07:09:43 +0000</pubDate>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[IC Design]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[ethernet]]></category>
		<category><![CDATA[tcp]]></category>
		<guid isPermaLink="false">https://blog.richliu.com/?p=6081</guid>

					<description><![CDATA[<p>早上瞄到這篇文章討論的 Tesla’s TTPoE at Hot Chips 2024: Replacing  [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2024/11/21/6081/ttpoe-tesla-transport-protocol-ttp-over-ethernet-%e7%b0%a1%e8%a9%95/">TTPoE Tesla Transport Protocol (TTP) Over Ethernet 簡評</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>早上瞄到這篇文章討論的 <a href="https://chipsandcheese.com/p/teslas-ttpoe-at-hot-chips-2024-replacing-tcp-for-low-latency-applications" target="_blank" rel="noopener">Tesla’s TTPoE at Hot Chips 2024: Replacing TCP for Low Latency Applications</a> ，去年 Telsa 建了 Dojo SuperComputing ，今年就弄了一個新的 Protocol </p>



<p>TCP 已經是一個非常陳舊的 Protocol ，其中很多特性已經不再適合目前的網路環境，像QUIC架在UDP上層，增加安全性和速度。SCTP主打多連結，可靠性和安全，SCTP在電信環境用的比較多。基於 UDP 大量傳送資料的有 UDT (UDP-Based Data Transfer protocol) 等等</p>



<span id="more-6081"></span>



<p>TTPoE 看起來應該是 Telsa 降本增效（名詞好用就拿來用）的實作，因為如果是使用RDMA之類的解決方案應該都有更快的 NIC Card 可以用(目前最快是 800Gbps 2 Ports QSPF-DD), 但是 TTPoE 是用 100G NIC 卡但是重新實做了整個 NIC Card ，雖然這樣講，未來仍然有升級的空間</p>



<p>我認為 TTPoE 的主要設計目地就是 Low Latency and Low Cost，因為 TTPoE 看起來是要做 HBM2HBM 的資料同步，Low latency 應該還是主要考量，因為他們要實作在 Hardware 上</p>



<p>而 data center(DC) 下是 data loseless 的環境，相對的網路環境比較好，如果有開啟 ethernet congession control ，理論下會丟掉的封包比較少，頻寬大。基於這個特性，TTPoE 就是做刪去法，將 TCP 協定中多餘的 Latency 去掉，仍然使用 IP 協定，保有和現有網路的相容性，以下這張圖就可以清楚的知道，TTP 是取代 TCP 的位置，上層仍然能夠跟 RDMA 接，其他 socket 或 APP 應該也可以，不過主要應該還是給RDMA這類高速記憶體協定用</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="1456" height="817" src="https://blog.richliu.com/wp-content/uploads/2024/11/image-6.png" alt="" class="wp-image-6082" srcset="https://blog.richliu.com/wp-content/uploads/2024/11/image-6.png 1456w, https://blog.richliu.com/wp-content/uploads/2024/11/image-6-600x337.png 600w, https://blog.richliu.com/wp-content/uploads/2024/11/image-6-768x431.png 768w, https://blog.richliu.com/wp-content/uploads/2024/11/image-6-816x458.png 816w" sizes="(max-width: 1456px) 100vw, 1456px" /></figure>



<p>（註： 本圖來自 <a href="https://chipsandcheese.com/p/teslas-ttpoe-at-hot-chips-2024-replacing-tcp-for-low-latency-applications" target="_blank" rel="noopener">Tesla’s TTPoE at Hot Chips 2024: Replacing TCP for Low Latency Applications</a> ，原圖應該是 Hot Chips 2024 Telsa 的 slide，以下不再重覆說明 ）</p>



<p>為了讓 Hardware 更容易設計，所以簡化了 TTP 的 Protocol State machine ，這是是目標也是結果，因為簡化 Protocol 也會簡化 state machine </p>



<figure class="wp-block-image size-full"><img decoding="async" width="1456" height="813" src="https://blog.richliu.com/wp-content/uploads/2024/11/image-7.png" alt="" class="wp-image-6083" srcset="https://blog.richliu.com/wp-content/uploads/2024/11/image-7.png 1456w, https://blog.richliu.com/wp-content/uploads/2024/11/image-7-600x335.png 600w, https://blog.richliu.com/wp-content/uploads/2024/11/image-7-768x429.png 768w, https://blog.richliu.com/wp-content/uploads/2024/11/image-7-816x456.png 816w" sizes="(max-width: 1456px) 100vw, 1456px" /></figure>



<p>將 TCP 的 Three way handshake 改成 Two way handshake，其實 internet 防火牆需要這個機制判斷是不是真實連線，但是 DC 內部不需要，拿掉合理，也可以減少很多 Latency <br />有些人要加速會改 TCP ACK 到下一筆資料送出的時間，不過這會造成某些硬體加速器的問題</p>



<figure class="wp-block-image size-full"><img decoding="async" width="839" height="530" src="https://blog.richliu.com/wp-content/uploads/2024/11/image-8.png" alt="" class="wp-image-6084" srcset="https://blog.richliu.com/wp-content/uploads/2024/11/image-8.png 839w, https://blog.richliu.com/wp-content/uploads/2024/11/image-8-600x379.png 600w, https://blog.richliu.com/wp-content/uploads/2024/11/image-8-768x485.png 768w, https://blog.richliu.com/wp-content/uploads/2024/11/image-8-816x515.png 816w" sizes="(max-width: 839px) 100vw, 839px" /></figure>



<p>這邊應該是要將如果有個 Packet 是 NACK ，後面的 packet 都重送，這樣雖然會傳比較多資料，但是 DC package loseless 環境，這樣的機率小，可以接受這樣的設計<br />TTP 也拿掉 tcp congestion control 這個功能，如果只在 DC 用，這功能完全不需要，因為路上幾乎都是大頻寬，如果頻寬不夠就要從別的地方觀測調整，不是 Protocol 的問題，packet 的 sliding window 就設一個固定值，符合系統大部份時間都可以以最高速運作即可</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1456" height="815" src="https://blog.richliu.com/wp-content/uploads/2024/11/image-9.png" alt="" class="wp-image-6085" srcset="https://blog.richliu.com/wp-content/uploads/2024/11/image-9.png 1456w, https://blog.richliu.com/wp-content/uploads/2024/11/image-9-600x336.png 600w, https://blog.richliu.com/wp-content/uploads/2024/11/image-9-768x430.png 768w, https://blog.richliu.com/wp-content/uploads/2024/11/image-9-816x457.png 816w" sizes="(max-width: 1456px) 100vw, 1456px" /></figure>



<p>TTP Protocol 有些有趣的地方，Extension header 二個，第一個是指定 type 用的，第二個可能是未來用，這應該是固定大小，然後 Data payload 是 64 bytes 的倍數 </p>



<p>有趣的是用 SRAM size 做 speculative transmission，這個設計我喜歡，好的演算法就是不需要演算法，讓系統自己去調整(self-adaptive)，不過我懷疑這個就是 ethernet 的 tx buffer 講成高大上而已</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1456" height="812" src="https://blog.richliu.com/wp-content/uploads/2024/11/image-10.png" alt="" class="wp-image-6086" srcset="https://blog.richliu.com/wp-content/uploads/2024/11/image-10.png 1456w, https://blog.richliu.com/wp-content/uploads/2024/11/image-10-600x335.png 600w, https://blog.richliu.com/wp-content/uploads/2024/11/image-10-768x428.png 768w, https://blog.richliu.com/wp-content/uploads/2024/11/image-10-816x455.png 816w" sizes="(max-width: 1456px) 100vw, 1456px" /></figure>



<p>這意思就是前面還放傳統的 ethernet 架構，TTP mac controller 控制　ethernet 介面傳送資料，灰色部份都是現成的</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1456" height="808" src="https://blog.richliu.com/wp-content/uploads/2024/11/image-11.png" alt="" class="wp-image-6087" srcset="https://blog.richliu.com/wp-content/uploads/2024/11/image-11.png 1456w, https://blog.richliu.com/wp-content/uploads/2024/11/image-11-600x333.png 600w, https://blog.richliu.com/wp-content/uploads/2024/11/image-11-768x426.png 768w, https://blog.richliu.com/wp-content/uploads/2024/11/image-11-816x453.png 816w" sizes="(max-width: 1456px) 100vw, 1456px" /></figure>



<p>TTP hardware micro-architecture 設計</p>



<p>下方的 Next packet linked list SRAM，雖然講是 linked list SRAM，不過為什麼不做 array 當 ring buffer 呢？還是指的是同一件事，做過 NIC 卡就知道這種地方設計就固定是那樣，尤其是做成 hardware 又要結構更簡單，所以我才懷疑前面講的 SRAM 做 flow control 就是講這邊，如果 ring buffer 滿了就表示外面滿了</p>



<p>一般這種高階通常都有數個 TX/RX buffer ，不知道是不是因為專供 RDMA 用所以這邊就只畫上一個 TX/RX buffer ？而且不確定是不是因為一個 Buffer 頻寬就滿了（或是 FPGA 只能規劃 1MB，都有可能）</p>



<p>80 microseconds 在高速網路世界已經算很久了，算 OK <br />slide 最後一行我覺得才是真正的目地，如果是在 AI server 上要跑這個，那不用更高階的卡跑 RDMA 就很合理了</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1456" height="808" src="https://blog.richliu.com/wp-content/uploads/2024/11/image-12.png" alt="" class="wp-image-6088" srcset="https://blog.richliu.com/wp-content/uploads/2024/11/image-12.png 1456w, https://blog.richliu.com/wp-content/uploads/2024/11/image-12-600x333.png 600w, https://blog.richliu.com/wp-content/uploads/2024/11/image-12-768x426.png 768w, https://blog.richliu.com/wp-content/uploads/2024/11/image-12-816x453.png 816w" sizes="(max-width: 1456px) 100vw, 1456px" /></figure>



<p>&#8220;Mojo&#8221; 100GB dumb-NIC （話說我以前做過的某 project 我叫 SmartXXX 呢）<br />中間這麼大一顆可能是 SoC 也可能是 FPGA ，我覺得 FPGA 的機率大一點，畢竟要改 code 這階段還是用 FPGA 穩定</p>



<p>CPU 的是用 Gen3 x16 和 8GB DDR4，Gen3 比較有趣，表示這真的是降成本達到目地</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1456" height="814" src="https://blog.richliu.com/wp-content/uploads/2024/11/image-13.png" alt="" class="wp-image-6089" srcset="https://blog.richliu.com/wp-content/uploads/2024/11/image-13.png 1456w, https://blog.richliu.com/wp-content/uploads/2024/11/image-13-600x335.png 600w, https://blog.richliu.com/wp-content/uploads/2024/11/image-13-768x429.png 768w, https://blog.richliu.com/wp-content/uploads/2024/11/image-13-816x456.png 816w" sizes="(max-width: 1456px) 100vw, 1456px" /></figure>



<p>Latencies ，竟然 TTPoE 比 Nvlink 還快，Nvlink 已經算是對傳了，要過 ethernet 還比較快讓我難以想像</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1456" height="810" src="https://blog.richliu.com/wp-content/uploads/2024/11/image-14.png" alt="" class="wp-image-6090" srcset="https://blog.richliu.com/wp-content/uploads/2024/11/image-14.png 1456w, https://blog.richliu.com/wp-content/uploads/2024/11/image-14-600x334.png 600w, https://blog.richliu.com/wp-content/uploads/2024/11/image-14-768x427.png 768w, https://blog.richliu.com/wp-content/uploads/2024/11/image-14-816x454.png 816w" sizes="(max-width: 1456px) 100vw, 1456px" /></figure>



<h2 class="wp-block-heading">總結</h2>



<p>我覺得技術細節透露有限，但是這個方向的確可以大幅減少 latency ，在網路的世界內，減少 latency 就是增加速率和效率，在頻寬固定的狀況之下</p>



<p>雖然相容性不佳，只是給 RDMA 用，但是我覺得仍不失為 intranet 上有趣的應用，而且的確很適合 DC  使用</p>



<p>ref. <a href="https://github.com/teslamotors/ttpoe/tree/master" target="_blank" rel="noopener">Github ttpoe</a> Linux kernel 的 software 實作和規格, 要先有 software 才能搞 hardware 啊.</p>



<p></p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2024/11/21/6081/ttpoe-tesla-transport-protocol-ttp-over-ethernet-%e7%b0%a1%e8%a9%95/">TTPoE Tesla Transport Protocol (TTP) Over Ethernet 簡評</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.richliu.com/2024/11/21/6081/ttpoe-tesla-transport-protocol-ttp-over-ethernet-%e7%b0%a1%e8%a9%95/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>自架 DNS 防成人內容</title>
		<link>https://blog.richliu.com/2020/07/08/4291/%e8%87%aa%e6%9e%b6dns%e9%98%b2%e6%88%90%e4%ba%ba%e5%85%a7%e5%ae%b9/</link>
					<comments>https://blog.richliu.com/2020/07/08/4291/%e8%87%aa%e6%9e%b6dns%e9%98%b2%e6%88%90%e4%ba%ba%e5%85%a7%e5%ae%b9/#respond</comments>
		
		<dc:creator><![CDATA[richliu]]></dc:creator>
		<pubDate>Tue, 07 Jul 2020 16:50:48 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[audlt]]></category>
		<category><![CDATA[Bind]]></category>
		<category><![CDATA[dhcp]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[pron]]></category>
		<guid isPermaLink="false">https://blog.richliu.com/?p=4291</guid>

					<description><![CDATA[<p>果然還是到了這一天，雖然總是有一天他們會看到，但是多多少少還是要設一道簡單的關卡最簡單的是在路由器上設定 DN [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2020/07/08/4291/%e8%87%aa%e6%9e%b6dns%e9%98%b2%e6%88%90%e4%ba%ba%e5%85%a7%e5%ae%b9/">自架 DNS 防成人內容</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>果然還是到了這一天，雖然總是有一天他們會看到，但是多多少少還是要設一道簡單的關卡<br />最簡單的是在路由器上設定 DNS ，畢竟誰都不喜歡在自己的手機電腦裝軟體吧 </p>



<span id="more-4291"></span>



<p><a rel="noreferrer noopener" aria-label="8 Free DNS Services to Block Porn Sites without Installing Software (opens in a new tab)" href="https://www.raymond.cc/blog/how-to-block-pornographic-websites-without-spending-money-on-software/" target="_blank">8 Free DNS Services to Block Porn Sites without Installing Software</a><br />這一篇就有提一些免費的 DNS 可以防國外的成人內容，像是 OpenDNS  OpenDNS Family Shield <br />DNS 設為<br /> Preferred DNS Server: 208.67.222.123<br /> Alternate DNS Server: 208.67.220.123 <br /><br />不過呢，這樣爸爸也會被擋掉，實在不是一個好解決方案</p>



<p>不過如果你有自已架 Linux Server，這到也不是什麼難事對吧，首先我猜你應該有了 dhcp 和 bind (name server) ，好吧，我知道現在大家都沒有，所以我也是寫來自 high 用的，畢竟我不想寫怎麼架 Linux router <br /><br />但是其實步驟並不會太複雜的<br />1. 設定 bind dns 到 OpenDNS 去查資料<br />在 /etc/bind/named.conf 內的 options session 加上以下這個選項，這樣會讓 bind 強迫去用 OpenDNS 查詢網址</p>



<pre class="wp-block-code"><code>    forwarders {
        208.67.222.123;
        208.67.220.123;
    };</code></pre>



<p>2. 將 dhcp 給的 DNS Server 設到 OpenDNS 和自己架的 name server <br />修改 /etc/dhcp/dhcpd.conf，修改 DNS Server ，以下是範例</p>



<pre class="wp-block-code"><code>option domain-name-servers 192.168.0.254, 208.67.220.123;</code></pre>



<p>3. 在 dhcpd.conf 內的 subnet session ，讓老爸的電腦變固定 IP，並且 DNS 設定成正常的 DNS，以下是範例，記得填入老爸電腦的 Mac Address. </p>



<pre class="wp-block-code"><code>host father { hardware ethernet 00:11:22:33:44:55; fixed-address 192.168.0.10; option domain-name-servers 8.8.8.8,
1.1.1.1;}</code></pre>



<p>4. 重開 dhcp 和 name server ，大功告成<br />現在只有老爸能看 P**nHub 了!<br /><br /><s>這時候有沒有感覺自己架 Linux 真好呢</s></p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2020/07/08/4291/%e8%87%aa%e6%9e%b6dns%e9%98%b2%e6%88%90%e4%ba%ba%e5%85%a7%e5%ae%b9/">自架 DNS 防成人內容</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.richliu.com/2020/07/08/4291/%e8%87%aa%e6%9e%b6dns%e9%98%b2%e6%88%90%e4%ba%ba%e5%85%a7%e5%ae%b9/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>QEMU Network Problem When Run With Docker</title>
		<link>https://blog.richliu.com/2019/10/16/4190/qemu-network-problem-when-run-with-docker/</link>
					<comments>https://blog.richliu.com/2019/10/16/4190/qemu-network-problem-when-run-with-docker/#respond</comments>
		
		<dc:creator><![CDATA[richliu]]></dc:creator>
		<pubDate>Wed, 16 Oct 2019 06:44:21 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[qemu]]></category>
		<guid isPermaLink="false">https://blog.richliu.com/?p=4190</guid>

					<description><![CDATA[<p>如果 Docker 和 QEMU 同時執行時，QEMU 內部透過 tap interface bridge 到 [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2019/10/16/4190/qemu-network-problem-when-run-with-docker/">QEMU Network Problem When Run With Docker</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>如果 Docker 和 QEMU 同時執行時，QEMU 內部透過 tap interface bridge 到 host network 的網路會出不去<br /><br />這個問題的原因是 Docker 起來之後，會將 iptables 的 packet forward 預設變成 DROP<br /><br />這時可以在 Docker 起來的時候將 bridge interface 加到 iptables 規則內即可，首先編輯 systemd docker service </p>



<span id="more-4190"></span>



<pre class="wp-block-preformatted">EDITOR=vim sudo -E systemctl edit docker</pre>



<p>加上這一段</p>



<pre class="wp-block-preformatted">[Service] 
ExecStartPre=/sbin/iptables -A FORWARD -p all -i br0 -j ACCEPT 
ExecStopPost=/sbin/iptables -D FORWARD -p all -i br0 -j ACCEPT</pre>



<p><br />再重啟你的 Docker 就好了</p>



<pre class="wp-block-preformatted">sudo systemctl stop docker 
sudo systemctl start docker </pre>



<p>要不然就簡單一點，將 FORWARD rule 從預設 DROP 變成 ACCEPT</p>



<pre class="wp-block-preformatted">[Service] 
ExecStartPre=/sbin/iptables -P FORWARD ACCEPT </pre>



<p>ref<br /><a href="https://bbs.archlinux.org/viewtopic.php?id=233727" target="_blank" rel="noreferrer noopener" aria-label="[SOLVED] Docker breaks existing bridge I use for KVM/QEMU (opens in a new tab)">[SOLVED] Docker breaks existing bridge I use for KVM/QEMU</a></p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2019/10/16/4190/qemu-network-problem-when-run-with-docker/">QEMU Network Problem When Run With Docker</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.richliu.com/2019/10/16/4190/qemu-network-problem-when-run-with-docker/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Ubuntu 18.04 ARM64 DPDK in VM (QEMU)</title>
		<link>https://blog.richliu.com/2019/08/19/4057/ubuntu-18-04-arm64-dpdk-in-vm-qemu/</link>
					<comments>https://blog.richliu.com/2019/08/19/4057/ubuntu-18-04-arm64-dpdk-in-vm-qemu/#respond</comments>
		
		<dc:creator><![CDATA[richliu]]></dc:creator>
		<pubDate>Mon, 19 Aug 2019 08:17:56 +0000</pubDate>
				<category><![CDATA[ARM]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[18.04]]></category>
		<category><![CDATA[aarch64]]></category>
		<category><![CDATA[arm64]]></category>
		<category><![CDATA[dpdk]]></category>
		<category><![CDATA[hugepages]]></category>
		<category><![CDATA[l3fwd]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://blog.richliu.com/?p=4057</guid>

					<description><![CDATA[<p>DPDK is a very popular infrastructure in high speed pac [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2019/08/19/4057/ubuntu-18-04-arm64-dpdk-in-vm-qemu/">Ubuntu 18.04 ARM64 DPDK in VM (QEMU)</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>DPDK is a very popular infrastructure in high speed packet process domain, some applications will used the same architecture to process packet, like EPC. <br /><br />For Ubuntu 18.04, it used dpdk 17.11, it not good for some other application like dpdk pktgen, but enough for testpmd and l3fwd test. here is some personal note for setup whole environment. </p>



<figure class="wp-block-image is-resized"><img loading="lazy" decoding="async" src="https://blog.richliu.com/wp-content/uploads/2019/08/image-3.png" alt="" class="wp-image-4076" width="363" height="257" srcset="https://blog.richliu.com/wp-content/uploads/2019/08/image-3.png 634w, https://blog.richliu.com/wp-content/uploads/2019/08/image-3-300x213.png 300w" sizes="(max-width: 363px) 100vw, 363px" /><figcaption>DPDK in QEMU archeticture</figcaption></figure>



<span id="more-4057"></span>



<p>Hardware : Ampere eMag Server with 128GB Memory <br />                      Network Card: Intel i210 Gigabit NIC Card * 2 <br /><br />HOST means commands and instructions on host machines <br />VM means commands and instructions inside VM</p>



<h2 class="wp-block-heading">Prepare Environment</h2>



<h4 class="wp-block-heading">Apt source</h4>



<p>First, please add deb-src to your database, edit file /etc/apt/source.list and removed all &#8220;#&#8221; before deb-src, then, run follow commands to update apt database (suppose all commands run with sudo or root in this article)</p>



<pre class="wp-block-preformatted">sed -i 's/# deb-src/deb-src/g' sources.list
apt update</pre>



<h4 class="wp-block-heading">Install Packages</h4>



<p>It needs to install relative packages in host </p>



<pre class="wp-block-preformatted">sudo apt install -y dpdk dpdk-dev dpdk-doc </pre>



<p>Only needs to install on HOST.</p>



<pre class="wp-block-preformatted">sudo apt install -y qemu-efi bridge-utils</pre>



<p>It will install all necessary dpdk packages in host.</p>



<h4 class="wp-block-heading">Preload Module</h4>



<p>It needs to preload vfio-pci modules by default, run following command</p>



<pre class="wp-block-preformatted">echo "vfio-pci" &gt;&gt; /etc/modules</pre>



<h4 class="wp-block-heading">Configure Line Kernel boot command</h4>



<p>It needs to reserve hugepages memory space for Linux kernel, it reserves 32 pages and each pages 1GB, total 32GB. Please modify  /etc/default/grub , and  add hugepagesz=1GB hugepages=32 to GRUB_CMDLINE_LINUX, ex:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>GRUB_CMDLINE_LINUX=&#8221;console=tty0 hugepagesz=1GB hugepages=32&#8243;</p></blockquote>



<p>then run foloowing command to update grub.cfg</p>



<pre class="wp-block-preformatted">update-grub</pre>



<p>Mount hugetlbfs by default</p>



<p>If wants to use hugepage, it needs to mount hugetlbfs somewhere, we can create a directory, ex: /mnt/hugepages and mount hugetblsfs there by default. </p>



<pre class="wp-block-preformatted">mkdir -p /mnt/hugepages
echo "nodev   /mnt/hugepages                  hugetlbfs       defaults,pagesize=1G    0 0 none" &gt;&gt; /etc/fstab</pre>



<h2 class="wp-block-heading">Bind Network Card for DPDK</h2>



<p>It wants to let DPDK use current network card, it needs to bind the network card with dpdk. dpdk-devbind command is a useful command. <br />List current command </p>



<pre class="wp-block-preformatted"> $ dpdk-devbind --status
 Network devices using kernel driver
 0001:01:00.0 'I210 Gigabit Network Connection 1533' if=enP1p1s0 drv=igb unused=vfio-pci
 0002:01:00.0 'I210 Gigabit Network Connection 1533' if=enP2p1s0 drv=igb unused=vfio-pci
 0006:01:00.0 'I210 Gigabit Network Connection 1533' if=enP6p1s0 drv=igb unused=vfio-pci <em>Active</em> </pre>



<p>There are three network card in the machine, we would like to bind 1:1:0.0 and 2:1:0.0 to vfio-pci driver. please used following command to bind those network cards. </p>



<pre class="wp-block-preformatted">dpdk-devbind -b vfio-pci 0001:01:00.0 0002:01:00.0</pre>



<p>and check status again</p>



<pre class="wp-block-preformatted"> $ dpdk-devbind --status

Network devices using DPDK-compatible driver
============================================
0001:01:00.0 'I210 Gigabit Network Connection 1533' drv=vfio-pci unused=igb
0002:01:00.0 'I210 Gigabit Network Connection 1533' drv=vfio-pci unused=igb

Network devices using kernel driver
============================================
0006:01:00.0 'I210 Gigabit Network Connection 1533' if=enP6p1s0 drv=igb unused=vfio-pci <em>Active</em> </pre>



<p>Both network cards would be under  Network devices using DPDK-compatible driver  . </p>



<h2 class="wp-block-heading">Prepare QEMU environment </h2>



<h4 class="wp-block-heading">Set up bridge devices  </h4>



<p>We already install bridge-utils before, now, it should configure bridge devices. </p>



<pre class="wp-block-preformatted">mkdir -p /etc/qemu
echo "allow br0" &gt; /etc/qemu/bridge.conf</pre>



<p>Because there is only one network interface on machine, we should use this interface as bridge device, save text below and modify it to fit your environment. </p>



<pre class="wp-block-preformatted"> ORIGNIC=enP6p1s0

 ip addr flush enP6p1s0


 brctl addbr br0
 brctl addif br0 enP6p1s0
 ifconfig br0 up
 ifconfig br0 192.168.110.1 netmask 255.255.0.0
 route add default gw 192.168.1.1


 echo nameserver 8.8.8.8 >> /etc/resolv.conf </pre>



<p>Run script, command brctl show will show how whether it configure property or not. </p>



<h2 class="wp-block-heading">Prepare QEMU image</h2>



<p>Ubuntu 18.04 cloud image is here</p>



<pre class="wp-block-preformatted">wget http://ftp.yzu.edu.tw/Linux/ubuntu-cloud-images/bionic/current/bionic-server-cloudimg-arm64.img</pre>



<p>and please refer this article to change cloud image&#8217;s password <br />Change Ubuntu Cloud Image Password, before use it, don&#8217;t forget to increase cloud image size. 20G is enough for test.</p>



<pre class="wp-block-preformatted">qemu-img resize bionic-server-cloudimg-arm64.img +20G</pre>



<p>Next step is to create bios and nvram for qemu image boot. </p>



<pre class="wp-block-preformatted">dd if=/dev/zero of=flash0.img bs=1M count=64
dd if=/usr/share/qemu-efi/QEMU_EFI.fd of=flash0.img conv=notrunc
dd if=/dev/zero of=flash1.img bs=1M count=64</pre>



<h2 class="wp-block-heading">Run Qemu</h2>



<p>Here is qemu command, save text below and run it </p>



<pre class="wp-block-preformatted"> IMAGE=bionic-server-cloudimg-arm64.img
 sudo qemu-system-aarch64 -name vm1 \
         -machine virt,gic_version=3,accel=kvm,usb=off \
         -cpu host -m 8192 \
         -smp 12,sockets=1,cores=12,threads=1 \
         -nographic -nodefaults \
         -pflash flash0.img -pflash flash1.img \
         -device vfio-pci,host=0001:01:00.0 \
         -device vfio-pci,host=0002:01:00.0 \
         -drive file=$IMAGE,if=none,id=disk1 \
         -device virtio-blk-device,scsi=off,drive=disk1,id=virtio-disk1,bootindex=1 \
         -netdev tap,id=net0,ifname=tap0 \
         -device virtio-net-device,netdev=net0 \
         -mem-path /mnt/hugepages \
         -serial telnet::9001,server,nowait > guest1_log.txt 2>> guest1_log.txt &amp;
 sleep 5
 brctl addif br0 tap0 </pre>



<p>-m 8192 : use 8G RAM for VM<br />&#8211;mem-path will use /mnt/hugepages for VM memory<br /><br />it will create a network device tap0 for bridge device interface between VM and host.  and create a telnet server on port 9001, it can use &#8220;telnet 9001&#8221; to get console, I would like to suggest to use ssh if it can access console. </p>



<h2 class="wp-block-heading">Remove cloudinit service</h2>



<p>it needs to remove cloud-initramfs-copymods, it will copy modules from ramdisk to harddriver, and cloud-init, it&#8217;s for some cloud service like aws(?)<br /><br />removed them would help system runs better. </p>



<pre class="wp-block-preformatted">apt remove cloud-initramfs-copymods cloud-init </pre>



<h2 class="wp-block-heading">Disable Services</h2>



<p>After boot, it needs to disable some default service to improve speed, here is some services can be disabled. (needs run those command with root)</p>



<pre class="wp-block-preformatted">systemctl disable ufw
systemctl disable lxcfs
systemctl disable atd
systemctl disable cron
systemctl disable irqbalance
systemctl disable apparmor
systemctl disable apport
systemctl disable ebtables
systemctl disable grub-common
systemctl disable unattended-upgrades
systemctl disable iscsid</pre>



<p>Most import service is irqbalance, without disable it, performance will be drop down. <br /><br />Now, it can reboot VM now. </p>



<h2 class="wp-block-heading">Prepare QEMU environment </h2>



<p>Prepare QEMU environment and prepare host almost the same, only differences are</p>



<ol class="wp-block-list"><li>in QEMU, apt install doesn&#8217;t needs to install qemu-efi and bridge-utils</li><li>in QEMU, before call dpdk-devbind command, it needs to configure enable_unsafe_noiommu_mode for ARM64 platform </li><li>Hugepage size is different , in HOST it uses 32G, in VM we uses 4G</li></ol>



<p>Enable unsafe noiommu </p>



<pre class="wp-block-preformatted">echo 1 &gt; /sys/module/vfio/parameters/enable_unsafe_*</pre>



<p> To permanently enable the no-IOMMU mode, add it to modprobe.d: (<a href="https://dpdk-guide.gitlab.io/dpdk-guide/setup/binding.html" target="_blank" rel="noopener">ref</a>) </p>



<pre class="wp-block-preformatted">echo "options vfio enable_unsafe_noiommu_mode=1" &gt; /etc/modprobe.d/vfio-noiommu.conf</pre>



<p>It also needs to reserve hugepages memory space for Linux kernel for VM, it reserves 4 pages and each pages 1GB, total 4GB. Please modify  /etc/default/grub , and  add hugepagesz=1GB hugepages=4 to GRUB_CMDLINE_LINUX, ex:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>GRUB_CMDLINE_LINUX=&#8221;console=tty0 hugepagesz=1GB hugepages=4&#8243;</p></blockquote>



<p>then run foloowing command to update grub.cfg</p>



<pre class="wp-block-preformatted">update-grub</pre>



<h2 class="wp-block-heading">Run DPDK  l3fwd</h2>



<p>Before run l3fwd, we need to recompile it. </p>



<pre class="wp-block-preformatted">. /usr/share/dpdk/dpdk-sdk-env.sh
make -C /usr/share/dpdk/examples/l3fwd</pre>



<p>Bind network interface</p>



<pre class="wp-block-preformatted">dpdk-devbind -b vfio-pci  enp0s1
dpdk-devbind -b vfio-pci  enp0s2</pre>



<p>Run l3fwd example</p>



<pre class="wp-block-preformatted">cd /usr/share/dpdk/examples/l3fwd/build
./l3fwd -c 1 -- -p 0x3 --config="(0,0,0),(1,0,0)"</pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="639" src="https://blog.richliu.com/wp-content/uploads/2019/08/image-1024x639.png" alt="" class="wp-image-4072" srcset="https://blog.richliu.com/wp-content/uploads/2019/08/image-1024x639.png 1024w, https://blog.richliu.com/wp-content/uploads/2019/08/image-300x187.png 300w, https://blog.richliu.com/wp-content/uploads/2019/08/image-768x479.png 768w, https://blog.richliu.com/wp-content/uploads/2019/08/image.png 1440w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Multi Queue example</p>



<pre class="wp-block-preformatted">./l3fwd -l 1,2,3,4 -n 4 -- -p 0x3 --config="(0,0,1),(1,0,2),(0,1,3),(1,1,4)"</pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="715" src="https://blog.richliu.com/wp-content/uploads/2019/08/image-1-1024x715.png" alt="" class="wp-image-4073" srcset="https://blog.richliu.com/wp-content/uploads/2019/08/image-1-1024x715.png 1024w, https://blog.richliu.com/wp-content/uploads/2019/08/image-1-300x209.png 300w, https://blog.richliu.com/wp-content/uploads/2019/08/image-1-768x536.png 768w, https://blog.richliu.com/wp-content/uploads/2019/08/image-1.png 1438w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Other</h2>



<p>There is good tool to get hugepage information </p>



<pre class="wp-block-preformatted">apt install hugepages
hugeadm --pool-list</pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="865" height="130" src="https://blog.richliu.com/wp-content/uploads/2019/08/image-2.png" alt="" class="wp-image-4074" srcset="https://blog.richliu.com/wp-content/uploads/2019/08/image-2.png 865w, https://blog.richliu.com/wp-content/uploads/2019/08/image-2-300x45.png 300w, https://blog.richliu.com/wp-content/uploads/2019/08/image-2-768x115.png 768w" sizes="(max-width: 865px) 100vw, 865px" /></figure>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2019/08/19/4057/ubuntu-18-04-arm64-dpdk-in-vm-qemu/">Ubuntu 18.04 ARM64 DPDK in VM (QEMU)</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.richliu.com/2019/08/19/4057/ubuntu-18-04-arm64-dpdk-in-vm-qemu/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Ubuntu PPPoE Server 架設</title>
		<link>https://blog.richliu.com/2018/06/29/2298/ubuntu-pppoe-server-build/</link>
					<comments>https://blog.richliu.com/2018/06/29/2298/ubuntu-pppoe-server-build/#respond</comments>
		
		<dc:creator><![CDATA[richliu]]></dc:creator>
		<pubDate>Fri, 29 Jun 2018 04:29:09 +0000</pubDate>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<guid isPermaLink="false">https://blog.richliu.com/?p=2298</guid>

					<description><![CDATA[<p>網路上找到的範例都有缺, 主要是缺 pppoe kernel module 的部份, 也不會很難, 在 Ubu [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2018/06/29/2298/ubuntu-pppoe-server-build/">Ubuntu PPPoE Server 架設</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>網路上找到的範例都有缺, 主要是缺 pppoe kernel module 的部份, 也不會很難, 在 Ubuntu 18.04 下需要上個 patch 修掉 compile bug.</p>
<p><span id="more-2298"></span></p>
<p>以下假設各位用 root 跑 (我好懶)</p>
<h2>Download RP-PPPoE</h2>
<pre lang="bash">$ apt-get remove pppoe
$ apt-get install ppp ppp-dev pppoeconf
$ wget <a href="https://dianne.skoll.ca/projects/rp-pppoe/download/rp-pppoe-3.13.tar.gz" target="_blank" rel="noopener">https://dianne.skoll.ca/projects/rp-pppoe/download/rp-pppoe-3.13.tar.gz</a>
$ tar xvzf rp-pppoe-3.13.tar.gz
$ cd rp-pppoe-3.13/src
<del>$ wget https://www.roaringpenguin.com/files/download/rp-pppoe-3.12.tar.gz
$ tar zxvf rp-pppoe-3.12.tar.gz
$ cd rp-pppoe-3.12/src</del>

</pre>
<h2><del>Apply Patch (3.13 fixed this problem)</del></h2>
<p><del>依照下面的文字 patch rp-pppoe 的 source code</del></p>
<pre lang="text">--- a/pppd/plugins/rp-pppoe/plugin.c	2016-11-29 15:39:09.289843383 +0530
+++ b/pppd/plugins/rp-pppoe/plugin.c	2016-11-29 15:39:22.659843111 +0530
@@ -49,6 +49,8 @@
 #include &lt;net/ethernet.h&gt;
 #include &lt;net/if_arp.h&gt;
 #include &lt;linux/ppp_defs.h&gt;
+#define _LINUX_IN_H
+#define _LINUX_IN6_H
 #include &lt;linux/if_pppox.h&gt;
 
 #ifndef _ROOT_PATH
</pre>
<h2>Compile rp-pppoe and install</h2>
<pre lang="bash">$ ./configure
$ make
$ make rp-pppoe.so
$ make install
</pre>
<h2>Configure file /etc/ppp/pppoe-server-options</h2>
<pre lang="text"># PPP options for the PPPoE server
# LIC: GPL
require-pap
#login
auth
lcp-echo-interval 10
lcp-echo-failure 2
ms-dns 192.168.1.254
logfile /var/log/pppd.log

plugin /etc/ppp/plugins/rp-pppoe.so
</pre>
<h2>Password file /etc/ppp/chap-secrets</h2>
<pre lang="text"># Secrets for authentication using CHAP
# client server  secret         IP addresses
"user1"  *         "123456"    *
</pre>
<h2>Setting NAT</h2>
<pre lang="bash">$ echo 1 &gt; /proc/sys/net/ipv4/ip_forward
$ iptables -A POSTROUTING -t nat -o ens33 -j MASQUERADE
</pre>
<h2></h2>
<h2>Running PPPoE Server</h2>
<p>example</p>
<pre lang="bash">$ pppoe-server -I ens34 -L 10.10.10.1 -R 10.10.10.100 -N 100
</pre>
<p>-I interface name<br />
-L client&#8217;s gateway ip。<br />
-R client start ip address<br />
-N allow users</p>
<p>In syslog file, it should have <strong>rp-pppoe.so loaded</strong> keyword</p>
<pre lang="syslog">Jun 29 00:21:01 TEST1804-1 pppoe[2106]: read (asyncReadFromPPP): Session 1: Input/output error
Jun 29 00:21:24 TEST1804-1 pppoe-server[5992]: Session 1 created for client 02:0f:b7:81:00:01 (10.10.10.100) on ens34 using Service-Name ''
Jun 29 00:21:24 TEST1804-1 pppd[5992]: Plugin /etc/ppp/plugins/rp-pppoe.so loaded.
Jun 29 00:21:24 TEST1804-1 pppd[5992]: RP-PPPoE plugin version 3.12 compiled against pppd 2.4.7
Jun 29 00:21:24 TEST1804-1 pppd[5992]: pppd 2.4.7 started by richliu, uid 0
Jun 29 00:21:24 TEST1804-1 pppd[5992]: Using interface ppp0
Jun 29 00:21:24 TEST1804-1 pppd[5992]: Connect: ppp0 &lt;--&gt; /dev/pts/4
Jun 29 00:21:24 TEST1804-1 systemd-udevd[5995]: link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
Jun 29 00:21:27 TEST1804-1 pppd[5992]: PAP peer authentication succeeded for user1

</pre>
<p>ref.<br />
<a href="https://www.linuxquestions.org/questions/linux-software-2/conflict-between-kernel-and-glibc-headers-when-compiling-ppp-4175594417/" target="_blank" rel="noopener"> [SOLVED] Conflict between kernel and glibc headers when compiling PPP </a><br />
<a href="https://sskaje.me/2014/05/set-pppoe-server-ubuntu/" target="_blank" rel="noopener">Set up PPPoE Server on Ubuntu</a><br />
<a href="http://jyhshin.pixnet.net/blog/post/47469696-ubuntu-pppoe-server" target="_blank" rel="noopener">Ubuntu pppoe server</a></p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2018/06/29/2298/ubuntu-pppoe-server-build/">Ubuntu PPPoE Server 架設</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.richliu.com/2018/06/29/2298/ubuntu-pppoe-server-build/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>RSS Toeplitz Hash Calculation C Code</title>
		<link>https://blog.richliu.com/2018/06/11/2288/rss-hash-calculation-c-code/</link>
					<comments>https://blog.richliu.com/2018/06/11/2288/rss-hash-calculation-c-code/#respond</comments>
		
		<dc:creator><![CDATA[richliu]]></dc:creator>
		<pubDate>Mon, 11 Jun 2018 13:32:05 +0000</pubDate>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[RSS]]></category>
		<guid isPermaLink="false">https://blog.richliu.com/?p=2288</guid>

					<description><![CDATA[<p>Toeplitz RSS(Receive Side Scaling) sample code 如下, 從 OD [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2018/06/11/2288/rss-hash-calculation-c-code/">RSS Toeplitz Hash Calculation C Code</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Toeplitz RSS(Receive Side Scaling) sample code 如下, 從 ODP Code 借來的</p>
<p>因為是測試用 code, 所以也不要太在乎語法什麼的<br />
輸出可以正確的跑出 microsoft 網站的 sample</p>
<pre lang="bash">$ ./a.out
sip: 187.149.9.66   dip:80.100.142.161 sport:1766   dport:2794   hash: 51ccc178
</pre>
<p>目前的 code 會計算 4 個 IP<br />
像是這樣</p>
<pre lang="bash">$ ./a.out
sip: 192.168.1.100  dip:10.0.0.100     sport:1000   dport:1000   hash: 8c2cb4f
sip: 193.168.1.100  dip:10.0.0.100     sport:1000   dport:1000   hash: ef1317e8
sip: 194.168.1.100  dip:10.0.0.100     sport:1000   dport:1000   hash: 5f061160
sip: 195.168.1.100  dip:10.0.0.100     sport:1000   dport:1000   hash: 2324d4ee
</pre>
<p>連檔名都叫 a.out 我真懶</p>
<p><code></code></p>
<p>#include &lt;stdint.h&gt;<br />
#include &lt;stdio.h&gt;<br />
#include &lt;endian.h&gt;<br />
#include &lt;string.h&gt;<br />
#include &lt;arpa/inet.h&gt;</p>
<p>/** rss data type */<br />
typedef union {<br />
uint8_t u8[40];<br />
uint32_t u32[10];<br />
} rss_key;</p>
<p>/** IPv4 tuple<br />
*<br />
*/<br />
typedef struct thash_ipv4_tuple {<br />
uint32_t src_addr;<br />
uint32_t dst_addr;<br />
union {<br />
struct {<br />
uint16_t sport;<br />
uint16_t dport;<br />
};<br />
uint32_t sctp_tag;<br />
};<br />
} thash_ipv4_tuple_t;</p>
<p>/** Thash tuple union */<br />
typedef union {<br />
thash_ipv4_tuple_t v4;<br />
//thash_ipv6_tuple_t v6;<br />
} thash_tuple_t;<br />
static const rss_key default_rss = {<br />
.u8 = {<br />
0x6d, 0x5a, 0x56, 0xda, 0x25, 0x5b, 0x0e, 0xc2,<br />
0x41, 0x67, 0x25, 0x3d, 0x43, 0xa3, 0x8f, 0xb0,<br />
0xd0, 0xca, 0x2b, 0xcb, 0xae, 0x7b, 0x30, 0xb4,<br />
0x77, 0xcb, 0x2d, 0xa3, 0x80, 0x30, 0xf2, 0x0c,<br />
0x6a, 0x42, 0xb7, 0x3b, 0xbe, 0xac, 0x01, 0xfa,<br />
}<br />
};</p>
<p>static inline<br />
uint32_t thash_softrss(uint32_t *tuple, uint8_t len,<br />
const rss_key key)<br />
{<br />
uint32_t i, j, ret = 0;</p>
<p>for (j = 0; j &lt; len; j++) {<br />
for (i = 0; i &lt; 32; i++) {<br />
if (tuple[j] &amp; (1 &lt;&lt; (31 &#8211; i))) {<br />
ret ^= htobe32(((const uint32_t *)<br />
key.u32)[j]) &lt;&lt; i | (uint32_t)((uint64_t) (htobe32(((const uint32_t *)key.u32) [j + 1])) &gt;&gt; (32 &#8211; i));<br />
}<br />
}<br />
}</p>
<p>return ret;<br />
}<br />
int main(int argc,char *argv[]){<br />
thash_tuple_t tuple;<br />
uint32_t hash;<br />
uint32_t tuple_len;<br />
struct in_addr ip_addr_s,ip_addr_d;<br />
char str_s[15], str_d[15];</p>
<p>#if 0<br />
tuple.v4.src_addr = (uint32_t) inet_addr(&#8220;66.9.149.187&#8221;);<br />
tuple.v4.dst_addr = (uint32_t) inet_addr(&#8220;161.142.100.80&#8221;);<br />
ip_addr_s.s_addr = tuple.v4.src_addr;<br />
ip_addr_d.s_addr = tuple.v4.dst_addr;<br />
tuple_len += 2;<br />
tuple.v4.sport = htobe16(2794);<br />
tuple.v4.dport = htobe16(1766);<br />
tuple_len += 1;<br />
#endif</p>
<p>for(int i=0;i&lt;4;i++){<br />
tuple_len = 0;<br />
hash = 0;</p>
<p>tuple.v4.src_addr = (uint32_t) inet_addr(&#8220;192.168.1.100&#8221;);<br />
tuple.v4.src_addr = be32toh(tuple.v4.src_addr);<br />
tuple.v4.src_addr=tuple.v4.src_addr+i*4;<br />
tuple.v4.src_addr = htobe32(tuple.v4.src_addr);<br />
tuple.v4.dst_addr = (uint32_t) inet_addr(&#8220;10.0.0.100&#8221;);<br />
ip_addr_s.s_addr = tuple.v4.src_addr;<br />
ip_addr_d.s_addr = tuple.v4.dst_addr;<br />
tuple_len += 2;<br />
tuple.v4.sport = htobe16(1000);<br />
tuple.v4.dport = htobe16(1000);<br />
tuple_len += 1;</p>
<p>if (tuple_len){<br />
tuple.v4.src_addr = be32toh(tuple.v4.src_addr);<br />
tuple.v4.dst_addr = be32toh(tuple.v4.dst_addr);<br />
tuple.v4.sctp_tag = be32toh(tuple.v4.sctp_tag);<br />
hash = thash_softrss((uint32_t *)&amp;tuple,<br />
tuple_len, default_rss);<br />
}</p>
<p>ip_addr_s.s_addr = htobe32(tuple.v4.src_addr);<br />
ip_addr_d.s_addr = htobe32(tuple.v4.dst_addr);<br />
strcpy(str_s,inet_ntoa(ip_addr_s));<br />
strcpy(str_d,inet_ntoa(ip_addr_d));<br />
printf(&#8220;sip: %-14s dip:%-14s sport:%-6d dport:%-6d hash: %x \n&#8221;,<br />
str_s,str_d,<br />
tuple.v4.sport,<br />
tuple.v4.dport, hash);</p>
<p>}</p>
<p>return hash;<br />
}</p>
<p>附帶一提, 如果在 Linux 下要修改 hash key . 可以用 ethtool 這個指令, ex:</p>
<pre lang="bash">
$ ethtool -X enp5s0f4 hkey 6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a:6d:5a
</pre>
<p>ref.<br />
<a href="https://docs.microsoft.com/en-us/windows-hardware/drivers/network/verifying-the-rss-hash-calculation" rel="noopener" target="_blank">Verifying the RSS Hash Calculation</a> : 可以比對計算出是不是正確<br />
<a href="http://www.ran-lifshitz.com/2014/08/28/symmetric-rss-receive-side-scaling/" rel="noopener" target="_blank">Symmetric RSS</a> : 有趣的文章, 提到原來的功能沒有辦法有效的 hash , 將所有的 key 都改 0x6d5a 就可以<br />
<a href="https://pdfs.semanticscholar.org/38b6/47c56a74d634d7c23fe0b99ea1eb6347b09e.pdf" rel="noopener" target="_blank">Scalable TCP Session Monitoring with Symmetric Receive-side Scaling</a><br />
<a href="https://www.kernel.org/doc/Documentation/networking/scaling.txt" rel="noopener" target="_blank">Scaling in the Linux Networking Stack</a><br />
<a href="https://github.com/Linaro/odp/blob/master/platform/linux-generic/odp_classification.c" rel="noopener" target="_blank">odp_classification.c</a></p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2018/06/11/2288/rss-hash-calculation-c-code/">RSS Toeplitz Hash Calculation C Code</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.richliu.com/2018/06/11/2288/rss-hash-calculation-c-code/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Bind Zone Forward</title>
		<link>https://blog.richliu.com/2017/10/30/2194/bind-zone-forward/</link>
					<comments>https://blog.richliu.com/2017/10/30/2194/bind-zone-forward/#respond</comments>
		
		<dc:creator><![CDATA[richliu]]></dc:creator>
		<pubDate>Mon, 30 Oct 2017 04:45:31 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Bind]]></category>
		<category><![CDATA[forward]]></category>
		<category><![CDATA[named]]></category>
		<category><![CDATA[zone]]></category>
		<guid isPermaLink="false">https://blog.richliu.com/?p=2194</guid>

					<description><![CDATA[<p>如果有特定的 domain 要指向特定的 Server 這時候就要用 Zone Forward 指令 例如:  [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2017/10/30/2194/bind-zone-forward/">Bind Zone Forward</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>如果有特定的 domain 要指向特定的 Server</p>
<p>這時候就要用 Zone Forward 指令</p>
<p>例如:</p>
<pre lang="text">
zone "subzone.mydns.example.com" {
  type forward;
  forwarders { 192.168.0.4; };
};
</pre>
<p>這樣就可以了</p>
<p>ref<br />
<a href="https://serverfault.com/questions/409190/how-to-properly-configure-bind-forward-zone-for-an-internal-dns-server" rel="noopener" target="_blank">How to properly configure BIND forward zone for an internal DNS server?</a><br />
<a href="http://www.zytrax.com/books/dns/ch7/zone.html#type" rel="noopener" target="_blank">DNS BIND zone clause</a></p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2017/10/30/2194/bind-zone-forward/">Bind Zone Forward</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.richliu.com/2017/10/30/2194/bind-zone-forward/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>[Gentoo][Linux] Hinet PPPoE IPv6 Dual Stack 設定</title>
		<link>https://blog.richliu.com/2016/03/07/1930/hinet-pppoe-ipv6-dual-stack-%e8%a8%ad%e5%ae%9a/</link>
					<comments>https://blog.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://blog.richliu.com/?p=1930</guid>

					<description><![CDATA[<p>自從中研院 Tunnel Broker 因為硬碟壞掉終止服務, Hinet Tunnel Broker 一直斷 [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog.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://blog.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://blog.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://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.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>
		<item>
		<title>[Linux] 限制時間上 Facebook</title>
		<link>https://blog.richliu.com/2015/12/15/1885/linux-%e9%99%90%e5%88%b6%e6%99%82%e9%96%93%e4%b8%8a-facebook/</link>
					<comments>https://blog.richliu.com/2015/12/15/1885/linux-%e9%99%90%e5%88%b6%e6%99%82%e9%96%93%e4%b8%8a-facebook/#respond</comments>
		
		<dc:creator><![CDATA[richliu]]></dc:creator>
		<pubDate>Mon, 14 Dec 2015 17:29:02 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[as]]></category>
		<category><![CDATA[as number]]></category>
		<category><![CDATA[facebok]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[IPv6]]></category>
		<guid isPermaLink="false">http://blog.richliu.com/?p=1885</guid>

					<description><![CDATA[<p>Facebook 花去太多時間, 所以在 Linux 上加了一條 Rule 限制自己 時間模組是用 iptab [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2015/12/15/1885/linux-%e9%99%90%e5%88%b6%e6%99%82%e9%96%93%e4%b8%8a-facebook/">[Linux] 限制時間上 Facebook</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>

Facebook 花去太多時間, 所以在 Linux 上加了一條 Rule 限制自己

</p>



<span id="more-1885"></span>



<p>

時間模組是用 iptables 的 time , 寫起來像是這樣

</p>



<pre class="wp-block-preformatted">iptables -N limit_fb => 新增一個新個 Rule 叫 limit_fb
iptables -A OUTPUT -p tcp -m tcp -m time --kerneltz --timestart 22:00 --timestop 18:00 --dport 443 -j limit_fb

--timestart 是開始時間
--timestop 是結束時間
--kerneltz 是使用本地時間, 不設預設用 UTC </pre>


<p>因為 Facebook 都是用 https , 所以沒有很好的方式可以過濾 url<br />所以我選擇用 IP/RANGE 的方式阻擋.<br />Facebook 的所有 IP 位置可以從 AS 取得<br />用一個簡單的指令就可以取得</p>
<blockquote>
<p>$ whois -h whois.radb.net &#8216;!gAS32934</p>
</blockquote>
<p>將所有的 IP 加到 Rule tables 內</p>
<blockquote>
<p>FBAS=`whois -h whois.radb.net &#8216;!gAS32934&#8217; | tail -n 2 | head -n 1`<br />for i in $FBAS; do<br />$iptables -I limit_fb -d $i -j DROP<br />done</p>
</blockquote>
<p>效果還不錯</p>
<p>最近又接上 IPv6 了, 如果要取得 Facebook IPv6 的範圍, 可以用這個指令</p>
<blockquote>
<p>FBAS=`whois -h whois.radb.net &#8212; &#8216;-i origin AS32934&#8217; | grep route6 | awk &#8216;{print $2}&#8217;`<br />for i in $FBAS; do<br />$ip6tables -I limit_fb -d $i -j DROP<br />done</p>
</blockquote>
<p>ref.<br /><a href="https://raymii.org/s/snippets/Get_all_IP_ranges_from_an_AS_number.html" target="_blank" rel="noopener noreferrer">Get all IP ranges from an AS number</a><br /><a href="https://ma.ttias.be/whois-at-the-cli-get-all-ip-ranges-from-an-as-number/" target="_blank" rel="noopener noreferrer">Whois at the CLI: get all IP ranges from an AS number</a></p>


<p>懶得加一篇文章了<br /><br />最近要限制小孩看電視，找出電視的 IP ，下這個指令</p>



<pre class="wp-block-preformatted">iptables -A FORWARD -p tcp -s 192.168.1.163 -m state --state NEW,ESTABLISHED -m time --timestart 06:00 --timestop 18:00  --weekdays Mon,Tue,Wed,Thu,Fri --kerneltz -j REJECT</pre>



<p>比起限制 Facebook 的指令，這邊多了 weekdays ，只限制星期一到星期五的晚上六點之前，六點之後因為在家就可以直接限制了</p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2015/12/15/1885/linux-%e9%99%90%e5%88%b6%e6%99%82%e9%96%93%e4%b8%8a-facebook/">[Linux] 限制時間上 Facebook</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.richliu.com/2015/12/15/1885/linux-%e9%99%90%e5%88%b6%e6%99%82%e9%96%93%e4%b8%8a-facebook/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Strongswan ipsec debug</title>
		<link>https://blog.richliu.com/2015/08/19/1839/strongswan-ipsec-debug/</link>
					<comments>https://blog.richliu.com/2015/08/19/1839/strongswan-ipsec-debug/#respond</comments>
		
		<dc:creator><![CDATA[richliu]]></dc:creator>
		<pubDate>Wed, 19 Aug 2015 09:23:50 +0000</pubDate>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[ipsec]]></category>
		<category><![CDATA[strongswan]]></category>
		<category><![CDATA[wirehsark]]></category>
		<guid isPermaLink="false">http://blog.richliu.com/?p=1839</guid>

					<description><![CDATA[<p>可以在 runtime 下指令馬上更改 debug command, # ipsec stroke logle [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2015/08/19/1839/strongswan-ipsec-debug/">Strongswan ipsec debug</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>可以在 runtime 下指令馬上更改 debug command,<br />
# ipsec stroke loglevel ike 2<br />
也可以寫在 ipsec.conf 內.<br />
<span id="more-1839"></span></p>
<p><a href="https://wiki.strongswan.org/projects/strongswan/wiki/LoggerConfiguration" target="_blank" rel="noopener">Logger configuration </a></p>
<p>其他可以debug 的參數還有<br />
types are dmn, mgr, ike, chd, job, cfg, knl, net, asn, enc, lib, esp, tls, tnc, imc, imv, pts and the level<br />
is one of [-1, 0, 1, 2, 3, 4] (for silent, audit, control, controlmore, raw, private). By default, the level<br />
is set to 1 for all types.</p>
<p><a href="https://wiki.strongswan.org/projects/strongswan/wiki/ConfigSetupSection" target="_blank" rel="noopener">ipsec.conf: config setup</a></p>
<p>如果是要 decode ESP 封包, 要下 command<br />
# ip xfrm state<br />
src &#8212;.&#8212;.&#8212;.&#8212; dst &#8212;.&#8212;.&#8212;.&#8212;<br />
proto esp spi 0xc5833fd7 reqid 4 mode tunnel<br />
replay-window 32 flag af-unspec<br />
auth-trunc hmac(sha1) 0xde33744975f816f9fdcb7969a3d5a337 96<br />
enc cbc(aes) 0x9bf7b545ba3e35523c9a0c9f74b2c386ffb4634d<br />
src &#8212;.&#8212;.&#8212;.&#8212; dst &#8212;.&#8212;.&#8212;.&#8212;<br />
proto esp spi 0xc985f51a reqid 4 mode tunnel<br />
replay-window 32 flag af-unspec<br />
auth-trunc hmac(sha1) 0xf1341b4ddeb700925a8294264b271130 96<br />
enc cbc(aes) 0x2f7a7dc8e136ed645d13b89fcd7b408fce3636ad<br />
取出 SPI , encryption key and authentication key 填到 Wireshark ESP protocol 的 ESP SAs 內就可以了. <a href="http://blog.richliu.com/wp-content/uploads/2015/08/ESP-1.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-1841" src="http://blog.richliu.com/wp-content/uploads/2015/08/ESP-1-300x119.png" alt="ESP-1" width="300" height="119" srcset="https://blog.richliu.com/wp-content/uploads/2015/08/ESP-1-300x119.png 300w, https://blog.richliu.com/wp-content/uploads/2015/08/ESP-1-1024x406.png 1024w, https://blog.richliu.com/wp-content/uploads/2015/08/ESP-1.png 1504w" sizes="(max-width: 300px) 100vw, 300px" /></a><a href="http://blog.richliu.com/wp-content/uploads/2015/08/ESP-2.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-1840" src="http://blog.richliu.com/wp-content/uploads/2015/08/ESP-2-300x110.png" alt="ESP-2" width="300" height="110" srcset="https://blog.richliu.com/wp-content/uploads/2015/08/ESP-2-300x110.png 300w, https://blog.richliu.com/wp-content/uploads/2015/08/ESP-2-1024x375.png 1024w, https://blog.richliu.com/wp-content/uploads/2015/08/ESP-2.png 1490w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2015/08/19/1839/strongswan-ipsec-debug/">Strongswan ipsec debug</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.richliu.com/2015/08/19/1839/strongswan-ipsec-debug/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>NFS 碰到的怪問題</title>
		<link>https://blog.richliu.com/2015/06/22/1823/nfs-debug-%e7%a2%b0%e5%88%b0%e7%9a%84%e6%80%aa%e5%95%8f%e9%a1%8c/</link>
					<comments>https://blog.richliu.com/2015/06/22/1823/nfs-debug-%e7%a2%b0%e5%88%b0%e7%9a%84%e6%80%aa%e5%95%8f%e9%a1%8c/#respond</comments>
		
		<dc:creator><![CDATA[richliu]]></dc:creator>
		<pubDate>Mon, 22 Jun 2015 08:25:58 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[nfs]]></category>
		<guid isPermaLink="false">http://blog.richliu.com/?p=1823</guid>

					<description><![CDATA[<p>今天碰到的怪問題. eth0: 1000 Mbps Full duplex, port 0 ADDRCONF( [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2015/06/22/1823/nfs-debug-%e7%a2%b0%e5%88%b0%e7%9a%84%e6%80%aa%e5%95%8f%e9%a1%8c/">NFS 碰到的怪問題</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>今天碰到的怪問題.</p>
<p style="padding-left: 30px;">eth0: 1000 Mbps Full duplex, port 0<br />
ADDRCONF(NETDEV_UP): eth0: link is not ready<br />
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready<br />
IP-Config: Complete:<br />
device=eth0, addr=10.102.81.59, mask=255.255.255.0, gw=10.102.81.1<br />
host=10.102.81.59, domain=, nis-domain=(none)<br />
bootserver=10.102.81.66, rootserver=10.102.81.66, rootpath=<br />
VFS: Unable to mount root fs via NFS, trying floppy.<br />
VFS: Cannot open root device &#8220;nfs&#8221; or unknown-block(2,0): error -6<br />
Please append a correct &#8220;root=&#8221; boot option; here are the available partitions:</p>
<p>首先要在 bootargs 放上nfsrootdebug 參數找出真正的原因, 然後就會出現</p>
<p style="padding-left: 30px;">ADDRCONF(NETDEV_UP): eth0: link is not ready<br />
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready<br />
IP-Config: Complete:<br />
device=eth0, addr=10.102.81.59, mask=255.255.255.0, gw=10.102.81.1<br />
host=10.102.81.59, domain=, nis-domain=(none)<br />
bootserver=10.102.81.66, rootserver=10.102.81.66, rootpath=<br />
Root-NFS: nfsroot=/home/work/nfs/fusion.nfsvers=3<br />
NFS: nfs mount opts=&#8217;vers=2,udp,rsize=4096,wsize=4096,nolock,addr=10.102.81.66&#8242;<br />
NFS:   parsing nfs mount option &#8216;vers=2&#8217;<br />
NFS:   parsing nfs mount option &#8216;udp&#8217;<br />
NFS:   parsing nfs mount option &#8216;rsize=4096&#8217;<br />
NFS:   parsing nfs mount option &#8216;wsize=4096&#8217;<br />
NFS:   parsing nfs mount option &#8216;nolock&#8217;<br />
NFS:   parsing nfs mount option &#8216;addr=10.102.81.66&#8217;<br />
NFS: MNTPATH: &#8216;/home/work/nfs/fusion.nfsvers=3&#8217;<br />
NFS: sending MNT request for 10.102.81.66:/home/work/nfs/fusion.nfsvers=3<br />
NFS: MNT server returned result -13<br />
NFS: unable to mount server 10.102.81.66, error -13</p>
<p>這個問題只要加上 <strong>nolock</strong> 參數就好了, 所以 nfsroot args 會長的像這樣</p>
<p style="padding-left: 30px;">mem=512M root=/dev/nfs rw nfsroot=${serverip}:/nfs/fusion,nfsvers=3,nolock ip=${ipaddr}:${serverip}:${gatewayip}:255.255.255.0::eth0:off&#8217;</p>
<p>ref: <a href="http://wiki.attie.co.uk/wiki/Nfs_root" target="_blank" rel="noopener">Nfs root</a></p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2015/06/22/1823/nfs-debug-%e7%a2%b0%e5%88%b0%e7%9a%84%e6%80%aa%e5%95%8f%e9%a1%8c/">NFS 碰到的怪問題</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.richliu.com/2015/06/22/1823/nfs-debug-%e7%a2%b0%e5%88%b0%e7%9a%84%e6%80%aa%e5%95%8f%e9%a1%8c/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>[評] 特洛伊木馬已進駐台灣</title>
		<link>https://blog.richliu.com/2015/01/04/1718/%e8%a9%95-%e7%89%b9%e6%b4%9b%e4%bc%8a%e6%9c%a8%e9%a6%ac%e5%b7%b2%e9%80%b2%e9%a7%90%e5%8f%b0%e7%81%a3/</link>
					<comments>https://blog.richliu.com/2015/01/04/1718/%e8%a9%95-%e7%89%b9%e6%b4%9b%e4%bc%8a%e6%9c%a8%e9%a6%ac%e5%b7%b2%e9%80%b2%e9%a7%90%e5%8f%b0%e7%81%a3/#comments</comments>
		
		<dc:creator><![CDATA[richliu]]></dc:creator>
		<pubDate>Sun, 04 Jan 2015 13:15:59 +0000</pubDate>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[IDC]]></category>
		<category><![CDATA[ISP]]></category>
		<category><![CDATA[樂視]]></category>
		<category><![CDATA[網路安全]]></category>
		<guid isPermaLink="false">http://blog.richliu.com/?p=1718</guid>

					<description><![CDATA[<p>原文 特洛伊木馬已進駐台灣 作者：林宗男（台大電機系暨電信所教授） 最近引發國人關切的中國樂視網事件，到底樂視 [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2015/01/04/1718/%e8%a9%95-%e7%89%b9%e6%b4%9b%e4%bc%8a%e6%9c%a8%e9%a6%ac%e5%b7%b2%e9%80%b2%e9%a7%90%e5%8f%b0%e7%81%a3/">[評] 特洛伊木馬已進駐台灣</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>原文 <a href="http://www.appledaily.com.tw/realtimenews/article/new/20141220/527188/" target="_blank" rel="noopener">特洛伊木馬已進駐台灣</a></p>
<p><span id="more-1718"></span></p>
<p style="padding-left: 30px;">作者：林宗男（台大電機系暨電信所教授）</p>
<p style="padding-left: 30px;">最近引發國人關切的中國樂視網事件，到底樂視網的伺服器放在遠傳的機房是否只是NCC官員所宣稱的新興媒體(over-the-top)的一種，全世界只有中國與新加坡在管制？立法委員是否小題大作呢？從NCC官員在立法院的回答，可知官員完全是技術的門外漢，財團見錢眼開，完全忽視此舉對資安、國安帶來的衝擊，將造成我國資安防護出現破洞的嚴重結果。</p>
<p style="padding-left: 30px;">要了解樂視網這個事件對資安帶來的衝擊，必須先解釋一下網際網路運作的基本原理。目前網際網路是透過TCP/IP的階層架構(layer architecture)來提供服務，在應用層(Application Layer)可提供使用者各式各樣的服務，如:多媒體串流視訊、電子商務、社群網站。 這些透過網際網路第三方業者提供的over-the-top service (OTT)應用服務， 並不需要由電信業者經營，只不過提供這些OTT應用服務的資訊，需經由電信業者所建設的實體通訊網路，傳遞至消費者端。</p>
<p style="padding-left: 30px;">我國是自由民主的國家，民眾可以不受限制至美國亞馬遜網站或中國淘寶網購物，或透過串流服務(如Youtube)收看視訊內容。這些OTT 的資訊(Application layer)，藉由傳輸層(transport layer)的TCP封包傳送。 TCP封包必須靠底層(Layer 1及Layer 2)的實體網路設備達到網際網路的通透性。電信業者所建設的實體通訊網路，因為攸關國家安全至鉅，各國都是列為國家的關鍵基礎設施，受到嚴密保護。之前有數百位電機資訊學者，連署反對服貿對中方開放第二類電信服務，就是基於這個原因。</p>
<p style="padding-left: 30px;">樂視網這個事件的嚴重性，在於實體通訊網路資安防護的破窗效應。樂視網伺服器放置於第一類電信業者的機房，並且與其他業者界接(peering)，並不是單純的屬於應用層資訊的新興媒體的服務。美國亞馬遜沒有將其資訊設備置於我國境內，並不妨礙民眾上美國亞馬遜網站購物。當中資將其資通訊設備置於我方機房內，防護外部攻擊的資安防護設備:如防火牆、入侵預防系統(IPS)等，將產生無法有效防堵內部人攻擊(insider attack)的疑慮。以樂視網的規模,日均使用者超過5000萬, 月均超過3.5億通訊量,也形成盜取資安機密最佳的掩護。第一類電信業者機房的界接，也變成駭客來尋找其他公司或政府機關資訊系統漏洞的私密便道。</p>
<p style="padding-left: 30px;">這個事件說明突破特洛伊城牆的第一隻木馬已經進駐，對我國通訊網路產生的破窗效果，將造成台灣資安管理敵我關係的弱化。先不去談論它所提供的節目是否違反廣電法之虞；單是對於資安與國安的衝擊就是顯而易見的。法律背景的政府官員對於技術的不熟悉還能理解，提供電信服務的第一線業者如此作為，則是更令人不解！</p>
<p>因為大神都沒有寫文章出來解釋, 小弟根據自己的經驗, 參考有實務經驗友人的意見拙作一篇.</p>
<p>關於這一篇, NCC 官員在立法院的回答是不是門外漢我不知道(也懶得查), 但是這篇確是百分之百的門外漢寫的.<br />
原因如下.</p>
<p>其實他根本不用拿專有名詞出來的, 講這四層就是給人笑話的. 這四層是</p>
<p><a href="http://blog.richliu.com/wp-content/uploads/2014/12/tcpip_model.jpg"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-1720" src="http://blog.richliu.com/wp-content/uploads/2014/12/tcpip_model-300x165.jpg" alt="tcpip_model" width="300" height="165" srcset="https://blog.richliu.com/wp-content/uploads/2014/12/tcpip_model-300x165.jpg 300w, https://blog.richliu.com/wp-content/uploads/2014/12/tcpip_model.jpg 651w" sizes="(max-width: 300px) 100vw, 300px" /></a>他要講什麼, 我也不知道, 到不是不理解, 而是不知道他要表達什麼.<br />
我猜他講的是 Network Interface 可以直接存取到底層的設備.<br />
照他這個理論, 所有的網路封包都可以存取到最底層. 包含從國外來的. (註: Network Interface Layer 的某些資訊像是 MAC Address 在過路由器之後就會不見, 所以正常的封包是無法接觸到內部網路的 Mac Address)</p>
<p>一般來說, 大家上網和伺服器之間, 只要在 Application Layer 加密之後, 例如像連上 Google 或是 Facebook , 網址前面是 https://www.google.com.tw 和 https://www.facebook.com, 這就代表己經加密了.<br />
加密後, 除非是像 NSA 之類的偶爾一些流言己經可以破解連線數據, 其他人短期內要在中間破解的難度仍然比較高一點. (並不是不可能, 但不在本文撰寫的範圍之內)</p>
<p>其他的部份我不知道他在講什麼, 老實說應該一般人也看不懂, 拿出教授名號就是對的, 嚇一下大家就覺得他講的對. 知道的人就知道他寫的東西根本錯誤很多.</p>
<p>電信機房長的類似這樣. 一櫃一櫃的.  <img loading="lazy" decoding="async" class="aligncenter" src="http://upload.wikimedia.org/wikipedia/commons/8/82/Img_51614_critical-data-centre-at-uni-of-hertfordshire.jpeg" alt="" width="800" height="500" />一般企業就租個一櫃內一到數層, 或是租個幾櫃, 或是更多, 這不一定. (也有其他方案, 不贊述)</p>
<p>一般 ISP/IDC (像中華電信或是遠傳機房)會拉一條網路線或是局端設備在租用的機櫃.<br />
進入維護時需登記, 進去之後只有自己公司的機櫃會打開, 無法接觸到其他的機櫃, 只能維護自己的設備.</p>
<p>機櫃內的安全設備架設大概像下圖, 各公司可能差異很大, 但是大部份中型網站大致上會長得像這樣. 電信公司提供 Router 和 Switch 負責交換網路, 公司進來第一層是防火牆(Firewall), 有些注重資安的公司大多都用功能較強的 IPS, 可以同時偵測疑似入侵行為並且馬上防護. 接下來是負載平衡設備再接到許多伺服器上, 以便同時提供服務.</p>
<p><a href="http://blog.richliu.com/wp-content/uploads/2014/12/internet.jpg"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-1722" src="http://blog.richliu.com/wp-content/uploads/2014/12/internet-300x284.jpg" alt="internet" width="300" height="284" srcset="https://blog.richliu.com/wp-content/uploads/2014/12/internet-300x284.jpg 300w, https://blog.richliu.com/wp-content/uploads/2014/12/internet.jpg 703w" sizes="(max-width: 300px) 100vw, 300px" /></a>公司和公司之間並不直接相連(peer), 在這個圖上就可以看到, 公司對公司之間還是有防火牆和入侵偵測, 除非網路架構設計錯誤, 否則並不會有他文內所謂的內部人攻擊. 除非是自己攻擊自己. (那這個就是另一個問題).</p>
<p>至於大流量盗取資安機密也是笑話, 如果他真的能盗取足夠的機密資料.<br />
隨便一個家用網路像是 Hinet 光世代, 加上加密線路 IPSEC 或是 TOR 這種匿名網路, 以台灣的能力都很難監控到. 而且台灣的網路基礎建設還可以, 上傳並不會是件太困難的事情.</p>
<p>綜合以上他想說的可能會像是, 入侵別人網站取得大量資料隨時上傳.<br />
大概像是即時備份之類的吧. 這個有可能, 不過如果都能盜取了, 為什麼還要一個中介站轉資料出來呢? 不直接在被駭入的機器上傳?</p>
<p>至於拿美國亞馬遜網站做例子就更顯得無知,<br />
樂視是中國 OTT (Over the top), 簡單的說, 就是越過傳統的第四台, 或是中華電信 MOD 等載體, 由內容/版權持有者, 直接將內容提供給收視戶的技術.<br />
美國 Amazon 提供的是購物網站, 內容不用即時, 速度稍慢也沒有關係. (事實上 Amazon 可能有買當地的代理伺服器提供內容快取服務加速), 頻寬耗用比樂視這種影音服務小很多.<br />
而樂視提供下載影片是需要在當地提供大量頻寬的服務(我不確定有沒有用P2P, 印像樂視有, 但是猜測高畫質可能是直接提供). 所以在需要在當地架設機房.<br />
假設台灣的收視戶夠多, 台灣和中國之間的頻寬不夠, 這會限制樂視的總收視戶, 台灣和中國之間的頻寬並沒有寬到足以提供台灣當地的樂視收視戶. 這應該是樂視要在本地租用機房的原因.</p>
<p>而這件事最大的問題可能在於:<br />
1. 這些版權物是不是有受到中華民國官方單位的審核? 雖然我是覺得根本不必審核, 不過某種程度這也是展現國家公權力. NCC雖然大家覺得他很爛, 但是很爛不表示不應該有審核的機構. (像是影片分級或是動畫分級, 甚至是遊戲分級等等)<br />
2. 會不會有對中華民國不友善或是惡毒的意識型態存在, 但是台灣卻沒有辦法&#8221;管理&#8221;, 雖然我是贊成言論自由, 但是言論自由侵犯到他人的自由或是虛偽不實的言論, 我個人認為仍然需要管制.<br />
這些都是有興趣的人可以好好追查的, 同樣不在本文主要討論範圍.</p>
<p>至於 ISP/IDC 提供租用機房的服務就像是 ISP/IDC 提供水電冷氣和網路頻寬, 主要是大頻寬, 可能給予某些比家用戶更高的網路優先權, 保證頻寬或是固定IP. 除此之外和家用網路並無不同. 無需擔心.</p>
<p>大致上就和他的反服貿二類電信一樣, 其實管控得宜不會影響到國家主幹網路.</p>
<p>至於可能發生的潛在問題是什麼, 大膽猜測一下</p>
<p>1) 樂視人員進入維護可能具有大陸人身份, 有潛在風險. (是說中國的機房我也去了很多次了, 那邊都沒有在防台灣人的)<br />
2) 樂視的伺服器可以存取電信業者的 switch router 進而進入電信內部網路. 不過這個駭入別家公司也有可能做得到, 不必大費週章.<br />
3) 不當的接線讓樂視和公司 B 直連, 直接接取公司 B 內部網路. 這個屬人員控管和機房控管問題, 的確有可能發生, 不過不是單純的讓他放機器就可以達到目地的.</p>
<h4>後記</h4>
<p>其實這篇我很早就寫好了, 比上一篇<a title="Permalink to Raid 5 重建的機率很低嗎?" href="http://blog.richliu.com/2014/12/29/1725/">Raid 5 重建的機率很低嗎?</a>還早.</p>
<p>原因是我覺得這篇的概念太簡單, 這應該是這個產業內人人都大概可以知道的東西,<br />
上 FB 或是問一下業界人士大概都可以得到這樣的答案. 但是就是因為太簡單, 我才沒有發出去, 這些日子以來, 我都在想, 台灣發生了什麼問題, 連這種最基本的知識都會搞錯.</p>
<p>這篇讀者投書中的錯誤資訊,<br />
原因只有(1)這位台大電機暨電信所的教授並不知道, 或是(2)故意引導讀者到錯誤的方向</p>
<p>從結論看起來, 我不想猜測是後者. 但是前者也好不到那邊去.<br />
更糟的是, 看起來是 (1) + (2)</p>
<p>因為不知道表示你台大教授的程度是很差的, 這樣的人如何可以教育我們下一代呢?<br />
故意引導讀者到錯誤的方向表示台大教授為<strong>特定政治服務就違背良心發言</strong>.</p>
<p>在資訊科技, 中國都在上太空了, 我們連台大都還在殺豬公.<br />
想到這一點, 我真的是寫不下去了, 唉.</p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2015/01/04/1718/%e8%a9%95-%e7%89%b9%e6%b4%9b%e4%bc%8a%e6%9c%a8%e9%a6%ac%e5%b7%b2%e9%80%b2%e9%a7%90%e5%8f%b0%e7%81%a3/">[評] 特洛伊木馬已進駐台灣</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.richliu.com/2015/01/04/1718/%e8%a9%95-%e7%89%b9%e6%b4%9b%e4%bc%8a%e6%9c%a8%e9%a6%ac%e5%b7%b2%e9%80%b2%e9%a7%90%e5%8f%b0%e7%81%a3/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title>蘋果日報被國家級駭客攻擊.</title>
		<link>https://blog.richliu.com/2014/11/09/1689/%e8%98%8b%e6%9e%9c%e8%a2%ab%e9%a7%ad%e5%ae%a2%e6%94%bb%e6%93%8a/</link>
					<comments>https://blog.richliu.com/2014/11/09/1689/%e8%98%8b%e6%9e%9c%e8%a2%ab%e9%a7%ad%e5%ae%a2%e6%94%bb%e6%93%8a/#comments</comments>
		
		<dc:creator><![CDATA[richliu]]></dc:creator>
		<pubDate>Sun, 09 Nov 2014 09:45:39 +0000</pubDate>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Cracker]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[蘋果日報]]></category>
		<category><![CDATA[造謠]]></category>
		<category><![CDATA[駭客]]></category>
		<guid isPermaLink="false">http://blog.richliu.com/?p=1689</guid>

					<description><![CDATA[<p>11/9號連不上水果日報了. 【請大家告訴大家】 《蘋果》被駭客強烈攻擊，一些報導、圖片可能無法正常觀看，目前 [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2014/11/09/1689/%e8%98%8b%e6%9e%9c%e8%a2%ab%e9%a7%ad%e5%ae%a2%e6%94%bb%e6%93%8a/">蘋果日報被國家級駭客攻擊.</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>11/9號連不上水果日報了.</p>
<p style="padding-left: 30px;"><a href="https://www.facebook.com/apple.realtimenews/photos/a.354578254665387.1073741830.352962731493606/589271084529435/?type=1" target="_blank" rel="noopener">【請大家告訴大家】<br />
</a><br />
《蘋果》被駭客強烈攻擊，一些報導、圖片可能無法正常觀看，目前工程師正緊急搶修中，造成不便深感抱歉！編編們仍會在社群上持續為大家帶來最新、最快的新聞！</p>
<p>        你可以透過以下管道發落最新消息：<br />
&lt;略&gt;</p>
<p>剛好朋友在說是 DNS 的問題, 就順手幫水果查了一下<del>水錶</del>DNS</p>
<p><span id="more-1689"></span></p>
<p>第一筆就查 www.appledaily.com.tw</p>
<p style="padding-left: 30px;"># dig www.appledaily.com.tw<br />
;www.appledaily.com.tw.         IN      A</p>
<p>沒資料, 很好, DNS 的確是爛了, 不過還要確認一下, 查一下 DNS 的 Server</p>
<p style="padding-left: 30px;"># dig appledaily.com.tw ns<br />
;appledaily.com.tw.             IN      NS</p>
<p>沒資料, 很好, 連 DNS Server 都爛了, 這應該不是有些圖文看不到而己.</p>
<p>查一下 whois database.</p>
<p style="padding-left: 30px;"># whois appledaily.com.tw<br />
Domain Name: appledaily.com.tw<br />
Registrant:<br />
香港商蘋果日報出版發展有限公司台灣分公司<br />
AppleDaily Publication Development Ltd. Taiwan Branch<br />
No. 48, Lane 141, SingAi Rd., Neihu, Taipei, Taiwan, R.O.C.</p>
<p style="padding-left: 30px;">Contact:<br />
Linson   linson30@gmail.com<br />
TEL:  (02)6601-5835<br />
FAX:  (02)6601-6402</p>
<p style="padding-left: 30px;">Record expires on 2016-02-18 (YYYY-MM-DD)<br />
Record created on 2002-02-04 (YYYY-MM-DD)</p>
<p style="padding-left: 30px;">Domain servers in listed order:<br />
ns1.appledaily.com.tw       198.41.222.12<br />
ns2.appledaily.com.tw       198.41.222.8<br />
ns3.appledaily.com.tw       198.41.223.12</p>
<p style="padding-left: 30px;">Registration Service Provider: HINET</p>
<p>DNS 放在這三個 IP, 查一下是屬於誰的. <del>而且 ns1 和 ns3 的 IP 是一樣的, 沒有必要好嗎?(結果不變)</del></p>
<p style="padding-left: 30px;">$ dig -x 198.41.222.12<br />
12.222.41.198.in-addr.arpa. 1799 IN     PTR     cf-198-41-222-12.cloudflare.com.<br />
原來是 <a href="https://www.cloudflare.com/" target="_blank" rel="noopener">cloudflare</a>, 如果有在使用網站服務, 這個網站提供 CDN, 也有防止駭客直接攻擊網站或是 DNS.</p>
<p>所以直接查詢 cloudflare 的 DNS</p>
<p style="padding-left: 30px;"># dig @198.41.222.12 www.appledaily.com.tw<br />
;; connection timed out; no servers could be reached<br />
# dig @198.41.222.8 www.appledaily.com.tw<br />
;; connection timed out; no servers could be reached<br />
# dig @198.41.223.12 www.appledaily.com.tw<br />
;; connection timed out; no servers could be reached</p>
<p><del>連 Server 都沒有, 真相應該大白了, <span style="color: #ff0000;"><strong>DNS 設到一個沒有 DNS Server 的地方, 所以整個網站都爛了</strong></span>.</del></p>
<p>猜測是 cloudflare 被打爛了或是其他理由 (P.S 從美國也是沒有反應)<br />
不過在那邊呢? 從網路查到 apple 舊的 DNS 是這兩個 IP</p>
<p style="padding-left: 30px;"><span style="color: #464646; font-family: 'Microsoft Yahei'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none; background-color: #ffffff;">ns1.appledaily.com.tw 61.31.50.35</span><br style="color: #464646; font-family: 'Microsoft Yahei'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;" /><span style="color: #464646; font-family: 'Microsoft Yahei'; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 24px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none; background-color: #ffffff;">ns.appledaily.com.tw 218.211.37.1</span></p>
<p>然後查 IP</p>
<p style="padding-left: 30px;"># dig @61.31.50.35 www.appledaily.com.tw<br />
;; ANSWER SECTION:<br />
www.appledaily.com.tw.  60      IN      CNAME   cdn.appledaily.com.tw.edgesuite.net.<br />
cdn.appledaily.com.tw.edgesuite.net. 1117 IN CNAME a1085.w19.akamai.net.<br />
a1085.w19.akamai.net.   12      IN      A       203.211.2.34<br />
a1085.w19.akamai.net.   12      IN      A       203.211.2.24<br />
# dig @218.211.37.1 www.appledaily.com.tw<br />
;; connection timed out; no servers could be reached</p>
<p>很好 61.31.50.35 是好的. 還可以查到是在 akamai.net 上</p>
<p>這時候只要改個 /etc/hosts 加上這一行<br />
203.211.2.34    www.appledaily.com.tw, 又可以看了.<br />
<a href="http://blog.richliu.com/wp-content/uploads/2014/11/snapshot4.png"><img loading="lazy" decoding="async" class="alignright size-full wp-image-1691" src="http://blog.richliu.com/wp-content/uploads/2014/11/snapshot4.png" alt="snapshot4" width="1138" height="883" srcset="https://blog.richliu.com/wp-content/uploads/2014/11/snapshot4.png 1138w, https://blog.richliu.com/wp-content/uploads/2014/11/snapshot4-300x232.png 300w, https://blog.richliu.com/wp-content/uploads/2014/11/snapshot4-1024x794.png 1024w" sizes="(max-width: 1138px) 100vw, 1138px" /></a></p>
<p><strong>水果日報的 IT 加油好嗎? <del>不要有事就推給國家級駭客</del></strong>.</p>
<p>後記, 現在連不上看不到最新的 SOA.  不過這感覺有點短.</p>
<p style="padding-left: 30px;">appledaily.com.tw.      60 IN SOA as-extdns.appledaily.com.tw. admin.appledaily.com.tw. (<br />
5238       ; serial<br />
300        ; refresh (5 minutes)<br />
900        ; retry (15 minutes)<br />
86400      ; expire (1 day)<br />
60         ; minimum (1 minute)<br />
)</p>
<p>這是 google.com 的</p>
<p style="padding-left: 30px;">google.com.             21599 IN SOA ns1.google.com. dns-admin.google.com. (<br />
2014110400 ; serial<br />
7200       ; refresh (2 hours)<br />
1800       ; retry (30 minutes)<br />
1209600    ; expire (2 weeks)<br />
300        ; minimum (5 minutes)<br />
)</p>
<p>Yahoo.com 的</p>
<p style="padding-left: 30px;">yahoo.com.              1799 IN SOA ns1.yahoo.com. hostmaster.yahoo-inc.com. (<br />
2014110803 ; serial<br />
3600       ; refresh (1 hour)<br />
300        ; retry (5 minutes)<br />
1814400    ; expire (3 weeks)<br />
600        ; minimum (10 minutes)<br />
)</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>之前也有發生過一次<br />
<a href="https://www.facebook.com/appledaily.tw/photos/a.364361237068.207658.232633627068/10152516146892069/?type=1&amp;theater" target="_blank" rel="noopener">《蘋果》被駭客強烈攻擊，一些報導、圖片可能無法正常觀看，目前工程師正緊急搶修中，造成不便深感抱歉！</a></p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2014/11/09/1689/%e8%98%8b%e6%9e%9c%e8%a2%ab%e9%a7%ad%e5%ae%a2%e6%94%bb%e6%93%8a/">蘋果日報被國家級駭客攻擊.</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.richliu.com/2014/11/09/1689/%e8%98%8b%e6%9e%9c%e8%a2%ab%e9%a7%ad%e5%ae%a2%e6%94%bb%e6%93%8a/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title>自幹 dyndns</title>
		<link>https://blog.richliu.com/2014/10/09/1674/%e8%87%aa%e5%b9%b9-dyndns/</link>
					<comments>https://blog.richliu.com/2014/10/09/1674/%e8%87%aa%e5%b9%b9-dyndns/#respond</comments>
		
		<dc:creator><![CDATA[richliu]]></dc:creator>
		<pubDate>Wed, 08 Oct 2014 17:01:20 +0000</pubDate>
				<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[Bind]]></category>
		<category><![CDATA[dyndns]]></category>
		<category><![CDATA[named]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[schtasks]]></category>
		<category><![CDATA[Update]]></category>
		<category><![CDATA[windows]]></category>
		<guid isPermaLink="false">http://blog.richliu.com/?p=1674</guid>

					<description><![CDATA[<p>之前好像免費的 dyndns 都收的差不多了, 好像很久沒有人提了. 今天心情還不錯, 就來架設自己的 dyn [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2014/10/09/1674/%e8%87%aa%e5%b9%b9-dyndns/">自幹 dyndns</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>之前好像免費的 dyndns 都收的差不多了, 好像很久沒有人提了.<br />
今天心情還不錯, 就來架設自己的 dyndns.<br />
主要可以參考這二篇</p>
<p><a href="http://phorum.study-area.org/index.php?topic=40717.0" target="_blank" rel="noopener">[分享] 用 BIND 架設 DDNS Server 提供 DDNS 服務 </a>及<br />
<a href="http://www.study-area.org/tips/ddns.htm" target="_blank" rel="noopener">動態 DNS 設定技巧</a><br />
<span id="more-1674"></span></p>
<p>上網看了一下, 大家寫的非常長, 不過如果架過 DNS, 其實也沒有這麼難, 實作上還算簡單的.<br />
至少比想像中簡單許多<br />
1. 在 /var/bind/pri/named.domain.com 中加入你想要做 dyndns 的 domain name</p>
<p style="padding-left: 30px;">ex:<br />
test A 0.0.0.0</p>
<p style="padding-left: 30px;">別忘了改 serial number</p>
<p>2. 到 /var/bind/dyn 下產生 key</p>
<p style="padding-left: 30px;"># dnssec-keygen -a HMAC-MD5 -b 512 -n USER test.domain.name.<br />
會產生二個檔案, 內容產不多</p>
<p>3. 將 key 內容 copy 到 bind 去</p>
<p style="padding-left: 30px;">將其中的 Ktest.domain.name.+123+45678.key 內的</p>
<p style="padding-left: 30px;">&#8220;test.domain.name. IN KEY 0 3 157 WH3pLphbwFlc/F8C1tbFcdzWRfcDdYWu00KBM5l2OE0rAVHzXFO+dahU SRrPKC0AMcbO6mwV4oVK94G9J5u9aw==<br />
放到 /etc/bind/named.conf 內,</p>
<p style="padding-left: 30px;">key test.domain.name. {<br />
algorithm HMAC-MD5;<br />
secret &#8220;WH3pLphbwFlc/F8C1tbFcdzWRfcDdYWu00KBM5l2OE0rAVHzXFO+dahU SRrPKC0AMcbO6mwV4oVK94G9J5u9aw==&#8221;;<br />
};</p>
<p>4. 修改 zone 的設定</p>
<p style="padding-left: 30px;">zone &#8220;domain.name&#8221; in {<br />
type master;<br />
file &#8220;pri/named.domain&#8221;;<br />
allow-query{ any; };</p>
<p style="padding-left: 30px;">update-policy {<br />
grant test.domain.name. name test.domain.name. A;<br />
};<br />
};</p>
<p>5. Restart bind</p>
<p style="padding-left: 30px;"># /etc/init.d/named restart</p>
<p>6. 測試 Update 是否成功<br />
使用 nsupdate 工具向 Primary DNS 做更新動作：</p>
<p>$ nsupdate -k Ktest.domain.name.+123+45678.key<br />
&gt; server ns.domain.name // 指定 Primary DNS<br />
&gt; update delete test.domain.name A // 先刪除舊資料<br />
&gt; update add test.domain.name 0 A 1.1.1.1 // 再新增資料<br />
&gt; send // 送出到 Primary DNS<br />
$ dig @ns.domain.name test.domain.name<br />
;; ANSWER SECTION:<br />
test.domain.name. 0 IN A 1.1.1.1</p>
<p>如果不成功, 可以看一下 /var/log , 然後看看是不是少了 /var/bind/pri/named.domain.com.jnl, 這個權限要加上去<br />
如果重啟之後, 出現 &#8220;response to SOA query was unsuccessful&#8221;, 那個 .jnl 的檔案砍了再重來就可以了, 好像是改了 SOA 就會錯亂.</p>
<p>這樣算完成一半, 上面第二個 Link 內有 Linux Update 的範例, 不過 Windows 怎麼辦呢? 像中華電信每幾天會換一次 IP, 所以自動更新的功能只好自己硬幹了. 而且 Windows PPPoE Disconnect/connected 時都不會有 event 可以呼叫 script 去執行, 所以就每一陣子執行一次 script 更新一下 DNS 資料, 不重要的 Service 這樣做還好, 重要的話可能就不行, 但是重要的也不會放 PPPoE 上吧 XD</p>
<p>自己硬幹有幾個選擇</p>
<p style="padding-left: 30px;">[X] DOS BASH : 這個很差, 可能抓不到 IP<br />
[X] Cygwin : 這個在我的 Windows XP 上根本跑不起來, 被防毒軟體擋到不能用 :&lt;<br />
[O] Python : 這個好, 什麼地方都可以用, 只要跑簡單的程式的話, 還是 python 安定.</p>
<p>所以就自己寫了一個小程式<br />
1. 程式碼放到 github , 存成 update.py<br />
https://github.com/richliu/dnsupdate</p>
<p>2. 產生 template file, script.txt 內容如下</p>
<p style="padding-left: 30px;">server ns.domain.name<br />
update delete test.domain.name A<br />
update add test.domain.name 0 A SERVER_NEW_IP<br />
send</p>
<p>3. 產生一個空的 ip.dat 檔案. (懶得檢查了, 所以就自己動手最快)</p>
<p>4. 寫一個 run.bat 內容是</p>
<p style="padding-left: 30px;">cd C:\TEST\<br />
C:\Python27\python.exe update.py</p>
<p>5. 下載 bind 執行檔 for windows 32bit</p>
<p><a href="http://www.isc.org/downloads/bind/" target="_blank" rel="noopener">  http://www.isc.org/downloads/bind/</a></p>
<p>解出所有的 .dll 檔, 和 dig 及 nsupdate 丟到同一個目錄, 如果是 windows 32 bit, 別忘了執行一下程式內的 vcredist_x86.exe, 這是 visual c++ 2005 dll .</p>
<p>6. 定時執行</p>
<p style="padding-left: 30px;">如果 IP 有變的話就會更新 dyndns, 因為用 windows, 所以採用的是 schtasks.<br />
相關的說明可以上 Microsoft <a href="http://technet.microsoft.com/en-us/library/cc725744.aspx" target="_blank" rel="noopener">Schtasks</a> 網站看<br />
用下面這個指令就可以讓 script 每 5 分鐘執行一次<br />
# schtasks /create /tn &#8220;Check IP&#8221; /tr c:\TEST\run.bat /sc minute /mo 5</p>
<p>大.功.告.成.</p>
<p>&nbsp;</p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2014/10/09/1674/%e8%87%aa%e5%b9%b9-dyndns/">自幹 dyndns</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.richliu.com/2014/10/09/1674/%e8%87%aa%e5%b9%b9-dyndns/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>[Linux] Wireshark 抓到超過 MTU 的封包.</title>
		<link>https://blog.richliu.com/2013/09/11/1505/linux-wireshark-%e6%8a%93%e5%88%b0%e8%b6%85%e9%81%8e-mtu-%e7%9a%84%e5%b0%81%e5%8c%85/</link>
					<comments>https://blog.richliu.com/2013/09/11/1505/linux-wireshark-%e6%8a%93%e5%88%b0%e8%b6%85%e9%81%8e-mtu-%e7%9a%84%e5%b0%81%e5%8c%85/#respond</comments>
		
		<dc:creator><![CDATA[richliu]]></dc:creator>
		<pubDate>Wed, 11 Sep 2013 14:30:45 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[ethtool]]></category>
		<category><![CDATA[gro]]></category>
		<category><![CDATA[offload]]></category>
		<category><![CDATA[packet]]></category>
		<category><![CDATA[wireshark]]></category>
		<guid isPermaLink="false">http://blog.richliu.com/?p=1505</guid>

					<description><![CDATA[<p>在 Linux Wireshark 有時候會抓到比 MTU Size 更大的封包, ex: 2336, 516 [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2013/09/11/1505/linux-wireshark-%e6%8a%93%e5%88%b0%e8%b6%85%e9%81%8e-mtu-%e7%9a%84%e5%b0%81%e5%8c%85/">[Linux] Wireshark 抓到超過 MTU 的封包.</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>在 Linux Wireshark 有時候會抓到比 MTU Size 更大的封包, ex: 2336, 5160 .. etc.</p>
<p>這個問題源自於 Linux NIC driver enable GRO (Generic Receive Offload), 這功能會將數個封包組合成一個大封包以增加速度.</p>
<p><span id="more-1505"></span>這時可以用 ethtool 去修改網路卡的參數</p>
<p>使用 ethtool -k &lt;interface&gt; 查看狀況.</p>
<p>[TEXT]</p>
<p># ethtool -k eth0<br />
Features for eth0:<br />
rx-checksumming: on<br />
tx-checksumming: off<br />
tx-checksum-ipv4: off<br />
tx-checksum-ip-generic: off [fixed]<br />
tx-checksum-ipv6: off [fixed]<br />
tx-checksum-fcoe-crc: off [fixed]<br />
tx-checksum-sctp: off [fixed]<br />
scatter-gather: off<br />
tx-scatter-gather: off<br />
tx-scatter-gather-fraglist: off [fixed]<br />
tcp-segmentation-offload: off<br />
tx-tcp-segmentation: off<br />
tx-tcp-ecn-segmentation: off [fixed]<br />
tx-tcp6-segmentation: off [fixed]<br />
udp-fragmentation-offload: off [fixed]<br />
generic-segmentation-offload: off [requested on]<br />
generic-receive-offload: on<br />
large-receive-offload: off [fixed]<br />
rx-vlan-offload: on<br />
tx-vlan-offload: on<br />
ntuple-filters: off [fixed]<br />
receive-hashing: off [fixed]<br />
highdma: off [fixed]<br />
rx-vlan-filter: off [fixed]<br />
vlan-challenged: off [fixed]<br />
tx-lockless: off [fixed]<br />
netns-local: off [fixed]<br />
tx-gso-robust: off [fixed]<br />
tx-fcoe-segmentation: off [fixed]<br />
fcoe-mtu: off [fixed]<br />
tx-nocache-copy: off<br />
loopback: off [fixed]<br />
rx-fcs: off<br />
rx-all: off<br />
[/TEXT]</p>
<p>我們發現 generic-receive-offload: on<br />
然後可以用這個命令<br />
# ethtool &#8211;offload eth0 gro off<br />
關掉GRO, 這樣抓下來的封包就會正常了.</p>
<p>ref.</p>
<p><a href="http://www.wireshark.org/lists/wireshark-users/201206/msg00076.html" target="_blank" rel="noopener">Re: [Wireshark-users] wireshark sees jumbo TCP packets in linux</a></p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2013/09/11/1505/linux-wireshark-%e6%8a%93%e5%88%b0%e8%b6%85%e9%81%8e-mtu-%e7%9a%84%e5%b0%81%e5%8c%85/">[Linux] Wireshark 抓到超過 MTU 的封包.</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.richliu.com/2013/09/11/1505/linux-wireshark-%e6%8a%93%e5%88%b0%e8%b6%85%e9%81%8e-mtu-%e7%9a%84%e5%b0%81%e5%8c%85/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Gentoo Gateway 連中研院的 IPv6 Tunnel Broker</title>
		<link>https://blog.richliu.com/2012/04/28/1204/gentoo-%e9%80%a3%e4%b8%ad%e7%a0%94%e9%99%a2%e7%9a%84-ipv6-tunnel-broker/</link>
					<comments>https://blog.richliu.com/2012/04/28/1204/gentoo-%e9%80%a3%e4%b8%ad%e7%a0%94%e9%99%a2%e7%9a%84-ipv6-tunnel-broker/#comments</comments>
		
		<dc:creator><![CDATA[richliu]]></dc:creator>
		<pubDate>Fri, 27 Apr 2012 17:47:38 +0000</pubDate>
				<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[gateway]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[radvd]]></category>
		<category><![CDATA[tunnel broker]]></category>
		<category><![CDATA[中研院]]></category>
		<guid isPermaLink="false">http://blog.richliu.com/?p=1204</guid>

					<description><![CDATA[<p>自從從中華電信固3 IP 換光世代之後就失去了 IPv6 Address. 今天剛好在某 PTT 文上看到,  [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2012/04/28/1204/gentoo-%e9%80%a3%e4%b8%ad%e7%a0%94%e9%99%a2%e7%9a%84-ipv6-tunnel-broker/">Gentoo Gateway 連中研院的 IPv6 Tunnel Broker</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>自從從中華電信固3 IP 換光世代之後就失去了 IPv6 Address. </p>
<p>今天剛好在某 PTT 文上看到, 中研院的 IPv6 Tunnel Broker 有給固定 IP 和 Prefix.<br />
這樣一來就可以搞家中 IPv6 Enable 了. </p>
<p>如果有 Gentoo 做 Gateway, 想讓家中 Intranet 有 IPv6 的環境, 就需要按照這一篇設定. </p>
<p>換 IPv6 最大的好處是什麼? 用中研院的網路看 Youtube 超順的&#8230;<br />
<span id="more-1204"></span><br />
首先去 <a href="http://tb2.ipv6.ascc.net/" target="_blank" rel="noopener">http://tb2.ipv6.ascc.net/</a> 申請帳號.<br />
最好寄密碼到信箱, 要不然打錯密碼很悶的 ..</p>
<p>到 <a href="http://www.go6.net/4105/download.asp" target="_blank" rel="noopener">http://www.go6.net/4105/download.asp</a><br />
下載 Client 6.0 Platform Specific Build &#8211; Linux 和 Client 6.0 Source Code (Linux/Unix/Darwin/BSD)<br />
我是懶得 install, 所以解壓縮 Linux binary 的 gw6c 之後, 再 compile 新的, 蓋掉舊的 gw6c binary . </p>
<p>解壓縮完目錄像這樣, gw6c binary 在 bin/<br />
[TEXT]<br />
xxx gw6c # ls -lF<br />
total 16<br />
drwxr-xr-x 2 root root 4096 Apr 28 01:22 bin/<br />
drwxr-xr-x 4 root root 4096 Mar 13  2009 man/<br />
drwxr-xr-x 2 root root 4096 Apr 28 01:21 template/<br />
[/TEXT]</p>
<p>編輯 bin/gw6c.conf<br />
[TEXT]<br />
userid=< 申請帳號><br />
passwd=< 申請密碼><br />
server=tb2.ipv6.ascc.net<br />
auth_method=digest-md5<br />
host_type=router<br />
prefixlen=64<br />
if_prefix=< 網卡介面, 我是用eth1><br />
gw6_dir=< 路徑>/gw6c<br />
[/TEXT]<br />
<> 請代換成自己的參數</p>
<p>如果只是單機要連線, host_type 要設 host , if_prefix 不用設定.<br />
[TEXT]<br />
host_type=host<br />
[/TEXT]</p>
<p>Gentoo 的話記得先安裝 RADVD (host_type=host 不需要)<br />
[BASH]<br />
# emerge -av radvd<br />
[/BASH]<br />
如果是初次設定, 別忘了 ip6table 要改 MTU<br />
[BASH]<br />
# ip6tables -A FORWARD -p tcp &#8211;tcp-flags SYN,RST SYN -j TCPMSS  &#8211;clamp-mss-to-pmtu<br />
# /etc/init.d/ip6tables save<br />
# rc-update add ip6tables default<br />
[/BASH]<br />
這樣下次開機的時候就會自動設定 ip6tables </p>
<p>接下來就直接跑<br />
[BASH]<br />
# ./gw6c -f gw6c.conf<br />
# ifconfig<br />
[/BASH]<br />
如果 sit1 有起來, 表示 IPv6 設定成功,<br />
如果沒有起來, 就改 gw6c.conf加上<br />
[TEXT]<br />
log_file=3<br />
[/TEXT]<br />
重新執行一次 gw6c 看看會發生什麼事情 . Log 會記錄在 gw6c.log 內. </p>
<p>P.S Gentoo nettool 1.6 以後 ifconfig 和 route 這二個命令改位置了.<br />
如果有碰到連不上的狀況, 而且是 command 錯誤, 請修改 template/linux.sh 內這幾行<br />
[TEXT]<br />
 79 ifconfig=/bin/ifconfig<br />
 80 route=/bin/route<br />
195    ExecNoCheck $ifconfig $TSP_TUNNEL_INTERFACE add $TSP_CLIENT_ADDRESS_IPV6/$TSP_TUNNEL_PREFIXLEN<br />
196    ExecNoCheck $ifconfig $TSP_TUNNEL_INTERFACE mtu 1280<br />
[/TEXT]</p>
<p>我的 IPv6 又可以用了, 不過某些網站似乎怪怪的 :-/</p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2012/04/28/1204/gentoo-%e9%80%a3%e4%b8%ad%e7%a0%94%e9%99%a2%e7%9a%84-ipv6-tunnel-broker/">Gentoo Gateway 連中研院的 IPv6 Tunnel Broker</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.richliu.com/2012/04/28/1204/gentoo-%e9%80%a3%e4%b8%ad%e7%a0%94%e9%99%a2%e7%9a%84-ipv6-tunnel-broker/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>Gentoo PPPoE Problem</title>
		<link>https://blog.richliu.com/2012/01/18/1178/gentoo-pppoe-problem/</link>
					<comments>https://blog.richliu.com/2012/01/18/1178/gentoo-pppoe-problem/#respond</comments>
		
		<dc:creator><![CDATA[richliu]]></dc:creator>
		<pubDate>Wed, 18 Jan 2012 00:39:42 +0000</pubDate>
				<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[openrc]]></category>
		<category><![CDATA[pppoe]]></category>
		<category><![CDATA[relink]]></category>
		<category><![CDATA[restart]]></category>
		<category><![CDATA[service]]></category>
		<guid isPermaLink="false">http://blog.richliu.com/?p=1178</guid>

					<description><![CDATA[<p>Gentoo 中, pppoe interface shutdown 時會 restart 相關 Servic [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2012/01/18/1178/gentoo-pppoe-problem/">Gentoo PPPoE Problem</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Gentoo 中, pppoe interface shutdown 時會 restart 相關 Service 的問題.</p>
<p>這個問題是 openrc 造成的, 修改 /etc/rc.conf 加上以下二行</p>
<pre lang="text">
rc_net_ppp0_provide="!net"
rc_net_ppp1_provide="!net"
</pre>
<p>PPPoE Relink<br />
修改 /etc/conf.d/net 在 pppd_ppp0 加上</p>
<pre lang="text">
pppd_ppp0="defaultroute debug persist lcp-echo-interval 15 lcp-echo-failure 6"
</pre>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2012/01/18/1178/gentoo-pppoe-problem/">Gentoo PPPoE Problem</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.richliu.com/2012/01/18/1178/gentoo-pppoe-problem/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>收不到網樂通的認證信.</title>
		<link>https://blog.richliu.com/2011/05/01/1060/%e6%94%b6%e4%b8%8d%e5%88%b0%e7%b6%b2%e6%a8%82%e9%80%9a%e7%9a%84%e8%aa%8d%e8%ad%89%e4%bf%a1/</link>
					<comments>https://blog.richliu.com/2011/05/01/1060/%e6%94%b6%e4%b8%8d%e5%88%b0%e7%b6%b2%e6%a8%82%e9%80%9a%e7%9a%84%e8%aa%8d%e8%ad%89%e4%bf%a1/#comments</comments>
		
		<dc:creator><![CDATA[richliu]]></dc:creator>
		<pubDate>Sun, 01 May 2011 07:43:08 +0000</pubDate>
				<category><![CDATA[KUSO]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[問題]]></category>
		<category><![CDATA[笑話]]></category>
		<category><![CDATA[網樂通]]></category>
		<category><![CDATA[認證信]]></category>
		<guid isPermaLink="false">http://blog.richliu.com/?p=1060</guid>

					<description><![CDATA[<p>我因為一直沒有收到網樂通的認證信, 打去網樂通的客服&#8230;&#8230; 客服: &#8220;劉先生 [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2011/05/01/1060/%e6%94%b6%e4%b8%8d%e5%88%b0%e7%b6%b2%e6%a8%82%e9%80%9a%e7%9a%84%e8%aa%8d%e8%ad%89%e4%bf%a1/">收不到網樂通的認證信.</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>我因為一直沒有收到網樂通的認證信, 打去網樂通的客服&#8230;&#8230;</p>
<p>客服: &#8220;劉先生, 請問你是使用什麼信箱&#8221;<br />
&#8221; xxxxxx@poorman.org&#8221;<br />
客服: &#8220;劉先生, 有些信箱會擋我們的 e-mail , 你有沒有其他的信箱呢&#8221;<br />
客服: &#8220;像是 hotmail, pchome 或是 gmail 之類的&#8221;<br />
&#8220;xxxxx@gmail.com&#8221;<br />
客服: &#8220;劉先生, 請問一下您是使用什麼瀏覽器收信呢&#8221;<br />
&#8220;我是使用 Firefox 收信&#8221;<br />
客服: &#8220;劉先生, 對不起, Firefox 可能收不到我們的認證信哦, 請你改用 IE 瀏覽器去收一下, 謝謝&#8221;</p>
<p>囧到一個極點, 根本不想解釋給客服小姐聽..<br />
<span id="more-1060"></span><br />
剛剛查了一下我 mail server 上的 log. </p>
<p>[TEXT]<br />
May  1 05:27:17 bbs postfix/smtpd[16929]: connect from unknown[80.77.6.55]<br />
May  1 05:27:17 bbs postfix/smtpd[16929]: NOQUEUE: reject: RCPT from unknown[80.77.6.55]: 450 4.7.1 Client host rejected: cannot find your hostname, [80.77.6.55]; from=<no -reply@ebill.nextvod.com.tw> to=<xxxxxxx @poorman.org> proto=ESMTP helo=<win -VIGGVUC35LG><br />
May  1 05:27:17 bbs postfix/smtpd[16929]: disconnect from unknown[80.77.6.55]<br />
[/TEXT]</p>
<p>查一下 ebill.nextvod.com.tw 在那邊?<br />
[TEXT]<br />
# dig ebill.nextvod.com.tw</p>
<p>; < <>> DiG 9.6.1-P3 < <>> ebill.nextvod.com.tw<br />
;; global options: +cmd<br />
;; Got answer:<br />
;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 11882
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1

;; QUESTION SECTION:
;ebill.nextvod.com.tw.          IN      A

;; ANSWER SECTION:
ebill.nextvod.com.tw.   3600    IN      A       63.221.156.74

;; AUTHORITY SECTION:
nextvod.com.tw.         46663   IN      NS      ns1.nextvod.com.tw.
nextvod.com.tw.         46663   IN      NS      ns.nextvod.com.tw.

;; ADDITIONAL SECTION:
ns.nextvod.com.tw.      58730   IN      A       218.211.37.1

;; Query time: 14 msec
;; SERVER: 168.95.1.1#53(168.95.1.1)
;; WHEN: Sun May  1 15:32:43 2011
;; MSG SIZE  rcvd: 105
[/TEXT]

查一下 63.221.156.75 
[TEXT]
# whois 63.221.156.74
#
# Query terms are ambiguous.  The query is assumed to be:
#     "n 63.221.156.74"
#
# Use "?" to get help.
#

#
# The following results may also be obtained via:
# http://whois.arin.net/rest/nets;q=63.221.156.74?showDetails=true&#038;showARIN=false
#

NetRange:       63.216.0.0 - 63.223.255.255
CIDR:           63.216.0.0/13
OriginAS:
NetName:        BTN-CIDR5
NetHandle:      NET-63-216-0-0-1
Parent:         NET-63-0-0-0-0
NetType:        Direct Allocation
Comment:        ADDRESSES WITHIN THIS BLOCK ARE NON-PORTABLE
RegDate:        1999-12-09
Updated:        2004-11-12
Ref:            http://whois.arin.net/rest/net/NET-63-216-0-0-1

OrgName:        Beyond The Network America, Inc.
OrgId:          BNA-42
Address:        450 Springpark PL
Address:        Suite 100
City:           Herdon
StateProv:      VA
PostalCode:     20170
Country:        US
RegDate:        2004-05-25
Updated:        2009-02-04
Ref:            http://whois.arin.net/rest/org/BNA-42

OrgTechHandle: PUN6-ARIN
OrgTechName:   PCCW US NOC
OrgTechPhone:  +1-703-621-1637
OrgTechEmail:  usnoc@pccwglobal.com
OrgTechRef:    http://whois.arin.net/rest/poc/PUN6-ARIN

OrgTechHandle: CDO54-ARIN
OrgTechName:   Downes, Chris
OrgTechPhone:  +1-703-621-1619
OrgTechEmail:  cdownes@pccwglobal.com
OrgTechRef:    http://whois.arin.net/rest/poc/CDO54-ARIN

OrgAbuseHandle: PAD13-ARIN
OrgAbuseName:   PCCW AUP Department
OrgAbusePhone:  +1-703-621-1637
OrgAbuseEmail:  probinson@pccwglobal.com
OrgAbuseRef:    http://whois.arin.net/rest/poc/PAD13-ARIN

OrgNOCHandle: PUN6-ARIN
OrgNOCName:   PCCW US NOC
OrgNOCPhone:  +1-703-621-1637
OrgNOCEmail:  usnoc@pccwglobal.com
OrgNOCRef:    http://whois.arin.net/rest/poc/PUN6-ARIN

#
# ARIN WHOIS data and services are subject to the Terms of Use
# available at: https://www.arin.net/whois_tou.html
#
[/TEXT]

查一下 80.77.6.55 Whois 
[TEXT]
# whois 80.77.6.55
% This is the RIPE Database query service.
% The objects are in RPSL format.
%
% The RIPE Database is subject to Terms and Conditions.
% See http://www.ripe.net/db/support/db-terms-conditions.pdf

% Note: this output has been filtered.
%       To receive output for a database update, use the "-B" flag.

% Information related to '80.77.6.0 - 80.77.6.255'

inetnum:        80.77.6.0 - 80.77.6.255
netname:        QUICK
descr:          Quivk Link
country:        EG
admin-c:        BIJA1-RIPE
tech-c:         BIJA1-RIPE
status:         ASSIGNED PA
mnt-by:         FLAG-MNT
source:         RIPE # Filtered

person:         Bijal Sanghani
address:        Flag Telecom
address:        London
phone:          +44 208 282 0068
e-mail:         bsanghani@flagtelecom.com
nic-hdl:        BIJA1-RIPE
mnt-by:         FLAG-MNT
source:         RIPE # Filtered

% Information related to '80.77.0.0/20AS15412'

route:        80.77.0.0/20
descr:        Route for FLAG Telecom - Egypt
origin:       AS15412
mnt-by:       FLAG-MNT
source:       RIPE # Filtered
[/TEXT]

ebill.nextvod.com.tw 那個 IP 看起來是正常的, 因為是從 PCC 送過來的
PCC 是香港商電訊盈科.
但是實際怎麼樣, Route for FLAG telecom Egypt 寄認證信給我 ????

難道是被 hacker? 

最後補上 nmap 的資料
[TEXT]
# nmap -sT 80.77.6.55 -O

Starting Nmap 5.51 ( http://nmap.org ) at 2011-05-01 15:40 CST
Nmap scan report for 80.77.6.55
Host is up (0.090s latency).
Not shown: 998 closed ports
PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  https
Device type: general purpose|WAP
Running (JUST GUESSING): Microsoft Windows 2008|7|Vista (94%), FreeBSD 6.X (89%), OpenBSD 4.X (87%), AirSpan embedded (87%)
Aggressive OS guesses: Microsoft Windows Server 2008 Beta 3 (94%), Microsoft Windows Server 2008 SP2 (93%), Microsoft Windows Server 2008 (91%), Microsoft Windows 7 (91%), Microsoft Windows Vista SP0 or SP1, Server 2008 SP1, or Windows 7 (91%), Microsoft Windows Server 2008 R2 (90%), Microsoft Windows 7 Professional (89%), FreeBSD 6.2-RELEASE (89%), FreeBSD 6.3-RELEASE (89%), OpenBSD 4.0 (87%)
No exact OS matches for host (test conditions non-ideal).

OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.64 seconds
ms1 ~ # nmap -sT 63.221.156.75  -O

Starting Nmap 5.51 ( http://nmap.org ) at 2011-05-01 15:41 CST
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 3.54 seconds
ms1 ~ # nmap -sT 63.221.156.75  -O -Pn

Starting Nmap 5.51 ( http://nmap.org ) at 2011-05-01 15:41 CST
Nmap scan report for 63-221-156-75.static.pccwglobal.net (63.221.156.75)
Host is up (0.062s latency).
Not shown: 995 filtered ports
PORT     STATE  SERVICE
1433/tcp open   ms-sql-s
2383/tcp open   ms-olap4
3389/tcp open   ms-term-serv
5800/tcp closed vnc-http
5900/tcp closed vnc
Device type: general purpose
Running: Microsoft Windows 2003|XP
OS details: Microsoft Windows Server 2003 SP2, Microsoft Windows XP SP2 or Server 2003 SP1 or SP2

OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 9.52 seconds
[/TEXT]

註: 最後換到 gmail, 而且收到認證信了, 結果認證完以後出現的帳號還是錯誤的 e-mail account. 
整個網樂通的後台一整個很糟糕. 設計這一套系統的人應該切腹了. 

</win></win></xxxxxxx></no></p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2011/05/01/1060/%e6%94%b6%e4%b8%8d%e5%88%b0%e7%b6%b2%e6%a8%82%e9%80%9a%e7%9a%84%e8%aa%8d%e8%ad%89%e4%bf%a1/">收不到網樂通的認證信.</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.richliu.com/2011/05/01/1060/%e6%94%b6%e4%b8%8d%e5%88%b0%e7%b6%b2%e6%a8%82%e9%80%9a%e7%9a%84%e8%aa%8d%e8%ad%89%e4%bf%a1/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>[Linux] 使用 hinet IPv6 的服務</title>
		<link>https://blog.richliu.com/2010/07/30/976/linux-%e4%bd%bf%e7%94%a8-hinet-ipv6-%e7%9a%84%e6%9c%8d%e5%8b%99/</link>
					<comments>https://blog.richliu.com/2010/07/30/976/linux-%e4%bd%bf%e7%94%a8-hinet-ipv6-%e7%9a%84%e6%9c%8d%e5%8b%99/#comments</comments>
		
		<dc:creator><![CDATA[richliu]]></dc:creator>
		<pubDate>Fri, 30 Jul 2010 09:25:03 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[hinet]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[tunnel broker]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">http://blog.richliu.com/?p=976</guid>

					<description><![CDATA[<p>這邊使用的是 Hinet Tunnel Broker 的服務. 不過 Hinet 只有提供 Windows 的 [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2010/07/30/976/linux-%e4%bd%bf%e7%94%a8-hinet-ipv6-%e7%9a%84%e6%9c%8d%e5%8b%99/">[Linux] 使用 hinet IPv6 的服務</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>這邊使用的是<a href="http://www.ipv6.hinet.net/installGuide.htm" target="_blank" rel="noopener"> Hinet Tunnel Broker </a>的服務.<br />
不過 Hinet 只有提供 Windows 的範例, 那 Linux 呢?<br />
<span id="more-976"></span><br />
以 ubuntu 為例, 只要安裝  gw6c 這個套件(Go6 client)<br />
[BASH]<br />
# sudo apt-get install gw6c<br />
&#8230;<br />
因為會自動啟動 gw6c, 所以先暫停<br />
# /etc/init.d/gw6c stop<br />
[/BASH]</p>
<p>編輯 gw6c configure file.<br />
[BASH]<br />
$ vim /etc//etc/gw6c/gw6c.conf<br />
[/BASH]</p>
<p>找到 server= 改成<br />
[TEXT]<br />
server=203.74.21.89<br />
[/TEXT]</p>
<p>再重新啟動 gw6c, 這樣就可以了<br />
[BASH]<br />
# /etc/init.d/gw6c start<br />
# ifconfig tun<br />
tun       Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00<br />
          inet6 addr: 2001:b020:0:71::50/128 Scope:Global<br />
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1280  Metric:1<br />
          RX packets:126 errors:0 dropped:0 overruns:0 frame:0<br />
          TX packets:132 errors:0 dropped:0 overruns:0 carrier:0<br />
          collisions:0 txqueuelen:500<br />
          RX bytes:66341 (66.3 KB)  TX bytes:12783 (12.7 KB)</p>
<p>root@rl-desktop:/etc/gw6c# ping6 ipv6.google.com<br />
PING ipv6.google.com(2404:6800:8003::68) 56 data bytes<br />
64 bytes from 2404:6800:8003::68: icmp_seq=1 ttl=53 time=30.0 ms<br />
&#8212; ipv6.google.com ping statistics &#8212;<br />
1 packets transmitted, 1 received, 0% packet loss, time 0ms<br />
rtt min/avg/max/mdev = 30.021/30.021/30.021/0.000 ms<br />
[/BASH]</p>
<p>超簡單的吧! </p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2010/07/30/976/linux-%e4%bd%bf%e7%94%a8-hinet-ipv6-%e7%9a%84%e6%9c%8d%e5%8b%99/">[Linux] 使用 hinet IPv6 的服務</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.richliu.com/2010/07/30/976/linux-%e4%bd%bf%e7%94%a8-hinet-ipv6-%e7%9a%84%e6%9c%8d%e5%8b%99/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>I have 0 Friends &#8212; 我從 Facebook 出走了, 大家一起走吧!</title>
		<link>https://blog.richliu.com/2010/04/26/912/ive-0-friends-%e6%88%91%e5%be%9e-facebook-%e5%87%ba%e8%b5%b0%e4%ba%86-%e5%a4%a7%e5%ae%b6%e4%b8%80%e8%b5%b7%e8%b5%b0%e5%90%a7/</link>
					<comments>https://blog.richliu.com/2010/04/26/912/ive-0-friends-%e6%88%91%e5%be%9e-facebook-%e5%87%ba%e8%b5%b0%e4%ba%86-%e5%a4%a7%e5%ae%b6%e4%b8%80%e8%b5%b7%e8%b5%b0%e5%90%a7/#comments</comments>
		
		<dc:creator><![CDATA[richliu]]></dc:creator>
		<pubDate>Sun, 25 Apr 2010 16:01:35 +0000</pubDate>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[隨手札記]]></category>
		<category><![CDATA[evil]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[remove]]></category>
		<category><![CDATA[移除]]></category>
		<category><![CDATA[邪惡]]></category>
		<guid isPermaLink="false">http://blog.richliu.com/?p=912</guid>

					<description><![CDATA[<p>這個月初, 南方公園有一篇 You&#8217;ve Got 0 Friends &#160; 當然是諷剌 F [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2010/04/26/912/ive-0-friends-%e6%88%91%e5%be%9e-facebook-%e5%87%ba%e8%b5%b0%e4%ba%86-%e5%a4%a7%e5%ae%b6%e4%b8%80%e8%b5%b7%e8%b5%b0%e5%90%a7/">I have 0 Friends &#8212; 我從 Facebook 出走了, 大家一起走吧!</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>這個月初, 南方公園有一篇 <a href="http://www.xepisodes.com/southpark/episodes/1404/Youve-Got-0-Friends.html/Youve-Got-0-Friends.html" target="_blank" rel="noopener">You&#8217;ve Got 0 Friends</a></p>
<p>&nbsp;</p>
<p>當然是諷剌 Facebook.</p>
<p><a href="https://blog.richliu.com/wp-content/uploads/2010/04/facebook-_4550852179_o.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3156" src="https://blog.richliu.com/wp-content/uploads/2010/04/facebook-_4550852179_o.png" alt="" width="590" height="370" srcset="https://blog.richliu.com/wp-content/uploads/2010/04/facebook-_4550852179_o.png 590w, https://blog.richliu.com/wp-content/uploads/2010/04/facebook-_4550852179_o-300x188.png 300w" sizes="(max-width: 590px) 100vw, 590px" /></a></p>
<p>不過現實生活有時總是比幻想出來的還糟糕, 先來看 MMDays 寫的這二篇</p>
<p><span id="more-912"></span></p>
<ul>
<li><span style="color: #007fff;"><a title="Permanent Link to Facebook新Graph API推出 – 你打算跟魔鬼做交易了嗎？" href="http://mmdays.com/2010/04/23/facebook_deal_with_devil/" rel="bookmark noopener" target="_blank">Facebook新Graph API推出 – 你打算跟魔鬼做交易了嗎？</a></span></li>
<li><span style="color: #007fff;"><a title="Permanent Link to 當Facebook統治了世界，你還有隱私可言嗎？" href="http://mmdays.com/2010/04/24/when_facebook_rules_the_world/" rel="bookmark noopener" target="_blank">當 Facebook統治了世界，你還有隱私可言嗎？</a></span></li>
</ul>
<p>簡單的說, Facebook 籍由他的影響力, 不僅僅是擅自更改隱私權設定, 現在更籍由 Open Graph Api, 更進一步的分享個人的上網行為, 喜好給他的合作廠商, 或是不知名第三者. 這很好玩嗎? 看起來一點也不, 我們失去了控制力, 我很喜歡喝可樂, 但是我並不需要被別人分析我的喜好. 我喜歡可樂的資訊, 相關的行銷問題那我去訂就好了, 我不希望被強迫行銷.</p>
<p>我不想要被洗腦式的強迫推銷各種廣告訊息給我. 或是分享我這類的資訊給別人.</p>
<p>Facebook 佔有一個先機, 就是實名制網路. 基本上在上面的人都是會填寫真名或是自己常用的 E-mail才能找到自己的朋友, 家人; 如果加填公司資料或是學校資料之後, 也可以找到相關的朋友, 這是非常好的網站可以將大家連結在一起.</p>
<p>只是這個網站並不是正常的網站, 而是非常邪惡的網站.<br />
Google 天天嘴泡喊 Don&#8217;t be evil, 都做了一堆超乎想像的事情(基本上 Google 的雲端就很邪惡了, 只是他還沒有準備要用), 更何況是己經犯行不良的 Facebook.</p>
<p>現在人生活圈很小, 很多都是混在網路上(包含我). 每個人都有 You&#8217;ve Got 0 Friends 恐懼症.</p>
<ul>
<li>開心農場沒有人來偷菜, 你會覺得我是不是沒有朋友, 有人一直來偷菜,  又覺得很幹. 老子種的菜不是給你來偷的.</li>
<li>Air Manager 飛機一直飛</li>
<li>餐城一直在買餐點做東西出去</li>
<li>Cafe&#8217; 一直用滑鼠點點點做餐點</li>
<li>Mafia 大家一直在擴大黑幫, 衝奇怪的等級和無謂的任務(廠商任務還真的是出不完)</li>
<li>每個人都有送不完的酒和心心, 不回送還會再送個心碎給你&#8230;</li>
</ul>
<p>好像這個世界沒有虛擬朋友就不能活(或許有連結到真實世界的朋友), 沒有送個什麼就快死了..</p>
<p>Facebook 犯行不良不是第一次了, 只是這一次鐵定了一定是要出走的<br />
這一張是我清空後的 Screen Shot<br />
<a href="https://blog.richliu.com/wp-content/uploads/2010/04/facebook-_4551510978_o.png"><img loading="lazy" decoding="async" class="aligncenter size-large wp-image-3157" src="https://blog.richliu.com/wp-content/uploads/2010/04/facebook-_4551510978_o-1024x789.png" alt="" width="620" height="478" srcset="https://blog.richliu.com/wp-content/uploads/2010/04/facebook-_4551510978_o-1024x789.png 1024w, https://blog.richliu.com/wp-content/uploads/2010/04/facebook-_4551510978_o-300x231.png 300w, https://blog.richliu.com/wp-content/uploads/2010/04/facebook-_4551510978_o-768x592.png 768w, https://blog.richliu.com/wp-content/uploads/2010/04/facebook-_4551510978_o.png 1249w" sizes="(max-width: 620px) 100vw, 620px" /></a><br />
建議朋友清單還是很準確的有建立關係.</p>
<p>現在這家公司又拿這個 User Base 去試圖讓 Internet 變的更邪惡, 這真是好累的生活呀&#8230;.</p>
<p>我沒有必要助紂為虐, 所以我先離開了. 主要帳號己經清空, 次要帳號留著放訊息.<br />
如果真的要找我聊聊天, 丟 MSN 上 Plurk 都很好, 但是 Facebook &#8230; Byebye</p>
<p>I have 0 Friends.<br />
<a href="https://blog.richliu.com/wp-content/uploads/2010/04/facebook-0-friend_4550786898_o.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3158" src="https://blog.richliu.com/wp-content/uploads/2010/04/facebook-0-friend_4550786898_o.png" alt="" width="460" height="325" srcset="https://blog.richliu.com/wp-content/uploads/2010/04/facebook-0-friend_4550786898_o.png 460w, https://blog.richliu.com/wp-content/uploads/2010/04/facebook-0-friend_4550786898_o-300x212.png 300w" sizes="(max-width: 460px) 100vw, 460px" /></a></p>
<p>I will not use it anymore.</p>
<p>延伸閱讀</p>
<p><a href="http://searchengineland.com/matt-cutts-deactivates-facebook-account-40543" target="_blank" rel="noopener">Matt Cutts &amp; Other Google Engineers Close Facebook Accounts</a> (Matt Cutt 是 Google Search Group 的人, 在 SEO 界小有名氣)</p>
<p>20100524 &#8212;<br />
<a href="https://ssl.facebook.com/help/contact.php?show_form=delete_account" target="_blank" rel="noopener"> 刪除臉書帳號連結<br />
</a><a href="http://feedproxy.google.com/~r/sdkfz251/~3/6kjG--5UEq4/farewell-delete-my-facebook-account.html" target="_blank" rel="noopener">[<strong>Facebook</strong>] 砍掉臉書帳號（以下略）</a></p>
<p>The post <a rel="nofollow" href="https://blog.richliu.com/2010/04/26/912/ive-0-friends-%e6%88%91%e5%be%9e-facebook-%e5%87%ba%e8%b5%b0%e4%ba%86-%e5%a4%a7%e5%ae%b6%e4%b8%80%e8%b5%b7%e8%b5%b0%e5%90%a7/">I have 0 Friends &#8212; 我從 Facebook 出走了, 大家一起走吧!</a> appeared first on <a rel="nofollow" href="https://blog.richliu.com">richliu&#039;s blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.richliu.com/2010/04/26/912/ive-0-friends-%e6%88%91%e5%be%9e-facebook-%e5%87%ba%e8%b5%b0%e4%ba%86-%e5%a4%a7%e5%ae%b6%e4%b8%80%e8%b5%b7%e8%b5%b0%e5%90%a7/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
