You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

800 lines
28 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!DOCTYPE html>
<html lang="en-us">
<head><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<script type="application/ld+json">
{
"@context" : "http://schema.org",
"@type" : "BlogPosting",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https:\/\/h.cowbay.org"
},
"articleSection" : "post",
"name" : "[筆記] 在 ubuntu 20.04 上安裝 wireguard \u002b pihole 作 AD Blocking\/install wireguard and pihole to do ad block in ubuntu 20.04 ",
"headline" : "[筆記] 在 ubuntu 20.04 上安裝 wireguard \u002b pihole 作 AD Blocking\/install wireguard and pihole to do ad block in ubuntu 20.04 ",
"description" : "\u003cp\u003e手機上的廣告越來越討厭了\u003c\/p\u003e\n\u003cp\u003e但是用手機看頁面、影片的機會越來越高\u003c\/p\u003e\n\u003cp\u003e所以一直想看看有沒有什麼方式可以解決這個問題\u003c\/p\u003e\n\u003cp\u003e不只可以用在safari 上連APP 裡面的廣告最好都能夠擋掉\u003c\/p\u003e\n\u003cp\u003e在github上面看到有個專案是 wireguard \u002b pihole\u003c\/p\u003e\n\u003cp\u003e滿有趣的就來研究一下\u003c\/p\u003e",
"inLanguage" : "en",
"author" : "Eric Chang",
"creator" : "Eric Chang",
"publisher": "Eric Chang",
"accountablePerson" : "Eric Chang",
"copyrightHolder" : "Eric Chang",
"copyrightYear" : "2020",
"datePublished": "2020-08-13 14:22:05 \u002b0800 CST",
"dateModified" : "2020-08-13 14:22:05 \u002b0800 CST",
"url" : "https:\/\/h.cowbay.org\/post\/wireguard-pihole-in-ubuntu-20.04\/",
"wordCount" : "686",
"image" : "https://h.cowbay.orghttps://h.cowbay.org/images/post-default-16.jpg"",
"keywords" : [ ""wireguard"",""pihole"",""ubuntu"","Blog" ]
}
</script>
<title>[筆記] 在 ubuntu 20.04 上安裝 wireguard &#43; pihole 作 AD Blocking/install wireguard and pihole to do ad block in ubuntu 20.04 </title>
<meta name="description" content="some articles about job,food,passion sisters" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="all,follow">
<meta name="googlebot" content="index,follow,snippet,archive">
<link rel="stylesheet" id="ct-tracks-google-fonts-css" href="https://fonts.googleapis.com/css?family=Raleway%3A400%2C700&amp;subset=latin%2Clatin-ext&amp;ver=4.7.2" type="text/css" media="all">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">
<link href="https://h.cowbay.org/css/style.css?v=1646184926" rel="stylesheet" id="theme-stylesheet" type='text/css' media='all'>
<link href="https://h.cowbay.org/css/custom.css?v=1646184926" rel="stylesheet" type='text/css' media='all'>
<link rel="shortcut icon" href="https://h.cowbay.org/img/favicon.ico" type="image/x-icon">
<link rel="icon" href="https://h.cowbay.org/img/favicon.ico" type="image/x-icon">
<script type="application/javascript">
var doNotTrack = false;
if (!doNotTrack) {
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
ga('create', 'UA-138954876-1', 'auto');
ga('send', 'pageview');
}
</script>
<script async src='https://www.google-analytics.com/analytics.js'></script>
</head>
<body class="post-template-default single single-post single-format-standard ct-body singular singular-post not-front standard">
<div id="overflow-container" class="overflow-container">
<a class="skip-content" href="#main">Skip to content</a>
<header id="site-header" class="site-header" role="banner">
<div class='top-navigation'>
<div class='container'>
<div id="menu-secondary" class="menu-container menu-secondary" role="navigation">
<button id="toggle-secondary-navigation" class="toggle-secondary-navigation"><i class="fas fa-plus"></i></button>
<div class="menu">
<ul id="menu-secondary-items" class="menu-secondary-items">
<li class="menu-item menu-item-type-taxonomy menu-item-object-category">
<a href="/categories/ansible">ansible</a>
</li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category">
<a href="/categories/linux">linux</a>
</li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category">
<a href="/categories/proxmox">proxmox</a>
</li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category">
<a href="/categories/ps">ps</a>
</li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category">
<a href="/categories/%E7%A2%8E%E5%BF%B5">碎念</a>
</li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category">
<a href="/categories/%E7%AD%86%E8%A8%98">筆記</a>
</li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category">
<a href="/categories/%E7%BE%A4%E6%9A%89">群暉</a>
</li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category">
<a href="/categories/%E9%9B%9C%E5%BF%B5">雜念</a>
</li>
</ul>
</div>
</div>
<ul class="social-media-icons">
<li>
<a href="full%20Social%20profile%20url%20in%20facebook" data-animate-hover="pulse" class="facebook" target="_blank">
<i class="fab fa-facebook-square" title="facebook"></i>
<span class="screen-reader-text">facebook</span>
</a>
</li>
<li>
<a href="full%20profile%20url%20in%20googleplus" data-animate-hover="pulse" class="gplus" target="_blank">
<i class="fab fa-google-plus-g" title="googleplus"></i>
<span class="screen-reader-text">googleplus</span>
</a>
</li>
<li>
<a href="chang0206" data-animate-hover="pulse" class="twitter" target="_blank">
<i class="fab fa-twitter-square" title="twitter"></i>
<span class="screen-reader-text">twitter</span>
</a>
</li>
<li>
<a href="chang0206" data-animate-hover="pulse" class="instagram" target="_blank">
<i class="fab fa-instagram" title="instagram"></i>
<span class="screen-reader-text">instagram</span>
</a>
</li>
<li>
<a href="mailto:mc@hotshraingmy.info" data-animate-hover="pulse" class="email">
<i class="fas fa-envelope" title="email"></i>
<span class="screen-reader-text">email</span>
</a>
</li>
<li>
<a href="full%20profile%20url%20in%20linkedin" data-animate-hover="pulse" class="linkedin" target="_blank">
<i class="fab fa-linkedin-in" title="linkedin"></i>
<span class="screen-reader-text">linkedin</span>
</a>
</li>
<li>
<a href="full%20profile%20url%20in%20stackoverflow" data-animate-hover="pulse" class="stackoverflow" target="_blank">
<i class="fab fa-stack-overflow" title="stackoverflow"></i>
<span class="screen-reader-text">stackoverflow</span>
</a>
</li>
<li>
<a href="changchichung" data-animate-hover="pulse" class="github" target="_blank">
<i class="fab fa-github" title="github"></i>
<span class="screen-reader-text">github</span>
</a>
</li>
<li>
<a href="full%20profile%20url%20in%20pinterest" data-animate-hover="pulse" class="pinterest" target="_blank">
<i class="fab fa-pinterest" title="pinterest"></i>
<span class="screen-reader-text">pinterest</span>
</a>
</li>
<li>
<a href="https://h.cowbay.org/index.xml" data-animate-hover="pulse" class="rss" target="_blank">
<i class="fas fa-rss" title="rss"></i>
<span class="screen-reader-text">rss</span>
</a>
</li>
</ul></div>
</div>
<div class="container">
<div id="title-info" class="title-info">
<div id='site-title' class='site-title'>
<a href="/"> MC部落 </a>
</div>
</div>
<button id="toggle-navigation" class="toggle-navigation">
<i class="fas fa-bars"></i>
</button>
<div id="menu-primary-tracks" class="menu-primary-tracks"></div>
<div id="menu-primary" class="menu-container menu-primary" role="navigation">
<p class="site-description">Whats the Worst That Could Happen?</p>
<div class="menu">
<ul id="menu-primary-items" class="menu-primary-items">
<li class='menu-item menu-item-type-custom menu-item-object-custom '>
<a href="https://h.cowbay.org/">Home</a>
</li>
<li class='menu-item menu-item-type-post_type menu-item-object-page '>
<a href="https://h.cowbay.org/about/">About</a>
</li>
<li class='menu-item menu-item-type-post_type menu-item-object-page '>
<a href="https://h.cowbay.org/contact/">Get in touch</a>
</li>
</ul>
</div>
</div>
</div>
</header>
<div id="main" class="main" role="main">
<div id="loop-container" class="loop-container">
<div class="post type-post status-publish format-standard has-post-thumbnail hentry category-design tag-design tag-standard-2 tag-tagalicious tag-travel entry full-without-featured odd excerpt-1">
<div class='featured-image lazy lazy-bg-image' data-background="https://h.cowbay.org/images/post-default-16.jpg">
</div>
<div class="entry-meta">
<span class="date">13 August</span> <span> / </span>
<span class="author">
<a href="https://github.com/changchichung" title="Posts by Eric Chang" rel="author">Eric Chang</a>
</span>
<span class="category">
<span> / </span>
<a href="/categories/%E7%AD%86%E8%A8%98">筆記</a>
</span>
</div>
<div class='entry-header'>
<h1 class='entry-title'> [筆記] 在 ubuntu 20.04 上安裝 wireguard &#43; pihole 作 AD Blocking/install wireguard and pihole to do ad block in ubuntu 20.04 </h1>
</div>
<div class="entry-container">
<div class="entry-content">
<article>
<p>手機上的廣告越來越討厭了</p>
<p>但是用手機看頁面、影片的機會越來越高</p>
<p>所以一直想看看有沒有什麼方式可以解決這個問題</p>
<p>不只可以用在safari 上連APP 裡面的廣告最好都能夠擋掉</p>
<p>在github上面看到有個專案是 wireguard + pihole</p>
<p>滿有趣的,就來研究一下</p>
<p>我在google cloud console 申請了一台free tier 的 google compute engine (真難念就叫VPS吧)</p>
<p>免費的Google VPS 只能選擇美洲地區的機房,有點可惜,多少還是會有點影響</p>
<p>作業系統選 ubuntu 20.04 minimal</p>
<p>然後因為我習慣wireguard 的port 都設定在 12000</p>
<p>所以要記得去開啟firewall 的 UDP 12000然後套用在這台VPS上</p>
<p>還有要設定 ssh 金鑰 這些都算是google compute engine 的基本設定,就不多說了</p>
<p>系統的基本安裝完成後,接下來要用人家寫好的 script 來安裝 wireguard + pihole</p>
<hr>
<h4 id="安裝基本套件">安裝基本套件</h4>
<p>因為是選擇 ubuntu 20.04 minimal 所以有很多套件都沒有,要先安裝這些基本套件</p>
<pre><code>sudo apt update &amp;&amp; sudo apt install -y vim git net-tools software-properties-common iptables python3-pip qrencode
</code></pre><h4 id="取得安裝script">取得安裝script</h4>
<pre><code>mkdir git &amp;&amp; cd git
git clone https://github.com/racbart/wireguard-pihole
</code></pre><h4 id="修改-installsh">修改 install.sh</h4>
<p>因為我的目的是只想要把DNS 查詢透過wireguard 丟去 pihole</p>
<p>而不是把所有流量都轉給wireguard</p>
<p>所以要修改一下剛剛clone 下來的 script</p>
<pre><code>cd wireguard-pihole
vim install.sh
</code></pre><p>有點忘了改了哪些東西,就大概說一下吧</p>
<h5 id="ipv4_address">IPV4_ADDRESS</h5>
<p>原本的判斷VPS WAN IP 的指令在GCE上會抓到private ip</p>
<p>所以要改一下,在 install.sh 中找到底下這行註解掉,並修改成其他指令</p>
<pre><code>#IPV4_ADDRESS=$(ip addr list &quot;$INTERFACE&quot; | grep &quot;inet &quot; | xargs | cut -d &quot; &quot; -f 2)
IPV4_ADDRESS=$(dig +short myip.opendns.com @resolver1.opendns.com)
</code></pre><h5 id="install-wireguard-in-ubuntu-2004">install wireguard in ubuntu 20.04</h5>
<p>ubuntu 20.04 安裝wireguard 的方式和 18.04 有點差別,需要多裝一個 wireguard-dkms</p>
<p>找到底下這行註解掉改成我們要的指令python-pip 我們用 python3-pip 取代</p>
<p>在一開始就已經先裝了,所以這邊不需要再裝一次</p>
<pre><code>#apt install -y wireguard python-pip
apt install -y wireguard wireguard-dkms
</code></pre><h5 id="啟用query-logging">啟用query logging</h5>
<p>找到底下這行,註解掉,改成啟用 query logging</p>
<pre><code>#QUERY_LOGGING=false
QUERY_LOGGING=true
</code></pre><p>存檔後離開</p>
<p>然後執行</p>
<pre><code>sudo ./install.sh
</code></pre><p>開始進行安裝,基本上是全自動的,應該沒有錯誤,可以順利跑完 (應該啦&hellip;)</p>
<hr>
<p>接著來依照我自己的需求來修改一下 add-client.sh</p>
<h5 id="修改-ipv4_address">修改 IPV4_ADDRESS</h5>
<p>找到底下這行註解掉,並修改成其他指令</p>
<pre><code>#IPV4_ADDRESS=$(ip addr list &quot;$INTERFACE&quot; | grep &quot;inet &quot; | xargs | cut -d &quot; &quot; -f 2)
IPV4_ADDRESS=$(dig +short myip.opendns.com @resolver1.opendns.com)
</code></pre><h5 id="改一下-port">改一下 port</h5>
<pre><code>#SERVER_PORT=$(cat /etc/wireguard/wg0.conf | grep ListenPort | rev | cut -d &quot; &quot; -f 1 | rev)
SERVER_PORT=12000
</code></pre><h5 id="display-client-and-save-conf">display client and save conf</h5>
<p>找到底下這一段</p>
<pre><code>echo &quot;
[Interface]
PrivateKey = ${CLIENT_PRIVKEY}
Address = ${NEXT_IP}/32
DNS = 10.10.0.1
[Peer]
PublicKey = ${SERVER_PUBKEY}
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = ${SERVER_ADDRESS}:${SERVER_PORT}
&quot;
</code></pre><p>改成</p>
<pre><code># Display client config
echo &quot;
[Interface]
PrivateKey = ${CLIENT_PRIVKEY}
Address = ${NEXT_IP}/32
DNS = 10.10.0.1
[Peer]
PublicKey = ${SERVER_PUBKEY}
#forware dns queries only,if want to forward all traffic , replace 10.10.0.1/32 to 0.0.0.0/0
AllowedIPs = 10.10.0.1/32
Endpoint = ${SERVER_ADDRESS}:${SERVER_PORT}&quot;|tee ${CLIENT_NAME}.conf &amp;&amp; qrencode -t ansiutf8 -l L &lt; ${CLIENT_NAME}.conf
</code></pre><p>之後要新增 client</p>
<p>就只要輸入</p>
<pre><code>sudo bash add-client.sh &quot;CLIENT_NAME&quot;
</code></pre><p>就會在當前目錄底下產生 ${CLIENT_NAME}.conf 的設定檔,並顯示 qrcode</p>
<p>而且也不用去管 client ip 發到哪了script 會自己去計算</p>
<p>再次強調,這只會把手機上的 dns 查詢透過wireguard指向到 pihole</p>
<p>並不會把整個流量都改從wireguard 出去</p>
<p>如果要改成都走wireguard 出去,那就把最後一段的 Endpoint 後面改成 0.0.0.0/0</p>
<p>PC的話wireguard 連上之後要去手動修改DNS</p>
<p>成功的話在PC上可以看到這樣的查詢結果</p>
<pre><code>peer: mVRp+fjHKW1/n/j5Cwn9zOlLsgtHsvoiNHPSn4bHLHg=
endpoint: 23.34.45.67:12000
allowed ips: 10.10.0.1/32
latest handshake: 1 hour, 48 minutes, 39 seconds ago
transfer: 1.46 KiB received, 1.30 KiB sent
2020-08-13 15:42:11 [root@hqdc039 wireguard]$ dig @10.10.0.1 www.google.com.tw
; &lt;&lt;&gt;&gt; DiG 9.16.1-Ubuntu &lt;&lt;&gt;&gt; @10.10.0.1 www.google.com.tw
; (1 server found)
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 25532
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;www.google.com.tw. IN A
;; ANSWER SECTION:
www.google.com.tw. 297 IN A 64.233.177.94
;; Query time: 399 msec
;; SERVER: 10.10.0.1#53(10.10.0.1)
;; WHEN: Thu Aug 13 15:42:24 CST 2020
;; MSG SIZE rcvd: 79
2020-08-13 15:42:24 [root@hqdc039 wireguard]$
</code></pre><h3 id="update">UPDATE</h3>
<p>更新一下開啟 pihole DOT (DNS Over TLS) 的方式</p>
<h5 id="安裝並建立相關目錄">安裝並建立相關目錄</h5>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">sudo apt update
sudo apt install stubby
sudo mkdir /var/cache/stubby
</code></pre></div><h5 id="修改-etcstubbystubbyyml">修改 /etc/stubby/stubby.yml</h5>
<p>編輯 /etc/stubby/stubby.yml 改成以下內容</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-yaml" data-lang="yaml"><span style="color:#f92672">resolution_type</span>: <span style="color:#ae81ff">GETDNS_RESOLUTION_STUB</span>
<span style="color:#f92672">dns_transport_list</span>:
- <span style="color:#ae81ff">GETDNS_TRANSPORT_TLS</span>
<span style="color:#f92672">tls_authentication</span>: <span style="color:#ae81ff">GETDNS_AUTHENTICATION_REQUIRED</span>
<span style="color:#f92672">tls_query_padding_blocksize</span>: <span style="color:#ae81ff">128</span>
<span style="color:#f92672">edns_client_subnet_private </span>: <span style="color:#ae81ff">1</span>
<span style="color:#f92672">round_robin_upstreams</span>: <span style="color:#ae81ff">1</span>
<span style="color:#f92672">idle_timeout</span>: <span style="color:#ae81ff">10000</span>
<span style="color:#f92672">tls_connection_retries</span>: <span style="color:#ae81ff">5</span>
<span style="color:#f92672">xtls_ca_path</span>: <span style="color:#e6db74">&#34;/etc/ssl/certs/&#34;</span>
<span style="color:#75715e">################################ LISTEN ADDRESS ################################</span>
<span style="color:#75715e"># Set the listen addresses for the stubby DAEMON. This specifies localhost IPv4</span>
<span style="color:#75715e"># and IPv6. It will listen on port 53 by default. Use &lt;IP_address&gt;@&lt;port&gt; to</span>
<span style="color:#75715e"># specify a different port</span>
<span style="color:#f92672">listen_addresses</span>:
- <span style="color:#ae81ff">127.0.0.1</span>@<span style="color:#ae81ff">5453</span>
<span style="color:#f92672">appdata_dir</span>: <span style="color:#e6db74">&#34;/var/cache/stubby&#34;</span>
<span style="color:#f92672">upstream_recursive_servers</span>:
- <span style="color:#f92672">address_data</span>: <span style="color:#ae81ff">145.100.185.15</span>
<span style="color:#f92672">tls_auth_name</span>: <span style="color:#e6db74">&#34;dnsovertls.sinodun.com&#34;</span>
- <span style="color:#f92672">address_data</span>: <span style="color:#ae81ff">1.1.1.1</span>
<span style="color:#f92672">tls_auth_name</span>: <span style="color:#e6db74">&#34;cloudflare-dns.com&#34;</span>
<span style="color:#75715e">## Quad 9 &#39;secure&#39; service - Filters, does DNSSEC, doesn&#39;t send ECS</span>
<span style="color:#75715e"># - address_data: 9.9.9.9</span>
<span style="color:#75715e"># tls_auth_name: &#34;dns.quad9.net&#34;</span>
<span style="color:#75715e">## Quad 9 &#39;insecure&#39; service - No filtering, does DNSSEC, may send ECS (it is</span>
<span style="color:#75715e">## unclear if it honours the edns_client_subnet_private request from stubby)</span>
<span style="color:#75715e"># - address_data: 9.9.9.10</span>
<span style="color:#75715e"># tls_auth_name: &#34;dns.quad9.net&#34;</span>
<span style="color:#75715e">## Cloudflare 1.1.1.1 and 1.0.0.1</span>
<span style="color:#75715e"># - address_data: 1.1.1.1</span>
<span style="color:#75715e"># tls_auth_name: &#34;cloudflare-dns.com&#34;</span>
<span style="color:#75715e"># - address_data: 1.0.0.1</span>
<span style="color:#75715e"># tls_auth_name: &#34;cloudflare-dns.com&#34;</span>
<span style="color:#75715e">## The Uncensored DNS servers</span>
<span style="color:#75715e"># - address_data: 89.233.43.71</span>
<span style="color:#75715e"># tls_auth_name: &#34;unicast.censurfridns.dk&#34;</span>
<span style="color:#75715e"># tls_pubkey_pinset:</span>
<span style="color:#75715e"># - digest: &#34;sha256&#34;</span>
<span style="color:#75715e"># value: wikE3jYAA6jQmXYTr/rbHeEPmC78dQwZbQp6WdrseEs=</span>
<span style="color:#75715e">## Fondation RESTENA (NREN for Luxembourg)</span>
<span style="color:#75715e"># - address_data: 158.64.1.29</span>
<span style="color:#75715e"># tls_auth_name: &#34;kaitain.restena.lu&#34;</span>
<span style="color:#75715e"># tls_pubkey_pinset:</span>
<span style="color:#75715e"># - digest: &#34;sha256&#34;</span>
<span style="color:#75715e"># value: 7ftvIkA+UeN/ktVkovd/7rPZ6mbkhVI7/8HnFJIiLa4=</span>
<span style="color:#75715e">## Google</span>
<span style="color:#75715e"># - address_data: 8.8.8.8</span>
<span style="color:#75715e"># tls_auth_name: &#34;dns.google&#34;</span>
<span style="color:#75715e"># - address_data: 8.8.4.4</span>
<span style="color:#75715e"># tls_auth_name: &#34;dns.google&#34;</span>
</code></pre></div><p>重啟 stubby service</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">sudo service tubby restart
</code></pre></div><h5 id="修改pihole-相關設定">修改pihole 相關設定</h5>
<p>開啟 pihole web 管理界面 settings -&gt; dns -&gt; 左邊預設的DNS 都不要選,在右邊的 custom 1(IPV4) 填入</p>
<p>存檔後離開</p>
<pre><code>127.0.0.1#5453
</code></pre>
</article>
</div>
<div class='entry-meta-bottom'>
<div class="entry-categories"><p><span>Categories</span>
<a href="/categories/%E7%AD%86%E8%A8%98" title="View all posts in 筆記">筆記</a>
</p>
</div>
<div class="entry-tags"><p><span>Tags</span>
<a href="/tags/wireguard" title="View all posts tagged wireguard">wireguard</a>
<a href="/tags/pihole" title="View all posts tagged pihole">pihole</a>
<a href="/tags/ubuntu" title="View all posts tagged ubuntu">ubuntu</a>
</p></div> </div>
<div class="author-meta">
<div class="author">
<img alt='Eric Chang' src="https://www.gravatar.com/avatar/23f8ed94e007297499ac8df1641b3ff5?s=100&d=identicon" class='avatar avatar-72 photo' height='72' width='72'>
<span>
Written by:<a href="https://github.com/changchichung" title="Posts by Eric Chang" rel="author">Eric Chang</a> </span>
</div>
<div class="bio">
<p>塵世裡一個迷途小書僮</p>
<a class="facebook" target="_blank"
href="full%20Social%20profile%20url%20in%20facebook">
<i class="fab fa-facebook-f"
title="facebook icon"></i>
</a>
<a class="googleplus" target="_blank"
href="full%20profile%20url%20in%20googleplus">
<i class="fab fa-google-plus-g"
title="googleplus icon"></i>
</a>
<a class="twitter" target="_blank"
href="chang0206">
<i class="fab fa-twitter-square"
title="twitter icon"></i>
</a>
<a class="linkedin" target="_blank"
href="full%20profile%20url%20in%20linkedin">
<i class="fab fa-linkedin"
title="linkedin icon"></i>
</a>
<a class="email" target="_blank"
href="mailto:mc@hotshraingmy.info">
<i class="fas fa-envelope"
title="email icon"></i>
</a>
<a class="instagram" target="_blank"
href="chang0206">
<i class="fab fa-instagram"
title="instagram icon"></i>
</a>
<a class="stackoverflow" target="_blank"
href="full%20profile%20url%20in%20stackoverflow">
<i class="fab fa-stack-overflow"
title="stackoverflow icon"></i>
</a>
<a class="github" target="_blank"
href="changchichung">
<i class="fab fa-github"
title="github icon"></i>
</a>
<a class="pinterest" target="_blank"
href="full%20profile%20url%20in%20pinterest">
<i class="fab fa-pinterest"
title="pinterest icon"></i>
</a>
</div>
</div>
</div>
</div>
<section id="comments" class="comments">
<div id="disqus_thread"></div>
<script type="application/javascript">
var disqus_config = function () {
};
(function() {
if (["localhost", "127.0.0.1"].indexOf(window.location.hostname) != -1) {
document.getElementById('disqus_thread').innerHTML = 'Disqus comments not available by default when the website is previewed locally.';
return;
}
var d = document, s = d.createElement('script'); s.async = true;
s.src = '//' + "h-cowbay-org-1" + '.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
</section>
</div>
</div>
<footer id="site-footer" class="site-footer" role="contentinfo">
<h1>
<a href=""> MC部落 </a>
</h1>
<p class="site-description">Whats the Worst That Could Happen?</p>
<div id="menu-footer" class="menu-container menu-footer" role="navigation">
<div class="menu">
<ul id="menu-footer-items" class="menu-footer-items">
</ul>
</div> </div>
<ul class="social-media-icons">
<li>
<a class="facebook" target="_blank"
href="full%20Social%20profile%20url%20in%20facebook" >
<i class="fab fa-facebook-f" title="facebook"></i>
<span class="screen-reader-text">facebook</span>
</a>
</li>
<li>
<a class="googleplus" target="_blank"
href="full%20profile%20url%20in%20googleplus" >
<i class="fab fa-google-plus-g" title="googleplus"></i>
<span class="screen-reader-text">googleplus</span>
</a>
</li>
<li>
<a href="chang0206" class="twitter" target="_blank">
<i class="fab fa-twitter-square" title="twitter"></i>
<span class="screen-reader-text">twitter</span>
</a>
</li>
<li>
<a href="chang0206" class="instagram" target="_blank">
<i class="fab fa-instagram" title="instagram"></i>
<span class="screen-reader-text">instagram</span>
</a>
</li>
<li>
<a href="mailto:mc@hotshraingmy.info" class="email">
<i class="fas fa-envelope" title="email"></i>
<span class="screen-reader-text">email</span>
</a>
</li>
<li>
<a href="full%20profile%20url%20in%20linkedin" class="linkedin" target="_blank">
<i class="fab fa-linkedin-in" title="linkedin"></i>
<span class="screen-reader-text">linkedin</span>
</a>
</li>
<li>
<a href="full%20profile%20url%20in%20stackoverflow" class="stackoverflow" target="_blank">
<i class="fab fa-stack-overflow" title="stackoverflow"></i>
<span class="screen-reader-text">stackoverflow</span>
</a>
</li>
<li>
<a href="changchichung" class="github" target="_blank">
<i class="fab fa-github" title="github"></i>
<span class="screen-reader-text">github</span>
</a>
</li>
<li>
<a href="full%20profile%20url%20in%20pinterest" class="pinterest" target="_blank">
<i class="fab fa-pinterest" title="pinterest"></i>
<span class="screen-reader-text">pinterest</span>
</a>
</li>
<li>
<a href="https://h.cowbay.org/index.xml" data-animate-hover="pulse" class="rss" target="_blank">
<i class="fas fa-rss" title="rss"></i>
<span class="screen-reader-text">rss</span>
</a>
</li>
</ul> <div class="design-credit">
<p>© 2018 Göran Svensson</p>
<p>Nederburg Hugo Theme by <a href="https://appernetic.io">Appernetic</a>.</p>
<p>A port of Tracks by Compete Themes.</p>
</div>
</footer>
</div>
<script src="https://h.cowbay.org/js/jquery.min.js"></script>
<script src="https://h.cowbay.org/js/jquerymigrate.js"></script>
<script src="https://h.cowbay.org/js/production.min.js?v=1646184926"></script>
</body>
</html>