<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Antony 筆記：技術原理與實務經驗 – 網路基礎</title><link>https://blog.kubeantony.com/archive/networking/</link><description>Recent content in 網路基礎 on Antony 筆記：技術原理與實務經驗</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><lastBuildDate>Fri, 03 Jan 2025 14:48:08 +0800</lastBuildDate><atom:link href="https://blog.kubeantony.com/archive/networking/index.xml" rel="self" type="application/rss+xml"/><item><title>Networking Introduction</title><link>https://blog.kubeantony.com/archive/networking/networking-introduction/</link><pubDate>Fri, 03 Jan 2025 14:48:08 +0800</pubDate><guid>https://blog.kubeantony.com/archive/networking/networking-introduction/</guid><description>
&lt;style&gt;
.indent-title-1{
margin-left: 1em;
}
.indent-title-2{
margin-left: 2em;
}
.indent-title-3{
margin-left: 16em;
}
&lt;/style&gt;
&lt;p&gt;「在證明無罪之前有罪」。這是網路和監督網路的工程師的口頭禪。在本開篇章節中，我們會涉獵網路技術與標準的發展、簡介網路的主流理論，並介紹我們的 Golang 網路伺服器，它將是整本書中 Kubernetes 與雲端中網路範例的基礎。&lt;/p&gt;
&lt;h2&gt;1.1. Networking History&lt;span class="hx:absolute hx:-mt-20" id="11-networking-history"&gt;&lt;/span&gt;
&lt;a href="#11-networking-history" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;我們今天所認識的網際網路非常廣大，電纜橫跨海洋和高山，以前所未有的低延遲連接城市。Barrett Lyon 的 「Mapping the Internet」（如圖 1-1 所示）展示了互聯網的真正廣闊程度。該圖片說明了組成網際網路的網路之間的所有連接。網路的目的是將資訊從一個系統交換到另一個系統。這是一個分散式全球系統的巨大要求，但網際網路並非一直都是全球性的；它一開始只是一個概念模型，隨著時間的推移慢慢地建立起來，成為 Lyon 這幅視覺震撼的藝術作品中的龐然大物。在學習網路時有許多因素需要考慮，例如最後一英里（last mile）、客戶家與網路服務供應商網路之間的連線，一直到擴大到網際網路的地緣政治版圖。網際網路已融入我們的社會結構。在本書中，我們將討論網路如何運作，以及 Kubernetes 如何為我們抽象網路。&lt;/p&gt;
&lt;h2&gt;1.2. OSI Model&lt;span class="hx:absolute hx:-mt-20" id="12-osi-model"&gt;&lt;/span&gt;
&lt;a href="#12-osi-model" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;OSI 模型是描述兩個系統如何透過網路進行通訊的概念架構。OSI 模型將跨網路傳送資料的責任細分為不同層級。這對於描述每層責任之間的關係以及資料如何透過網路傳送的教育目的非常有效。有趣的是，它本來是用來為網路提供電力的通訊協定套件，但卻因為 TCP/IP 而失敗。&lt;/p&gt;
&lt;p&gt;以下是概述 OSI 模型和通訊協定的 ISO 標準：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ISO/IEC 7498-1，「The Basic Model (基本模式)」&lt;/li&gt;
&lt;li&gt;ISO/IEC 7498-2，「Security Architecture (安全架構)」&lt;/li&gt;
&lt;li&gt;ISO/IEC 7498-3，「Naming and Addressing (命名和定址)」&lt;/li&gt;
&lt;li&gt;ISO/IEC 7498-4，「Management Framework (管理架構)」。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ISO/IEC 7498-1 描述了 OSI 模型嘗試傳達的內容：&lt;/p&gt;
&lt;p&gt;OSI 模型的描述是一種複雜而精確的方式，說明網路有如蛋糕或洋蔥般分層。如下圖所示，OSI 模型將網路的責任分成七個不同的層級，每個層級都有不同的功能，以協助資訊從一個系統傳輸到另一個系統。各層封裝來自其下一層的資訊；這些層分別是 Application (應用程式層)、Presentation (呈現層)、Session (會話層)、Transport (傳輸層)、Network (網路層)、Data Link (資料連結層)和 Physical (實體層)。在接下來的幾頁中，我們將介紹每一層的功能，以及它如何在兩個系統之間傳送資料。&lt;/p&gt;
&lt;div class="indent-title-3"&gt;
&lt;p&gt;![image](&lt;a
href="https://hackmd.io/_uploads/SJYbLOB8Je.png"target="_blank" rel="noopener"&gt;https://hackmd.io/_uploads/SJYbLOB8Je.png&lt;/a&gt; =25%x)&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;每層從上一層取得資料，並將其封裝成其 Protocol Data Unit (通訊協定資料單元 PDU)。PDU 用於描述各層的資料。PDU 也是 TCP/IP 的一部分。會話層的應用程式被視為 PDU 的「資料」，為通訊準備應用程式資訊。傳輸層使用連接埠（ports）來區分本機系統上哪個進程負責資料。網路層的 PDU 是封包。封包是在網路之間路由的獨特資料片段。資料連線層是訊框或段。每個封包被分割成訊框，檢查是否有錯誤，然後在本端網路上傳送出去。物理層在媒體上以位元傳輸訊框。接下來我們將詳細介紹每一層：&lt;/p&gt;</description></item><item><title>How does Ingress Nginx Controller work?</title><link>https://blog.kubeantony.com/archive/networking/how-does-ingress-nginx-controller-work/</link><pubDate>Sun, 27 Oct 2024 09:21:30 +0800</pubDate><guid>https://blog.kubeantony.com/archive/networking/how-does-ingress-nginx-controller-work/</guid><description>
&lt;p&gt;本文介紹 Ingress 基本概念、Ingress Controller 工作原理和 Nginx Ingress Controller 的使用說明。&lt;/p&gt;
&lt;h2&gt;1. Ingress 基本概念&lt;span class="hx:absolute hx:-mt-20" id="1-ingress-基本概念"&gt;&lt;/span&gt;
&lt;a href="#1-ingress-%e5%9f%ba%e6%9c%ac%e6%a6%82%e5%bf%b5" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在 Kubernetes 叢集中，Ingress 作為叢集內服務對外暴露的存取存取點，幾乎承載著叢集內服務存取的所有流量。 Ingress 是 Kubernetes 中的一個 resource object，用來管理叢集外部存取叢集內部服務的方式。可以透過 Ingress 資源來設定不同的轉送規則，從而實現根據不同的規則設定存取叢集內不同的 Service 所對應的後端 Pod。&lt;/p&gt;
&lt;h2&gt;2. What is Ingress?&lt;span class="hx:absolute hx:-mt-20" id="2-what-is-ingress"&gt;&lt;/span&gt;
&lt;a href="#2-what-is-ingress" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Ingress 將叢集外部的 HTTP 和 HTTPS 請求路由到叢集內的服務。流量路由是根據 Ingress 資源上定義的規則來控制的。&lt;/p&gt;
&lt;p&gt;以下是一個簡單的例子，Ingress 將所有的流量導向一個服務：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.kubeantony.com/images/hackmd-uploads/rkqmvVjxJl.png" alt="image" loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;Ingress 可以設定為給服務一個外部可訪問的網址、負載均衡的流量、terminate SSL / TLS，以及提供 name-based ( 基於名稱 ) 的 virtual hosting 功能。&lt;a
href="https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/"target="_blank" rel="noopener"&gt;Ingress Controller&lt;/a&gt; 負責實現 Ingress，一般會搭配 load balancer 一起使用，也可能設定 edge router 或額外的前端來幫助處理流量。&lt;/p&gt;
&lt;p&gt;Ingress 不會暴露任意的 ports (埠) 或 protocols (通訊協定)。如果需要將 HTTP 和 HTTPS 以外的服務暴露到互聯網，通常會使用 &lt;a
href="https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport"target="_blank" rel="noopener"&gt;Service.Type=NodePort&lt;/a&gt; 或 &lt;a
href="https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer"target="_blank" rel="noopener"&gt;Service.Type=LoadBalancer&lt;/a&gt; 類型的服務來實現。&lt;/p&gt;
&lt;h2&gt;3. Ingress Controllers 使用須知&lt;span class="hx:absolute hx:-mt-20" id="3-ingress-controllers-使用須知"&gt;&lt;/span&gt;
&lt;a href="#3-ingress-controllers-%e4%bd%bf%e7%94%a8%e9%a0%88%e7%9f%a5" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;要讓 Ingress 在你的 K8s 叢集中運作，必須有一個 Ingress controller 在運行。你需要選擇至少一個 Ingress controller 並確保它已經在叢集中設定好。&lt;/p&gt;
&lt;p&gt;和其他在 &lt;code&gt;kube-controller-manager&lt;/code&gt; 二進位程式中運行的 controller 不同，Ingress controller 並不會隨著叢集自動啟動。&lt;/p&gt;
&lt;h2&gt;4. Ingress Controller 工作原理&lt;span class="hx:absolute hx:-mt-20" id="4-ingress-controller-工作原理"&gt;&lt;/span&gt;
&lt;a href="#4-ingress-controller-%e5%b7%a5%e4%bd%9c%e5%8e%9f%e7%90%86" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Ingress Controller 用於解析 Ingress 的轉送規則。 Ingress Controller 收到請求，匹配 Ingress 轉發規則轉發到後端 Service 所對應的 Pod，由 Pod 處理請求。 Kubernetes 中 Service、Ingress 與 Ingress Controller 有著以下關係：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Service 是後端真實服務的抽象，一個 Service 可以代表多個相同的後端服務。&lt;/li&gt;
&lt;li&gt;Ingress 是反向代理規則，用來規定 HTTP、HTTPS 請求應該被轉送到哪個 Service 所對應的 Pod。例如根據請求中不同的 Host 和 URL 路徑，讓請求落在不同 Service 所對應的 Pod上。&lt;/li&gt;
&lt;li&gt;Ingress Controller 是一個反向代理程序，負責解析 Ingress 的反向代理規則。如果Ingress 有增刪改的變動，Ingress Controller 會及時更新自己對應的轉送規則，當 Ingress Controller 收到請求後就會根據這些規則將請求轉送到對應 Service 的 Pod 上。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ingress Controller 透過 API Server 取得 Ingress 資源的變化，動態地產生 Load Balancer 所需的設定文件，然後依序產生新的路由轉送規則。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.kubeantony.com/images/hackmd-uploads/SJXcqrjgJl.png" alt="image" loading="lazy" /&gt;&lt;/p&gt;
&lt;h2&gt;5. Deploying the Ingress Nginx Controller as a Deployment Workload&lt;span class="hx:absolute hx:-mt-20" id="5-deploying-the-ingress-nginx-controller-as-a-deployment-workload"&gt;&lt;/span&gt;
&lt;a href="#5-deploying-the-ingress-nginx-controller-as-a-deployment-workload" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;# curl -sL https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.11.2/deploy/static/provider/cloud/deploy.yaml | kubectl apply -f -&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;執行結果 :&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;namespace/ingress-nginx created
serviceaccount/ingress-nginx created
serviceaccount/ingress-nginx-admission created&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;確認 pod 的狀態是 up 和 running&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;# kubectl wait -n ingress-nginx pod -l app.kubernetes.io/component=controller --for=condition=Ready --timeout=120s&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;執行結果 :&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;pod/ingress-nginx-controller-7d8d8c7b4c-pctt4 condition met&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;6. 了解 Ingress Nginx Controller Kubernetes Resources&lt;span class="hx:absolute hx:-mt-20" id="6-了解-ingress-nginx-controller-kubernetes-resources"&gt;&lt;/span&gt;
&lt;a href="#6-%e4%ba%86%e8%a7%a3-ingress-nginx-controller-kubernetes-resources" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ kubectl get all -n ingress-nginx -o name&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;執行結果 :&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;pod/ingress-nginx-admission-create-lgfnk
pod/ingress-nginx-admission-patch-55p8j
pod/ingress-nginx-controller-7d8d8c7b4c-pctt4
service/ingress-nginx-controller
service/ingress-nginx-controller-admission
deployment.apps/ingress-nginx-controller
replicaset.apps/ingress-nginx-controller-7d8d8c7b4c
job.batch/ingress-nginx-admission-create
job.batch/ingress-nginx-admission-patch&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;這是一個典型的 Deployment，前面有兩個 Service 在支援，以下是為什麼需要這樣做的原因：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第一個 service 叫做 &lt;code&gt;ingress-nginx-controller&lt;/code&gt;，它是一個 load balancer 類型的 service，用來將 Ingress controller 的功能暴露給外部。它透過穩定的 IP 地址和 DNS 名稱，讓外部客戶端可以連接到 Ingress controller。load balancer service 也幫助 Ingress controller 將進來的流量分散到多個 Pod 分身上，提升可用性和擴展性。&lt;/li&gt;
&lt;li&gt;第二個 service 叫做 &lt;code&gt;ingress-nginx-controller-admission&lt;/code&gt;，它是一個 cluster IP service，用來控制 Ingress controller 的准入。這個 service 在 Ingress 資源被 Ingress controller 處理之前，用於驗證和修改這些資源。它在叢集內部運行，不對外部客戶端暴露，使用 Kubernetes 的 admission control mechanism (准入控制機制) 攔截並修改 Ingress 資源。&lt;/li&gt;
&lt;li&gt;簡而言之，第一個 service 提供 Ingress controller 的外部進入點，負責 traffic routing 和 load balancing；而第二個 service 負責在 Ingress 資源被 Ingress controller 處理前進行驗證和修改。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果我們查看 Endpoints，就會發現兩個服務都指向相同的 Pod&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ kubectl -n ingress-nginx get endpoints&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;執行結果 :&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;NAME ENDPOINTS AGE
ingress-nginx-controller 10.244.2.30:443,10.244.2.30:80 24m
ingress-nginx-controller-admission 10.244.2.30:8443 24m&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;而這個 pod 就是 &lt;code&gt;ingress-nginx-controller&lt;/code&gt;&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ kubectl -n ingress-nginx get pods -l &amp;#34;app.kubernetes.io/component=controller&amp;#34; -o wide&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;執行結果 :&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
ingress-nginx-controller-7d8d8c7b4c-pctt4 1/1 Running 0 27m 10.244.2.30 worker2 &amp;lt;none&amp;gt; &amp;lt;none&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;7. 設定 ingress nginx controller 使用 host network&lt;span class="hx:absolute hx:-mt-20" id="7-設定-ingress-nginx-controller-使用-host-network"&gt;&lt;/span&gt;
&lt;a href="#7-%e8%a8%ad%e5%ae%9a-ingress-nginx-controller-%e4%bd%bf%e7%94%a8-host-network" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在某些環境中，如果沒有 load balancer 可用，而且不能使用 NodePorts，可以設定 ingress-nginx 的 Pod 使用它們所在主機的網路，而不是使用獨立的 network namespace。這樣做的好處是 Ingress-Nginx Controller 可以直接將 80 和 443 埠綁定到 Kubernetes 節點的網卡上，而不需要透過 NodePort 服務進行額外的網路轉換。&lt;/p&gt;
&lt;p&gt;!!! 注意：這種做法不會利用任何 Service 物件來暴露 Ingress-Nginx Controller。如果目標叢集中存在 ingress-nginx 的 Service，建議將其刪除。&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ kubectl edit -n ingress-nginx deployment ingress-nginx-controller&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;執行結果 :&lt;/p&gt;
&lt;pre&gt;
…
spec:
&lt;font color=red&gt;## 1. 新增以下這行
hostNetwork: true&lt;/font&gt;
containers:
- args:
- /nginx-ingress-controller
&lt;font color=red&gt;## 2. 註解掉以下這行的設定
#- --publish-service=$(POD_NAMESPACE)/ingress-nginx-controller&lt;/font&gt;
...
&lt;font color=red&gt;## 3. 新增以下這行
- --report-node-internal-ip-address&lt;/font&gt;
&lt;/pre&gt;
&lt;p&gt;!!! 危險 &amp;ldquo;安全考量&amp;rdquo;
啟用這個選項會讓每個系統的 daemon 都會在任何網路介面（包括主機的 loopback）上暴露給 Ingress-Nginx Controller。請仔細評估這樣做對系統安全性的影響。&lt;/p&gt;
&lt;p&gt;!!! 例子
考慮這個由 2 個副本組成的 ingress-nginx-controller 部署，NGINX Pod 繼承了它們所在主機的 IP 地址，而不是使用內部的 Pod IP。&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ kubectl -n ingress-nginx get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
ingress-nginx-admission-create-lgfnk 0/1 Completed 0 49m 10.244.2.28 worker2 &amp;lt;none&amp;gt; &amp;lt;none&amp;gt;
ingress-nginx-admission-patch-55p8j 0/1 Completed 0 49m 10.244.2.29 worker2 &amp;lt;none&amp;gt; &amp;lt;none&amp;gt;
ingress-nginx-controller-67f877d9d8-9sr6q 1/1 Running 0 3m24s 172.22.8.203 worker2 &amp;lt;none&amp;gt; &amp;lt;none&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;這種部署方式的一個主要限制是，每個叢集節點上只能調度一個 Ingress-Nginx 控制器 Pod，因為在同一個網路介面上綁定相同的埠多次在技術上是不可能的。因為這個原因而無法調度的 Pod 會出現以下的事件錯誤：&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ kubectl -n ingress-nginx get events \
--sort-by=&amp;#39;.lastTimestamp&amp;#39; \
--field-selector involvedObject.kind=Pod&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;執行結果&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;LAST SEEN TYPE REASON OBJECT MESSAGE
5m13s Warning FailedScheduling pod/ingress-nginx-controller-67f877d9d8-8z2ws 0/3 nodes are available: 1 node(s) had untolerated taint {node-role.kubernetes.io/control-plane: }, 2 node(s) didn&amp;#39;t have free ports for the requested pod ports. preemption: 0/3 nodes are available: 1 Preemption is not helpful for scheduling, 2 No preemption victims found for incoming pod.
...&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;確保只建立可排程 Pod 的方法之一，是將 Ingress-Nginx Controller 部署為 DaemonSet，而非傳統的 Deployment。&lt;/p&gt;
&lt;p&gt;除非某個節點被設定為拒絕這些 Pod，否則 DaemonSet 只會為每個叢集節點（包括主節點）調度一種 Pod。&lt;/p&gt;
&lt;p&gt;像使用 NodePorts 一樣，這種方法也有一些需要注意的小問題。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DNS 解析
設定了 &lt;code&gt;hostNetwork: true&lt;/code&gt; 的 Pod 不會使用內部的 DNS resolver（例如 kube-dns 或 CoreDNS），除非它們的 &lt;code&gt;dnsPolicy&lt;/code&gt; 設定為 &lt;code&gt;ClusterFirstWithHostNet&lt;/code&gt;。如果 NGINX 需要解析內部名稱，建議使用這個設定。&lt;/li&gt;
&lt;li&gt;Ingress 狀態
由於使用主機網路的設定中沒有任何 Service 來暴露 Ingress-Nginx Controller，因此在標準雲端環境中常用的 &lt;code&gt;--publish-service&lt;/code&gt; flag 不適用，所有 Ingress 物件的狀態會保持為空白。&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ kubectl get ingress
NAME HOSTS ADDRESS PORTS
test-ingress myapp.example.com 80&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;相反，由於 bare-metal 節點通常沒有 ExternalIP，因此必須啟用 &lt;code&gt;--report-node-internal-ip-address&lt;/code&gt; flag，將所有 Ingress 物件的狀態設定為執行 Ingress-Nginx Controller 的所有節點的內部 IP 位址。&lt;/p&gt;
&lt;p&gt;!!! 範例 給定一個由 2 個 replicas 組成的 ingress-nginx-controller DaemonSet&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ kubectl -n ingress-nginx get pod -o wide
NAME READY STATUS IP NODE
default-http-backend-7c5bc89cc9-p86md 1/1 Running 172.17.1.1 host-2
ingress-nginx-controller-5b4cf5fc6-7lg6c 1/1 Running 203.0.113.3 host-3
ingress-nginx-controller-5b4cf5fc6-lzrls 1/1 Running 203.0.113.2 host-2&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;controller 會將其管理的所有 Ingress 物件的狀態設定為下列值：&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ kubectl get ingress -o wide
NAME HOSTS ADDRESS PORTS
test-ingress myapp.example.com 203.0.113.2,203.0.113.3 80&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;!!! 注意 另外，也可以使用 &lt;code&gt;--publish-status-address&lt;/code&gt; 標誌來覆寫寫入 Ingress 物件的位址。請參閱&lt;a
href="https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/cli-arguments.md"target="_blank" rel="noopener"&gt;命令列參數&lt;/a&gt;。&lt;/p&gt;
&lt;h2&gt;8. Deploying an Application (Comprising of Deployment, Service, and Ingress)&lt;span class="hx:absolute hx:-mt-20" id="8-deploying-an-application-comprising-of-deployment-service-and-ingress"&gt;&lt;/span&gt;
&lt;a href="#8-deploying-an-application-comprising-of-deployment-service-and-ingress" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ kubectl create ns ing-internal
namespace/ing-internal created
$ echo &amp;#39;kind: Pod
apiVersion: v1
metadata:
name: hi-app
namespace: ing-internal
labels:
app: hi-app
spec:
containers:
- name: hi-app
image: quay.io/flysangel/hashicorp/http-echo
args:
- &amp;#34;-text=hi&amp;#34;
---
kind: Service
apiVersion: v1
metadata:
name: hi-service
namespace: ing-internal
spec:
selector:
app: hi-app
ports:
- port: 5678&amp;#39; | kubectl apply -f -
$ echo &amp;#39;apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ping
namespace: ing-internal
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /hi
pathType: Prefix
backend:
service:
name: hi-service
port:
number: 5678&amp;#39; | kubectl apply -f -&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;9. Observing the Ingress Nginx Controller Pod&lt;span class="hx:absolute hx:-mt-20" id="9-observing-the-ingress-nginx-controller-pod"&gt;&lt;/span&gt;
&lt;a href="#9-observing-the-ingress-nginx-controller-pod" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;如果我們現在查看 Ingress Nginx Controller pod log，我們會發現上一步建立的 Ingress 有一些 log 資訊：&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ kubectl -n ingress-nginx logs deployments/ingress-nginx-controller&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;執行結果 :&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;...
&amp;#34;successfully validated configuration, accepting&amp;#34; ingress=&amp;#34;ing-internal/ping&amp;#34;
&amp;#34;Found valid IngressClass&amp;#34; ingress=&amp;#34;ing-internal/ping&amp;#34; ingressclass=&amp;#34;nginx&amp;#34;
&amp;#34;Configuration changes detected, backend reload required&amp;#34;
Event(v1.ObjectReference{Kind:&amp;#34;Ingress&amp;#34;, Namespace:&amp;#34;ing-internal&amp;#34;, Name:&amp;#34;ping&amp;#34;, UID:&amp;#34;b77f8877-1a41-4530-95ce-6aaa4032cbb8&amp;#34;, APIVersion:&amp;#34;networking.k8s.io/v1&amp;#34;, ResourceVersion:&amp;#34;78690&amp;#34;, FieldPath:&amp;#34;&amp;#34;}): type: &amp;#39;Normal&amp;#39; reason: &amp;#39;Sync&amp;#39; Scheduled for sync
&amp;#34;Backend successfully reloaded&amp;#34;
Event(v1.ObjectReference{Kind:&amp;#34;Pod&amp;#34;, Namespace:&amp;#34;ingress-nginx&amp;#34;, Name:&amp;#34;ingress-nginx-controller-67f877d9d8-9sr6q&amp;#34;, UID:&amp;#34;a371a524-53c5-4e3a-8ea3-6b3858275c52&amp;#34;, APIVersion:&amp;#34;v1&amp;#34;, ResourceVersion:&amp;#34;71406&amp;#34;, FieldPath:&amp;#34;&amp;#34;}): type: &amp;#39;Normal&amp;#39; reason: &amp;#39;RELOAD&amp;#39; NGINX reload triggered due to a change in configuration
&amp;#34;updating Ingress status&amp;#34; namespace=&amp;#34;ing-internal&amp;#34; ingress=&amp;#34;ping&amp;#34; currentValue=null newValue=[{&amp;#34;ip&amp;#34;:&amp;#34;172.22.8.203&amp;#34;}]
Event(v1.ObjectReference{Kind:&amp;#34;Ingress&amp;#34;, Namespace:&amp;#34;ing-internal&amp;#34;, Name:&amp;#34;ping&amp;#34;, UID:&amp;#34;b77f8877-1a41-4530-95ce-6aaa4032cbb8&amp;#34;, APIVersion:&amp;#34;networking.k8s.io/v1&amp;#34;, ResourceVersion:&amp;#34;78765&amp;#34;, FieldPath:&amp;#34;&amp;#34;}): type: &amp;#39;Normal&amp;#39; reason: &amp;#39;Sync&amp;#39; Scheduled for sync&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;基本上，Ingress Nginx Controller pod 會一直觀察 Kubernetes API Server。一旦接收到 Ingress 資源已建立的事件，它就會檢查其語法，以及是否已定義了 &lt;code&gt;IngressClass=nginx&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果新的 Ingress manifest 符合規定，Nginx Controller 就會更新用於 routing 的設定檔，並在不關閉 Pod 的情況下啟動重新載入。&lt;/p&gt;
&lt;h2&gt;10. 查看 Ingress Nginx Controller Pod Configuration File&lt;span class="hx:absolute hx:-mt-20" id="10-查看-ingress-nginx-controller-pod-configuration-file"&gt;&lt;/span&gt;
&lt;a href="#10-%e6%9f%a5%e7%9c%8b-ingress-nginx-controller-pod-configuration-file" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;routing 設定是存儲在 Ingress Nginx Controller Pod 的設定文件中。這裡我提取了一些高層次的相關部分：&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;# 將 Ingress Nginx Controller Pod 名稱設為變數
$ PN=$(kubectl -n ingress-nginx get pods -l &amp;#34;app.kubernetes.io/component=controller&amp;#34; -o name | head -n 1)
$ kubectl -n ingress-nginx exec ${PN#*/} -- cat nginx.conf&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;執行結果 :&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;(...)
http {
(...)
server {
(...)
location ~* &amp;#34;^/hi&amp;#34; {
set $namespace &amp;#34;ing-internal&amp;#34;;
set $ingress_name &amp;#34;ping&amp;#34;;
set $service_name &amp;#34;hi-service&amp;#34;;
set $service_port &amp;#34;5678&amp;#34;;
set $location_path &amp;#34;/hi&amp;#34;;
set $global_rate_limit_exceeding n;
rewrite_by_lua_block {
lua_ingress.rewrite({
force_ssl_redirect = false,
ssl_redirect = true,
force_no_ssl_redirect = false,
preserve_trailing_slash = false,
use_port_in_redirects = false,
global_throttle = { namespace = &amp;#34;&amp;#34;, limit = 0, window_size = 0, key = { }, ignored_cidrs = { } },
})
balancer.rewrite()
plugins.run()
...
# Custom Response Headers
rewrite &amp;#34;(?i)/hi&amp;#34; / break;
proxy_pass http://upstream_balancer;
proxy_redirect off;
}
(...)
}
}
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;基本上，如果這個 Nginx 伺服器收到針對根路徑（也就是請求中沒有指定路徑）的請求，它會使用 OpenResty 的 &lt;code&gt;ngx_http_lua_module&lt;/code&gt; 模組來重寫請求，並將其傳遞給應用服務。&lt;/p&gt;
&lt;p&gt;讓我們來看看目前為止的設定：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通過 &lt;code&gt;hi-service&lt;/code&gt; Service 將流量以 load balanced 或 random 的方式傳給網站應用的 Pod。
&lt;ul&gt;
&lt;li&gt;load balanced 或 random 將取決於 kube-proxy 的 mode&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;創建了一個帶有 &lt;code&gt;class=nginx&lt;/code&gt; 屬性的 Ingress ，來將流量 routes 到這個 Service。這會在 Kubernetes 中觸發一個事件。&lt;/li&gt;
&lt;li&gt;Ingress Nginx Controller Pod 看到這個事件並做出反應：它會驗證 Ingress 設定是否語法正確，以及是否設置了必要的屬性。&lt;/li&gt;
&lt;li&gt;如果所有檢查都通過，Ingress Nginx Controller 會將 routing 細節加入到其內部設定文件中，並進行 hot reloads。&lt;/li&gt;
&lt;li&gt;Ingress Nginx Controller Pod 作為反向代理，將它收到的流量 routing 到叢集中的相應服務。
&lt;ul&gt;
&lt;li&gt;使用 Ingress 資源來創建這些路由規則。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;檢視 Ingress 狀態&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ kubectl -n ing-internal get ing
NAME CLASS HOSTS ADDRESS PORTS AGE
ping nginx * 172.22.8.203 80 28m&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;可以看到 Ingress 的 Address 和 Ports 對應的就是 Ingress Nginx Controller Pod 的 IP 跟 Port。&lt;/p&gt;
&lt;h2&gt;11. Ref&lt;span class="hx:absolute hx:-mt-20" id="11-ref"&gt;&lt;/span&gt;
&lt;a href="#11-ref" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a
href="https://kubernetes.io/docs/concepts/services-networking/ingress/"target="_blank" rel="noopener"&gt;Ingress - Kubernetes Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a
href="https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/"target="_blank" rel="noopener"&gt;Ingress Controllers - Kubernetes Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a
href="https://help.aliyun.com/zh/ack/serverless-kubernetes/user-guide/overview-2?spm=a2c4g.11186623.0.0.1cd82873FaSP3i"target="_blank" rel="noopener"&gt;Nginx Ingress 概述 - 阿里云官網文件&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a
href="https://github.com/kubernetes/ingress-nginx/blob/main/docs/deploy/baremetal.md"target="_blank" rel="noopener"&gt;Bare-metal considerations - ingress-nginx Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a
href="https://luppeng.wordpress.com/2024/06/09/how-the-nginx-ingress-controller-works-in-a-deployment-on-an-on-premise-kubernetes-cluster/"target="_blank" rel="noopener"&gt;How the Ingress Nginx Controller Works&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>How to Block Ping ICMP Requests with firewalld</title><link>https://blog.kubeantony.com/archive/networking/how-to-block-ping-icmp-requests-with-firewalld/</link><pubDate>Fri, 18 Oct 2024 07:38:18 +0800</pubDate><guid>https://blog.kubeantony.com/archive/networking/how-to-block-ping-icmp-requests-with-firewalld/</guid><description>
&lt;h2&gt;Understanding predefined zones&lt;span class="hx:absolute hx:-mt-20" id="understanding-predefined-zones"&gt;&lt;/span&gt;
&lt;a href="#understanding-predefined-zones" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;block – All incoming network connections rejected. Only network connections initiated from within the system are possible.&lt;/li&gt;
&lt;li&gt;dmz – Classic demilitarized zone (DMZ) zone that provided limited access to your LAN and only allows selected incoming ports.&lt;/li&gt;
&lt;li&gt;docker – All network connections are accepted for Docker service using docker0 interface.&lt;/li&gt;
&lt;li&gt;drop – All incoming network connections dropped, and only outgoing network connections allowed.&lt;/li&gt;
&lt;li&gt;external – Useful for router type of connections. You need LAN and WAN interfaces too for masquerading (NAT) to work correctly.&lt;/li&gt;
&lt;li&gt;home – Useful for home computers such as laptops and desktops within your LAN where you trust other computers. Allows only selected TCP/IP ports.&lt;/li&gt;
&lt;li&gt;internal – For use on internal networks when you mostly trust the other servers or computers on the LAN.&lt;/li&gt;
&lt;li&gt;public – You do not trust any other computers and servers on the network. You only allow the required ports and services. For cloud servers or server hosted at your place always use public zone.&lt;/li&gt;
&lt;li&gt;trusted – All network connections are accepted. I do not recommend this zone for dedicated servers or VMs connected to WAN.&lt;/li&gt;
&lt;li&gt;work – For use at your workplace where you trust your coworkers and other servers.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;# 1. start and enable the firewalld service
$ systemctl enable --now firewalld.service
# 2. Check firewalld service is active
$ systemctl is-active firewalld.service
active
# 3. Print currently active zones altogether with interfaces and sources used in these zones.
$ firewall-cmd --get-active-zones
docker
interfaces: docker0
public
interfaces: eth0
# 4. (optional) Bind interface interface to zone zone. If zone is omitted, default zone will be used.
## 如果在上一步驟發現 public 的 zone 沒有套用在 eth0 這張網卡的話，執行已下命令
$ firewall-cmd --permanent --zone=public --add-interface=eth0
# 5. Add the ICMP block inversion to block all ICMP requests at once
### and Make the new settings persistent
$ firewall-cmd --permanent --add-icmp-block-inversion --zone=public
success
# 6. Reload firewall rules and keep state information.
### Current permanent configuration will become new runtime configuration
$ firewall-cmd --reload
success
# 7. Return whether ICMP block inversion is enabled. Returns 0 if true, 1 otherwise.
$ firewall-cmd --query-icmp-block-inversion
yes
# 8. List everything added or enabled in public zone.
$ firewall-cmd --list-all --zone=public
public (active)
target: default
icmp-block-inversion: yes
interfaces: eth0
sources:
services: ssh suse-manager-server
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Check Veth peer</title><link>https://blog.kubeantony.com/archive/networking/check-veth-peer/</link><pubDate>Sun, 13 Oct 2024 06:10:38 +0800</pubDate><guid>https://blog.kubeantony.com/archive/networking/check-veth-peer/</guid><description>
&lt;h2&gt;PreRequest&lt;span class="hx:absolute hx:-mt-20" id="prerequest"&gt;&lt;/span&gt;
&lt;a href="#prerequest" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ sudo apk info iproute2
iproute2-6.9.0-r0 description:
IP Routing Utilities
iproute2-6.9.0-r0 webpage:
https://wiki.linuxfoundation.org/networking/iproute2
iproute2-6.9.0-r0 installed size:
428 KiB&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;不能用 busybox 的 ip 命令&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Start Cehck Veth peer&lt;span class="hx:absolute hx:-mt-20" id="start-cehck-veth-peer"&gt;&lt;/span&gt;
&lt;a href="#start-cehck-veth-peer" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3&gt;1. 先看 veth 的另一端插在哪個 Namespace&lt;span class="hx:absolute hx:-mt-20" id="1-先看-veth-的另一端插在哪個-namespace"&gt;&lt;/span&gt;
&lt;a href="#1-%e5%85%88%e7%9c%8b-veth-%e7%9a%84%e5%8f%a6%e4%b8%80%e7%ab%af%e6%8f%92%e5%9c%a8%e5%93%aa%e5%80%8b-namespace" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;pre&gt;
$ ip a s veth0
4: veth0@if2: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue &lt;font color=red&gt;master podman1&lt;/font&gt; state UP group default qlen 1000
link/ether 9e:a5:82:a2:56:d1 brd ff:ff:ff:ff:ff:ff &lt;font color=red&gt;link-netns netns-49384fd6-7fc9-cf3d-d77f-1e6ae9fe960f&lt;/font&gt;
inet6 fe80::9ca5:82ff:fea2:56d1/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;由以上結果得知 &lt;code&gt;veth0&lt;/code&gt; 與 &lt;code&gt;netns-49384fd6-7fc9-cf3d-d77f-1e6ae9fe960f&lt;/code&gt; Linux Network Namespace 連接&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;2. 列出 Network Namespace 的網卡資訊&lt;span class="hx:absolute hx:-mt-20" id="2-列出-network-namespace-的網卡資訊"&gt;&lt;/span&gt;
&lt;a href="#2-%e5%88%97%e5%87%ba-network-namespace-%e7%9a%84%e7%b6%b2%e5%8d%a1%e8%b3%87%e8%a8%8a" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;pre&gt;
$ netns=$(ip a s veth0 | grep link-netns)
$ echo ${netns##* }
&lt;font color=red&gt;netns-49384fd6-7fc9-cf3d-d77f-1e6ae9fe960f&lt;/font&gt;
$ sudo ip netns exec ${netns##* } ip a s eth0
2: eth0@if4: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 9e:53:27:c4:74:47 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.89.0.2/24 brd 10.89.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fc00:f853:ccd:e793::2/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::9c53:27ff:fec4:7447/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
&lt;/pre&gt;</description></item><item><title>Configure MTU to maximize network performance</title><link>https://blog.kubeantony.com/archive/networking/configure-mtu-to-maximize-network-performance/</link><pubDate>Sun, 29 Sep 2024 04:04:02 +0800</pubDate><guid>https://blog.kubeantony.com/archive/networking/configure-mtu-to-maximize-network-performance/</guid><description>
&lt;h2&gt;1. Configure the MTU value in Podman Network&lt;span class="hx:absolute hx:-mt-20" id="1-configure-the-mtu-value-in-podman-network"&gt;&lt;/span&gt;
&lt;a href="#1-configure-the-mtu-value-in-podman-network" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3&gt;1.1. 修改已經存在的 Podman Network&lt;span class="hx:absolute hx:-mt-20" id="11-修改已經存在的-podman-network"&gt;&lt;/span&gt;
&lt;a href="#11-%e4%bf%ae%e6%94%b9%e5%b7%b2%e7%b6%93%e5%ad%98%e5%9c%a8%e7%9a%84-podman-network" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ sudo nano /etc/containers/networks/kind.json&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;新增以下內容 :&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt; &amp;#34;options&amp;#34;: {
&amp;#34;mtu&amp;#34;: &amp;#34;6000&amp;#34;
},&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;完整內容如下 :&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;{
&amp;#34;name&amp;#34;: &amp;#34;kind&amp;#34;,
&amp;#34;id&amp;#34;: &amp;#34;df72cb97d019a6025357f12b68870a26897b2c288a24b11c5ec0c2f9b3e5b878&amp;#34;,
&amp;#34;driver&amp;#34;: &amp;#34;bridge&amp;#34;,
&amp;#34;network_interface&amp;#34;: &amp;#34;podman1&amp;#34;,
&amp;#34;created&amp;#34;: &amp;#34;2024-09-27T16:14:32.979631978&amp;#43;08:00&amp;#34;,
&amp;#34;subnets&amp;#34;: [
{
&amp;#34;subnet&amp;#34;: &amp;#34;fc00:f853:ccd:e793::/64&amp;#34;,
&amp;#34;gateway&amp;#34;: &amp;#34;fc00:f853:ccd:e793::1&amp;#34;
},
{
&amp;#34;subnet&amp;#34;: &amp;#34;10.89.0.0/24&amp;#34;,
&amp;#34;gateway&amp;#34;: &amp;#34;10.89.0.1&amp;#34;
}
],
&amp;#34;ipv6_enabled&amp;#34;: true,
&amp;#34;internal&amp;#34;: false,
&amp;#34;dns_enabled&amp;#34;: true,
&amp;#34;options&amp;#34;: {
&amp;#34;mtu&amp;#34;: &amp;#34;6000&amp;#34;
},
&amp;#34;ipam_options&amp;#34;: {
&amp;#34;driver&amp;#34;: &amp;#34;host-local&amp;#34;
}
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;1.2. 檢查 Podman1 網卡 MTU 已設為 6000&lt;span class="hx:absolute hx:-mt-20" id="12-檢查-podman1-網卡-mtu-已設為-6000"&gt;&lt;/span&gt;
&lt;a href="#12-%e6%aa%a2%e6%9f%a5-podman1-%e7%b6%b2%e5%8d%a1-mtu-%e5%b7%b2%e8%a8%ad%e7%82%ba-6000" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ ip a s podman1&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;執行結果如下 :&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;9: podman1: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 6000 qdisc noqueue state UP group default qlen 1000
link/ether 5e:25:b2:4b:c0:cd brd ff:ff:ff:ff:ff:ff
inet 10.89.0.1/24 brd 10.89.0.255 scope global podman1
valid_lft forever preferred_lft forever
inet6 fc00:f853:ccd:e793::1/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::5c25:b2ff:fe4b:c0cd/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;1.3. 關閉 Kind Cluster&lt;span class="hx:absolute hx:-mt-20" id="13-關閉-kind-cluster"&gt;&lt;/span&gt;
&lt;a href="#13-%e9%97%9c%e9%96%89-kind-cluster" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ kco c31&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;1.4. 啟動 Kind Cluster&lt;span class="hx:absolute hx:-mt-20" id="14-啟動-kind-cluster"&gt;&lt;/span&gt;
&lt;a href="#14-%e5%95%9f%e5%8b%95-kind-cluster" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ kci c31&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;1.5. 檢查 Kind node 網卡 MTU 已設為 6000&lt;span class="hx:absolute hx:-mt-20" id="15-檢查-kind-node-網卡-mtu-已設為-6000"&gt;&lt;/span&gt;
&lt;a href="#15-%e6%aa%a2%e6%9f%a5-kind-node-%e7%b6%b2%e5%8d%a1-mtu-%e5%b7%b2%e8%a8%ad%e7%82%ba-6000" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ ip a s&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;執行結果如下 :&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;10: veth0@if3: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 6000 qdisc noqueue master podman1 state UP group default qlen 1000
link/ether 4a:c4:0e:46:e5:7e brd ff:ff:ff:ff:ff:ff link-netns netns-9ff96fea-b7ef-8593-61a2-467b31e2d98e
inet6 fe80::48c4:eff:fe46:e57e/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
11: veth1@if3: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 6000 qdisc noqueue master podman1 state UP group default qlen 1000
link/ether f2:34:71:74:cf:bd brd ff:ff:ff:ff:ff:ff link-netns netns-86850d7d-bc9e-3509-524b-f40e2cd61514
inet6 fe80::f034:71ff:fe74:cfbd/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
12: veth2@if3: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 6000 qdisc noqueue master podman1 state UP group default qlen 1000
link/ether de:6c:ef:f7:e6:f5 brd ff:ff:ff:ff:ff:ff link-netns netns-b5b7d1a1-af28-b060-eec2-3c3f87150110
inet6 fe80::dc6c:efff:fef7:e6f5/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;2. Configure Calico MTU&lt;span class="hx:absolute hx:-mt-20" id="2-configure-calico-mtu"&gt;&lt;/span&gt;
&lt;a href="#2-configure-calico-mtu" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3&gt;2.1. 將 MTU 設為 5950&lt;span class="hx:absolute hx:-mt-20" id="21-將-mtu-設為-5950"&gt;&lt;/span&gt;
&lt;a href="#21-%e5%b0%87-mtu-%e8%a8%ad%e7%82%ba-5950" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ kubectl patch configmap/calico-config -n kube-system --type merge \
-p &amp;#39;{&amp;#34;data&amp;#34;:{&amp;#34;veth_mtu&amp;#34;: &amp;#34;5950&amp;#34;}}&amp;#39;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;2.2. Rolling restart of all calico/node pods.&lt;span class="hx:absolute hx:-mt-20" id="22-rolling-restart-of-all-caliconode-pods"&gt;&lt;/span&gt;
&lt;a href="#22-rolling-restart-of-all-caliconode-pods" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ kubectl rollout restart daemonset calico-node -n kube-system&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;2.3. Check Calico pod Status&lt;span class="hx:absolute hx:-mt-20" id="23-check-calico-pod-status"&gt;&lt;/span&gt;
&lt;a href="#23-check-calico-pod-status" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ kubectl -n kube-system get pods -l &amp;#34;k8s-app=calico-node&amp;#34;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;正確執行結果 :&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;NAME READY STATUS RESTARTS AGE
calico-node-2fxx7 1/1 Running 0 64s
calico-node-cw58f 1/1 Running 0 53s
calico-node-x872p 1/1 Running 0 74s&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;3. Testing Connectivity Between Kubernetes Pods with Iperf3&lt;span class="hx:absolute hx:-mt-20" id="3-testing-connectivity-between-kubernetes-pods-with-iperf3"&gt;&lt;/span&gt;
&lt;a href="#3-testing-connectivity-between-kubernetes-pods-with-iperf3" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3&gt;3.1. Deploy Iperf3 as a DaemonSet&lt;span class="hx:absolute hx:-mt-20" id="31-deploy-iperf3-as-a-daemonset"&gt;&lt;/span&gt;
&lt;a href="#31-deploy-iperf3-as-a-daemonset" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ echo &amp;#39;apiVersion: apps/v1
kind: DaemonSet
metadata:
name: iperf3-ds
spec:
selector:
matchLabels:
app: iperf3
template:
metadata:
labels:
app: iperf3
spec:
containers:
- name: iperf3
image: leodotcloud/swiss-army-knife
ports:
- containerPort: 5201&amp;#39; &amp;gt; ~/iperf3-ds.yaml&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;3.2. Create the DaemonSet&lt;span class="hx:absolute hx:-mt-20" id="32-create-the-daemonset"&gt;&lt;/span&gt;
&lt;a href="#32-create-the-daemonset" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ kubectl apply -f iperf3-ds.yaml&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;3.3. Check that iperf3 pods are running on all nodes in the cluster&lt;span class="hx:absolute hx:-mt-20" id="33-check-that-iperf3-pods-are-running-on-all-nodes-in-the-cluster"&gt;&lt;/span&gt;
&lt;a href="#33-check-that-iperf3-pods-are-running-on-all-nodes-in-the-cluster" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ kubectl get pods -l &amp;#34;app=iperf3&amp;#34; -o wide&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;執行結果如下 :&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
iperf3-ds-49bwz 1/1 Running 0 32m 10.244.166.25 c31-worker2 &amp;lt;none&amp;gt; &amp;lt;none&amp;gt;
iperf3-ds-9bhn5 1/1 Running 0 32m 10.244.146.203 c31-control-plane &amp;lt;none&amp;gt; &amp;lt;none&amp;gt;
iperf3-ds-tdfw9 1/1 Running 0 32m 10.244.152.26 c31-worker &amp;lt;none&amp;gt; &amp;lt;none&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;3.4. Choose a pod to run in server mode&lt;span class="hx:absolute hx:-mt-20" id="34-choose-a-pod-to-run-in-server-mode"&gt;&lt;/span&gt;
&lt;a href="#34-choose-a-pod-to-run-in-server-mode" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ kubectl exec -it iperf3-ds-tdfw9 -- iperf3 -s -p 12345&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;執行結果如下 :&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;-----------------------------------------------------------
Server listening on 12345
-----------------------------------------------------------&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;3.5. Choose a pod to run in client mode&lt;span class="hx:absolute hx:-mt-20" id="35-choose-a-pod-to-run-in-client-mode"&gt;&lt;/span&gt;
&lt;a href="#35-choose-a-pod-to-run-in-client-mode" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ kubectl exec -it iperf3-ds-49bwz -- iperf3 -c 10.244.152.26 -p 12345&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;執行結果如下 :&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;Connecting to host 10.244.152.26, port 12345
[ 4] local 10.244.166.25 port 36468 connected to 10.244.152.26 port 12345
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 1.89 GBytes 16.2 Gbits/sec 112 933 KBytes
[ 4] 1.00-2.00 sec 1.85 GBytes 15.9 Gbits/sec 83 979 KBytes
[ 4] 2.00-3.00 sec 1.90 GBytes 16.3 Gbits/sec 121 1.20 MBytes
[ 4] 3.00-4.00 sec 1.92 GBytes 16.5 Gbits/sec 0 1.20 MBytes
[ 4] 4.00-5.00 sec 1.91 GBytes 16.4 Gbits/sec 154 1.20 MBytes
[ 4] 5.00-6.00 sec 1.89 GBytes 16.3 Gbits/sec 0 1.20 MBytes
[ 4] 6.00-7.00 sec 1.88 GBytes 16.2 Gbits/sec 188 1.21 MBytes
[ 4] 7.00-8.00 sec 1.88 GBytes 16.1 Gbits/sec 0 1.21 MBytes
[ 4] 8.00-9.00 sec 1.91 GBytes 16.4 Gbits/sec 238 1.48 MBytes
[ 4] 9.00-10.00 sec 1.85 GBytes 15.9 Gbits/sec 0 1.48 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 18.9 GBytes 16.2 Gbits/sec 896 sender
[ 4] 0.00-10.00 sec 18.9 GBytes 16.2 Gbits/sec receiver
iperf Done.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;4. 測試 K8s Pod 網路效能&lt;span class="hx:absolute hx:-mt-20" id="4-測試-k8s-pod-網路效能"&gt;&lt;/span&gt;
&lt;a href="#4-%e6%b8%ac%e8%a9%a6-k8s-pod-%e7%b6%b2%e8%b7%af%e6%95%88%e8%83%bd" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3&gt;4.1. 原始 podman network MTU 改 1500, Calico 改 1480&lt;span class="hx:absolute hx:-mt-20" id="41-原始-podman-network-mtu-改-1500-calico-改-1480"&gt;&lt;/span&gt;
&lt;a href="#41-%e5%8e%9f%e5%a7%8b-podman-network-mtu-%e6%94%b9-1500-calico-%e6%94%b9-1480" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ kubectl exec -it iperf3-ds-676l2 -- iperf3 -c 10.244.152.26 -p 12345&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;執行結果如下 :&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;Connecting to host 10.244.152.26, port 12345
[ 4] local 10.244.166.23 port 44364 connected to 10.244.152.26 port 12345
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 1.50 GBytes 12.9 Gbits/sec 135 1.50 MBytes
[ 4] 1.00-2.00 sec 1.49 GBytes 12.8 Gbits/sec 0 1.52 MBytes
[ 4] 2.00-3.00 sec 1.50 GBytes 12.9 Gbits/sec 0 1.52 MBytes
[ 4] 3.00-4.00 sec 1.50 GBytes 12.8 Gbits/sec 646 1.55 MBytes
[ 4] 4.00-5.00 sec 1.51 GBytes 12.9 Gbits/sec 1659 1.09 MBytes
[ 4] 5.00-6.00 sec 1.37 GBytes 11.8 Gbits/sec 0 1.09 MBytes
[ 4] 6.00-7.00 sec 1.49 GBytes 12.8 Gbits/sec 656 1.10 MBytes
[ 4] 7.00-8.00 sec 1.50 GBytes 12.9 Gbits/sec 630 1.12 MBytes
[ 4] 8.00-9.00 sec 1.44 GBytes 12.4 Gbits/sec 438 1.13 MBytes
[ 4] 9.00-10.00 sec 1.50 GBytes 12.9 Gbits/sec 703 1.15 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 14.8 GBytes 12.7 Gbits/sec 4867 sender
[ 4] 0.00-10.00 sec 14.8 GBytes 12.7 Gbits/sec receiver
iperf Done.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;4.2. podman network MTU 改 9000, Calico 改 8950&lt;span class="hx:absolute hx:-mt-20" id="42-podman-network-mtu-改-9000-calico-改-8950"&gt;&lt;/span&gt;
&lt;a href="#42-podman-network-mtu-%e6%94%b9-9000-calico-%e6%94%b9-8950" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ kubectl exec -it iperf3-ds-rlsnj -- iperf3 -c 10.244.152.36 -p 12345&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;執行結果如下 :&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;Connecting to host 10.244.152.36, port 12345
[ 4] local 10.244.166.33 port 54388 connected to 10.244.152.36 port 12345
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 1.81 GBytes 15.5 Gbits/sec 7 3.57 MBytes
[ 4] 1.00-2.00 sec 1.85 GBytes 15.9 Gbits/sec 0 3.60 MBytes
[ 4] 2.00-3.00 sec 1.83 GBytes 15.8 Gbits/sec 0 3.60 MBytes
[ 4] 3.00-4.00 sec 1.84 GBytes 15.8 Gbits/sec 0 3.66 MBytes
[ 4] 4.00-5.00 sec 1.81 GBytes 15.5 Gbits/sec 0 3.66 MBytes
[ 4] 5.00-6.00 sec 1.80 GBytes 15.5 Gbits/sec 0 3.66 MBytes
[ 4] 6.00-7.00 sec 1.78 GBytes 15.3 Gbits/sec 0 4.18 MBytes
[ 4] 7.00-8.00 sec 1.82 GBytes 15.7 Gbits/sec 0 4.18 MBytes
[ 4] 8.00-9.00 sec 1.83 GBytes 15.7 Gbits/sec 0 4.18 MBytes
[ 4] 9.00-10.00 sec 1.79 GBytes 15.4 Gbits/sec 0 4.18 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 18.2 GBytes 15.6 Gbits/sec 7 sender
[ 4] 0.00-10.00 sec 18.2 GBytes 15.6 Gbits/sec receiver
iperf Done.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Ref&lt;span class="hx:absolute hx:-mt-20" id="ref"&gt;&lt;/span&gt;
&lt;a href="#ref" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a
href="https://access.redhat.com/solutions/7007687"target="_blank" rel="noopener"&gt;How to configure the MTU value in podman network - Red Hat kb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a
href="https://docs.tigera.io/calico/latest/networking/configuring/mtu#configure-mtu"target="_blank" rel="noopener"&gt;Configure MTU to maximize network performance - Calico Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a
href="https://www.suse.com/support/kb/doc/?id=000020954"target="_blank" rel="noopener"&gt;Testing Connectivity Between Kubernetes Pods with Iperf3 - SUSE kb&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>使用 Certbot 命令列工具建立免費的 TLS/SSL 網域憑證</title><link>https://blog.kubeantony.com/archive/networking/%E4%BD%BF%E7%94%A8-certbot-%E5%91%BD%E4%BB%A4%E5%88%97%E5%B7%A5%E5%85%B7%E5%BB%BA%E7%AB%8B%E5%85%8D%E8%B2%BB%E7%9A%84-tls-ssl-%E7%B6%B2%E5%9F%9F%E6%86%91%E8%AD%89/</link><pubDate>Mon, 22 Apr 2024 06:45:10 +0800</pubDate><guid>https://blog.kubeantony.com/archive/networking/%E4%BD%BF%E7%94%A8-certbot-%E5%91%BD%E4%BB%A4%E5%88%97%E5%B7%A5%E5%85%B7%E5%BB%BA%E7%AB%8B%E5%85%8D%E8%B2%BB%E7%9A%84-tls-ssl-%E7%B6%B2%E5%9F%9F%E6%86%91%E8%AD%89/</guid><description>
&lt;p&gt;環境 : SLES 15 SP5
事前準備 : 一個 Public 的 Domain，跟一個對外 IP&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;# 安裝 Certbot
$ sudo zypper -n in certbot
$ certbot --version
certbot 1.22.0
# 產生 SSL/TLS 憑證
$ sudo certbot certonly --manual -m sreantony@gmail.com -d antony520.com -d *.antony520.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.4-April-3-2024.pdf. You must agree in
order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
## 輸入 y 同意服務使用條款
(Y)es/(N)o:y
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let&amp;#39;s Encrypt project and the non-profit organization that
develops Certbot? We&amp;#39;d like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
## 輸入 y ，E-mail 自動註冊為 ACME 帳戶
(Y)es/(N)o:y
Account registered.
Requesting a certificate for antony520.com and *.antony520.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name:
_acme-challenge.antony520.com.
with the following value:
XHp6PGqSI6mY727g8XnlLyYVzbgOBVYsgT_cOtg_1AI
Before continuing, verify the TXT record has been deployed. Depending on the DNS
provider, this may take some time, from a few seconds to multiple minutes. You can
check if it has finished deploying with aid of online tools, such as the Google
Admin Toolbox: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.antony520.com.
Look for one or more bolded line(s) below the line &amp;#39;;ANSWER&amp;#39;. It should show the
value(s) you&amp;#39;ve just added.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create a file containing just this data:
4oAGvPw9KSDg4RArSZoz7bKIAiGASyweV9F09u92f4E.o3vn2SL8r66xEEAkIAQ9cLJqpbdwUl21aDsOrJ1RkOY
And make it available on your web server at this URL:
http://antony520.com/.well-known/acme-challenge/4oAGvPw9KSDg4RArSZoz7bKIAiGASyweV9F09u92f4E
(This must be set up in addition to the previous challenges; do not remove,
replace, or undo the previous challenge tasks yet.)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h1&gt;Cloudflare Tunnel&lt;/h1&gt;&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ sudo zypper -n in podman
$ sudo podman run -d --name cloudflare-tunnel --network=host cloudflare/cloudflared:latest tunnel --no-autoupdate run --token eyJhIjoiN2IzYTVlMTUxZjQ3Mjc3NjNkZTA5OGE3Mjk3ZDQ2OTEiLCJ0IjoiNWE0MWY1YTQtZmJkZC00MDkxLThhYWQtNGMyMWNiNjJmYzMwIiwicyI6Ik5USXdaVEEyWWpVdE5UY3lZeTAwWWpSaExUbGlOelV0TjJJd1ltRTVZbVE0WVRneCJ9&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Cert-manager with SelfSigned Issuers</title><link>https://blog.kubeantony.com/archive/networking/cert-manager-with-selfsigned-issuers/</link><pubDate>Mon, 15 Apr 2024 06:23:06 +0800</pubDate><guid>https://blog.kubeantony.com/archive/networking/cert-manager-with-selfsigned-issuers/</guid><description>
&lt;h2&gt;實作目標&lt;span class="hx:absolute hx:-mt-20" id="實作目標"&gt;&lt;/span&gt;
&lt;a href="#%e5%af%a6%e4%bd%9c%e7%9b%ae%e6%a8%99" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;透過 Cert-manager 產生自簽 CA 憑證，再透過這個自簽的 CA 憑證簽發給 Ingress 用的 TLS 憑證，最後建一個 Nginx 來測試 TLS Ingress 是否符合預期，且憑證到期時間會自動更新。&lt;/p&gt;
&lt;h2&gt;先備知識&lt;span class="hx:absolute hx:-mt-20" id="先備知識"&gt;&lt;/span&gt;
&lt;a href="#%e5%85%88%e5%82%99%e7%9f%a5%e8%ad%98" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3&gt;Issuer&lt;span class="hx:absolute hx:-mt-20" id="issuer"&gt;&lt;/span&gt;
&lt;a href="#issuer" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Issuers 和 ClusterIssuers 是 Kubernetes 中的資源，代表著憑證授權機構（certificate authorities [CAs]），它們可以通過證書簽名請求 ( certificate signing requests )來生成簽名的證書 ( signed certificates )。&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;# 建立工作目錄
$ mkdir -p ~/wulin/cert-manager &amp;amp;&amp;amp; cd ~/wulin/cert-manager
# 建立 selfsigned Issuer
$ cat &amp;lt;&amp;lt;EOF &amp;gt; default-selfsigned-issuer
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: selfsigned-issuer
namespace: default
spec:
selfSigned: {}
EOF
$ kubectl apply -f default-selfsigned-issuer
# 檢查 Issuer 的狀態
$ kubectl get issuers selfsigned-issuer -o wide
NAME READY STATUS AGE
selfsigned-issuer True 15d
# Bootstrapping CA Issuers
$ cat &amp;lt;&amp;lt;EOF &amp;gt; default-ca.certificate.yaml
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: my-selfsigned-ca
namespace: default
spec:
isCA: true
commonName: my-selfsigned-ca
secretName: root-secret
subject:
organizations:
- Lab
organizationalUnits:
- Test
duration: 2h
renewBefore: 1h
privateKey:
algorithm: ECDSA
size: 256
issuerRef:
name: selfsigned-issuer
kind: Issuer
group: cert-manager.io
EOF
$ kubectl apply -f default-ca.certificate.yaml
# 可以看到 root-secret ( CA 憑證 ) 已經被自動生成，並存在 Secret 中
$ kubectl get certificate my-selfsigned-ca -o wide
NAME READY SECRET ISSUER STATUS AGE
my-selfsigned-ca True root-secret selfsigned-issuer Certificate is up to date and has not expired 22s
# 檢視 root-secret
$ kubectl get secret root-secret -o yaml
apiVersion: v1
data:
ca.crt:
...
tls.crt:
...
tls.key:
...
#
$ cat &amp;lt;&amp;lt;EOF &amp;gt; default-my-ca-issuer.yaml
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: my-ca-issuer
namespace: default
spec:
ca:
secretName: root-secret
EOF
$ kubectl apply -f default-my-ca-issuer.yaml
$ kubectl get issuers my-ca-issuer -o wide
NAME READY STATUS AGE
my-ca-issuer True Signing CA verified 8m12s&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Run Nginx with TLS Ingress&lt;span class="hx:absolute hx:-mt-20" id="run-nginx-with-tls-ingress"&gt;&lt;/span&gt;
&lt;a href="#run-nginx-with-tls-ingress" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ kubectl run nginx --image=harbor.example.com/rancher/library-nginx:1.19.2-alpine -l run=nginx
$ kubectl get pods -l run=nginx -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx 1/1 Running 0 18s 10.42.44.57 k2w1 &amp;lt;none&amp;gt; &amp;lt;none&amp;gt;
$ NGINX_PodIP=$(kubectl get pods -l run=nginx -o custom-columns=POD_IP:.status.podIP --no-headers)
$ curl http://$NGINX_PodIP
...
&amp;lt;title&amp;gt;Welcome to nginx!&amp;lt;/title&amp;gt;
...
# Create TLS Ingress
$ cat &amp;lt;&amp;lt;EOF &amp;gt; default-tls-nginx-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: tls-nginx-ingress
namespace: default
annotations:
# add an annotation indicating the issuer to use.
cert-manager.io/issuer: my-ca-issuer
spec:
ingressClassName: nginx
tls:
- hosts:
- 192.168.11.174.nip.io
secretName: tls-nginx-ingress
rules:
- host: 192.168.11.174.nip.io
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx
port:
number: 80
EOF
# 檢視 Ingress 部屬狀態
$ kubectl get ing
NAME CLASS HOSTS ADDRESS PORTS AGE
tls-nginx-ingress nginx 192.168.11.174.nip.io 192.168.11.173,192.168.11.174 80, 443 45s
# 測試透過 Ingress 連接網站
$ curl -k https://192.168.11.174.nip.io
...
&amp;lt;title&amp;gt;Welcome to nginx!&amp;lt;/title&amp;gt;
...
# 匯出 CA 憑證
$ kubectl get secret root-secret -o jsonpath=&amp;#39;{.data.ca\.crt}&amp;#39; | base64 -d &amp;gt;
ing-ca.crt
$ sudo cp ing-ca.crt /etc/pki/ca-trust/source/anchors/ &amp;amp;&amp;amp; sudo sudo update-ca-trust
# 這次 curl 就不用加 -k 跳過憑證確認了
$ curl https://192.168.11.174.nip.io
...
&amp;lt;title&amp;gt;Welcome to nginx!&amp;lt;/title&amp;gt;
...
# 檢視憑證過期日期
$ echo | openssl s_client -connect 192.168.11.174.nip.io:443 2&amp;gt;/dev/null | openssl x509 -noout -dates
notBefore=Apr 15 03:08:33 2024 GMT
notAfter=Jul 14 03:08:33 2024 GMT
# 下載 Cert-manager 管理工具
$ curl -fsSL -o cmctl.tar.gz https://github.com/cert-manager/cert-manager/releases/latest/download/cmctl-linux-amd64.tar.gz &amp;amp;&amp;amp; tar xzf cmctl.tar.gz &amp;amp;&amp;amp; sudo mv cmctl /usr/local/bin
# 手動 renew 憑證到期日期
$ cmctl renew tls-nginx-ingress
Manually triggered issuance of Certificate default/tls-nginx-ingress
$ echo | openssl s_client -connect 192.168.11.174.nip.io:443 2&amp;gt;/dev/null | openssl x509 -noout -dates
notBefore=Apr 15 03:32:44 2024 GMT
notAfter=Jul 14 03:32:44 2024 GMT
# 清除環境
$ kubectl delete -f ./ &amp;amp;&amp;amp; kubectl delete pod nginx
certificate.cert-manager.io &amp;#34;my-selfsigned-ca&amp;#34; deleted
issuer.cert-manager.io &amp;#34;my-ca-issuer&amp;#34; deleted
issuer.cert-manager.io &amp;#34;selfsigned-issuer&amp;#34; deleted
ingress.networking.k8s.io &amp;#34;tls-nginx-ingress&amp;#34; deleted
pod &amp;#34;nginx&amp;#34; deleted&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;流程圖解&lt;span class="hx:absolute hx:-mt-20" id="流程圖解"&gt;&lt;/span&gt;
&lt;a href="#%e6%b5%81%e7%a8%8b%e5%9c%96%e8%a7%a3" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;a
href="https://cert-manager.io/docs/usage/ingress/#inner-workings-diagram-for-developers"target="_blank" rel="noopener"&gt;https://cert-manager.io/docs/usage/ingress/#inner-workings-diagram-for-developers&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Set Static IP Address on RHEL 9 with nmcli</title><link>https://blog.kubeantony.com/archive/networking/set-static-ip-address-on-rhel-9-with-nmcli/</link><pubDate>Wed, 20 Mar 2024 05:18:14 +0800</pubDate><guid>https://blog.kubeantony.com/archive/networking/set-static-ip-address-on-rhel-9-with-nmcli/</guid><description>
&lt;style&gt;
.indent-title-1{
margin-left: 1em;
}
.indent-title-2{
margin-left: 2em;
}
.indent-title-3{
margin-left: 3em;
}
&lt;/style&gt;
&lt;h2&gt;Get the Interface Name&lt;span class="hx:absolute hx:-mt-20" id="get-the-interface-name"&gt;&lt;/span&gt;
&lt;a href="#get-the-interface-name" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class="indent-title-1"&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ sudo nmcli dev&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;nmcli - command-line tool for controlling NetworkManager&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;d[evice]，devices managed by NetworkManager&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;螢幕輸出 :&lt;/p&gt;
&lt;pre&gt;
DEVICE TYPE STATE CONNECTION
&lt;font color=red&gt;ens18&lt;/font&gt; ethernet connected &lt;font color=red&gt;ens18&lt;/font&gt;
lo loopback unmanaged --
&lt;/pre&gt;
&lt;/div&gt;
&lt;h2&gt;View Current Connection&lt;span class="hx:absolute hx:-mt-20" id="view-current-connection"&gt;&lt;/span&gt;
&lt;a href="#view-current-connection" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class="indent-title-1"&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ sudo nmcli con show&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;螢幕輸出 :&lt;/p&gt;
&lt;pre&gt;
NAME UUID TYPE DEVICE
&lt;font color=red&gt;ens18&lt;/font&gt; 5c5b3cd8-d3f4-46f7-b361-253541ee2d13 ethernet &lt;font color=red&gt;ens18&lt;/font&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h2&gt;設定網路&lt;span class="hx:absolute hx:-mt-20" id="設定網路"&gt;&lt;/span&gt;
&lt;a href="#%e8%a8%ad%e5%ae%9a%e7%b6%b2%e8%b7%af" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class="indent-title-1"&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ sudo nmcli con modify &amp;#39;ens18&amp;#39; \
ipv4.method manual \
ipv4.addresses 192.168.11.91/24 \
gw4 192.168.11.254 \
ipv4.dns 8.8.8.8&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;IP: 192.168.11.91
Netmask: 255.255.255.0
Gateway: 192.168.1.254
Dns Server: 8.8.8.8&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;h3&gt;新增 DNS Server&lt;span class="hx:absolute hx:-mt-20" id="新增-dns-server"&gt;&lt;/span&gt;
&lt;a href="#%e6%96%b0%e5%a2%9e-dns-server" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class="indent-title-1"&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ sudo nmcli connection modify &amp;#39;Wired connection 1&amp;#39; &amp;#43;ipv4.dns 8.8.8.8&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;重啟 NetworkManager 服務&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ sudo systemctl restart NetworkManager&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;啟動網路連線&lt;span class="hx:absolute hx:-mt-20" id="啟動網路連線"&gt;&lt;/span&gt;
&lt;a href="#%e5%95%9f%e5%8b%95%e7%b6%b2%e8%b7%af%e9%80%a3%e7%b7%9a" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class="indent-title-1"&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ sudo nmcli con up &amp;#39;ens18&amp;#39;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;設定系統重啟後自動連線&lt;span class="hx:absolute hx:-mt-20" id="設定系統重啟後自動連線"&gt;&lt;/span&gt;
&lt;a href="#%e8%a8%ad%e5%ae%9a%e7%b3%bb%e7%b5%b1%e9%87%8d%e5%95%9f%e5%be%8c%e8%87%aa%e5%8b%95%e9%80%a3%e7%b7%9a" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class="indent-title-1"&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ sudo nmcli con modify &amp;#39;ens18&amp;#39; connection.autoconnect yes&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;設定 Hostname&lt;span class="hx:absolute hx:-mt-20" id="設定-hostname"&gt;&lt;/span&gt;
&lt;a href="#%e8%a8%ad%e5%ae%9a-hostname" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class="indent-title-1"&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ sudo hostnamectl set-hostname &amp;lt;new-hostname&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;確認已更改 Hostname&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ sudo hostnamectl&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;關閉 IPv6&lt;span class="hx:absolute hx:-mt-20" id="關閉-ipv6"&gt;&lt;/span&gt;
&lt;a href="#%e9%97%9c%e9%96%89-ipv6" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class="indent-title-1"&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ sudo nmcli connection modify &amp;#39;Wired connection 1&amp;#39; ipv6.method &amp;#34;disabled&amp;#34;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;重啟 NetworkManager 服務&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ sudo systemctl restart NetworkManager&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;更新 Default Gateway 設定&lt;span class="hx:absolute hx:-mt-20" id="更新-default-gateway-設定"&gt;&lt;/span&gt;
&lt;a href="#%e6%9b%b4%e6%96%b0-default-gateway-%e8%a8%ad%e5%ae%9a" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class="indent-title-1"&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ sudo nmcli con modify ens18 ipv4.gateway 192.168.11.253
## Restart the network connection for changes to take effect.
$ sudo nmcli connection up ens18&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;參考資料&lt;span class="hx:absolute hx:-mt-20" id="參考資料"&gt;&lt;/span&gt;
&lt;a href="#%e5%8f%83%e8%80%83%e8%b3%87%e6%96%99" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a
href="https://www.linuxtechi.com/set-static-ip-address-on-rhel-9/"target="_blank" rel="noopener"&gt;How to Set Static IP Address on RHEL 9&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Linux Network Block Devices</title><link>https://blog.kubeantony.com/archive/networking/linux-network-block-devices/</link><pubDate>Wed, 20 Dec 2023 01:59:12 +0800</pubDate><guid>https://blog.kubeantony.com/archive/networking/linux-network-block-devices/</guid><description>
&lt;style&gt;
.indent-title-1{
margin-left: 1em;
}
.indent-title-2{
margin-left: 2em;
}
.indent-title-3{
margin-left: 3em;
}
&lt;/style&gt;
&lt;h2&gt;Preface&lt;span class="hx:absolute hx:-mt-20" id="preface"&gt;&lt;/span&gt;
&lt;a href="#preface" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class="indent-title-1"&gt;
&lt;p&gt;本篇文章會主要會介紹 Linux Network Block Devices 的架構和運作&lt;/p&gt;
&lt;p&gt;可以透過點擊以下目錄，選擇想看的內容，跳轉至特定章節&lt;/p&gt;
&lt;/div&gt;
&lt;h2&gt;What is Network block devices (NBD)?&lt;span class="hx:absolute hx:-mt-20" id="what-is-network-block-devices-nbd"&gt;&lt;/span&gt;
&lt;a href="#what-is-network-block-devices-nbd" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Network block devices (NBD) 是 client/server 架構，server 提供遠端儲存裝置或檔案，給 client 對應為本地裝置檔，可開機等。也可以格式化、modify or copy 整個分割。&lt;/p&gt;
&lt;p&gt;在 Client 主機將 NBD 編譯到核心（或作為模組）後，Linux 可以將遠端伺服器作為其區塊裝置之一。這樣，每當客戶端電腦要讀取 /dev/nb0 等資料時，它就會透過 TCP 向伺服器發送請求，伺服器會回覆讀取的資料。 這可用於磁碟空間較小的站點（甚至無磁碟）從另一台電腦借用磁碟空間。 與 NFS 不同的是，它可以放置任何檔案系統等。&lt;/p&gt;</description></item><item><title>Remove secondary IP with nmcli</title><link>https://blog.kubeantony.com/archive/networking/remove-secondary-ip-with-nmcli/</link><pubDate>Mon, 30 Oct 2023 08:33:54 +0800</pubDate><guid>https://blog.kubeantony.com/archive/networking/remove-secondary-ip-with-nmcli/</guid><description>
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;# nmcli con modify &amp;#34;eth0&amp;#34; ipv4.addresses &amp;#34;&amp;#34; ipv4.gateway &amp;#34;&amp;#34;
# nmcli con down eth0
Connection &amp;#39;eth0&amp;#39; successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
# nmcli con up eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
# ip a s eth0
2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:07:32:6f:6e:fe brd ff:ff:ff:ff:ff:ff
altname enp3s0
inet 192.168.50.203/24 brd 192.168.50.255 scope global dynamic noprefixroute eth0
valid_lft 86397sec preferred_lft 86397sec
inet6 fe80::207:32ff:fe6f:6efe/64 scope link noprefixroute
valid_lft forever preferred_lft forever
# sudo nmcli connection modify &amp;#39;eth0&amp;#39; ipv4.method manual ipv4.addresses 192.168.50.151/24 gw4 192.168.50.254 ipv4.dns 168.95.1.1 &amp;#43;ipv4.dns 192.168.50.254
# nmcli con down eth0
Connection &amp;#39;eth0&amp;#39; successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
# nmcli con up eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
# ip a s eth0
2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:07:32:6f:6e:fe brd ff:ff:ff:ff:ff:ff
altname enp3s0
inet 192.168.50.151/24 brd 192.168.50.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::207:32ff:fe6f:6efe/64 scope link noprefixroute
valid_lft forever preferred_lft forever&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;eth1&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ sudo nmcli connection modify &amp;#39;eth1&amp;#39; ipv4.method manual ipv4.addresses 192.168.1.172/24 gw4 192.168.1.1 ipv4.dns 8.8.8.8 &amp;#43;ipv4.dns 168.95.1.1&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Self-Signed SSL Certificates</title><link>https://blog.kubeantony.com/archive/networking/self-signed-ssl-certificates/</link><pubDate>Fri, 14 Apr 2023 05:26:22 +0800</pubDate><guid>https://blog.kubeantony.com/archive/networking/self-signed-ssl-certificates/</guid><description>
&lt;style&gt;
.indent-title-1{
margin-left: 1em;
&lt;/style&gt;
&lt;h1&gt;什麼是自簽憑證 （self-signed certificate）？&lt;/h1&gt;&lt;div class="indent-title-1"&gt;
&lt;p&gt;HTTPS 在網站安全性上有兩層作用，&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;訪客與網站之間的資料傳輸有經過加密，若中途攔截下來是無法被解讀的。&lt;/li&gt;
&lt;li&gt;網頁瀏覽器在建立加密連線前，會先檢查網站的 SSL 憑證是否為受信任的第三方機構所簽發。若有，瀏覽器會判定網站來源無虞，反之則會出現警示。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;自簽署（self-signed）的 SSL 憑證，&lt;strong&gt;為未經過公共信任的憑證授權中心（CA）的核可，自行利用工具(如 : OpenSSL)產生的憑證&lt;/strong&gt;。它一樣具有加密連線的效果，但訪客將需要忽略瀏覽器警示，才能夠開啟網站。&lt;/p&gt;
&lt;p&gt;簡單來說，這些自簽憑證是&lt;strong&gt;基於 X.509 憑證中使用的加密私鑰和公鑰對架構&lt;/strong&gt;。此外，自簽 SSL 憑證使用與其他付費 SSL/TLS 憑證相同的加密方法來加密相關的傳入和傳出數據。&lt;/p&gt;
&lt;p&gt;在發行過程中缺乏獨立驗證會產生額外的風險，這就是自簽憑證的問題。它們被認為對於公開面向的網站和應用程序來說是不安全的。&lt;/p&gt;
&lt;/div&gt;
&lt;h2&gt;用途&lt;span class="hx:absolute hx:-mt-20" id="用途"&gt;&lt;/span&gt;
&lt;a href="#%e7%94%a8%e9%80%94" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class="indent-title-1"&gt;
&lt;p&gt;雖然自簽憑證可能會有風險，但它們也有其用途。主要是因為它們&lt;strong&gt;不需要花費&lt;/strong&gt;，而且任何開發人員都可以輕鬆地申請使用。它們可以按照自己的時間表實現，&lt;strong&gt;通常用於內部測試環境或對外部用戶受限的 Web 伺服器&lt;/strong&gt;。&lt;/p&gt;
&lt;/div&gt;
&lt;h2&gt;風險&lt;span class="hx:absolute hx:-mt-20" id="風險"&gt;&lt;/span&gt;
&lt;a href="#%e9%a2%a8%e9%9a%aa" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class="indent-title-1"&gt;
&lt;p&gt;自簽憑證不需要在一定時間後過期或需要更新，這與 CA 憑證的要求不同。雖然這似乎很方便，但這也是這種選擇的主要問題之一，因為它們無法遵從針對發現的漏洞的安全更新，也無法滿足保障現代企業所需的憑證靈活性。因此，這種身份驗證方法很少被建議使用。&lt;/p&gt;
&lt;p&gt;此外，自簽憑證無法撤銷，如果憑證被遺忘或留在容易受到惡意攻擊的系統上，將暴露出所使用的加密方式。即使如此，一些 IT 部門仍然認為由授權中心發行的憑證的成本超過了額外驗證和支持減少的風險。&lt;/p&gt;
&lt;p&gt;使用自簽名 SSL 憑證會出現安全警告，讓網站訪客感到擔心和不安。這些警告會讓網站看起來可能被入侵，而且無法保障訪客的數據安全。訪客會傾向於避免這些網站，轉而去看沒有安全警告的競爭對手網站。&lt;/p&gt;
&lt;p&gt;可以理解的是，如果訪客的信任網頁瀏覽器告訴他們該網站可能缺乏適當的安全措施，他們將不太可能在該網站上共享任何個人或機密信息。使用自簽名憑證可能會被利用，其中一種流行的方法是中間人攻擊，讓透過 TLS/SSL 協議共享的數據被監視，讓訪客面臨身份盜用和系統入侵的風險。&lt;/p&gt;
&lt;p&gt;如果選擇使用這種類型的 SSL 憑證，您將處於孤立無援的狀態，因為您沒有受信任的憑證授權機構支持，也無法應用最新的加密方法，以確保數據、設備和應用程序的適當身份驗證和加密。&lt;/p&gt;
&lt;/div&gt;
&lt;h2&gt;What is &lt;font color=red&gt;C&lt;/font&gt;ertificate &lt;font color=red&gt;A&lt;/font&gt;uthority&lt;span class="hx:absolute hx:-mt-20" id="what-is-certificate-authority"&gt;&lt;/span&gt;
&lt;a href="#what-is-certificate-authority" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class="indent-title-1"&gt;
&lt;p&gt;在網路世界裏，當我們打開瀏覽器要訪問一個網站時，為了確保對方的身分，通常都會讓一個中間機構扮演認證的角色，這個角色就是所謂的數位憑證認證機構（Certificate Authority，CA），也可以被稱為「電子商務認證中心」、「電子商務認證授權機構」&lt;/p&gt;
&lt;p&gt;CA 最主要的工作，就是&lt;font size=4&gt;&lt;strong&gt;負責發放和管理數位憑證的權威機構，檢核公鑰合法性。&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;h2&gt;Self-Signed SSL Certificates: Basic Requirements&lt;span class="hx:absolute hx:-mt-20" id="self-signed-ssl-certificates-basic-requirements"&gt;&lt;/span&gt;
&lt;a href="#self-signed-ssl-certificates-basic-requirements" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;The basic requirements for local SSL hosting, and setting up self-signed SSL in general, are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A private key (&lt;code&gt;.pem&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;A CSR (Certificate Signing Request)&lt;/li&gt;
&lt;li&gt;A public certificate (usually &lt;code&gt;.crt&lt;/code&gt;, sometimes &lt;code&gt;.pemtoo&lt;/code&gt;)&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;The CSR is kind of intermediate step between the key and the cert (the CSR is signed by the key to become the cert, so in many cases it is temporarily created via a prompt). You can think of the cert as being derived from the key, via the CSR.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;💡 SSL cert pairs are often referred to with the X.509identifier; this is essentially the standard that is used for TLS/SSL, but it is used for other purposes as well.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;參考網站&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;&lt;a
href="https://sectigo.com/resource-library/what-is-a-self-signed-certificate"target="_blank" rel="noopener"&gt;What is a Self-Signed Certificate and How to Create One&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a
href="https://twnoc.net/support/Knowledgebase/Article/View/214/17"target="_blank" rel="noopener"&gt;什麼是自簽署（self-signed）憑證？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a
href="https://progressbar.tw/posts/98"target="_blank" rel="noopener"&gt;為何 HTTPS 憑證有貴有便宜還更可以免費？讓我們從 CA 原理開始講起。&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a
href="https://docs.joshuatz.com/cheatsheets/security/self-signed-ssl-certs/"target="_blank" rel="noopener"&gt;Joshua&amp;rsquo;s Docs - Self-Signed SSL Certificates / OpenSSL Cheatsheet and Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>網路基礎</title><link>https://blog.kubeantony.com/archive/networking/%E7%B6%B2%E8%B7%AF%E5%9F%BA%E7%A4%8E/</link><pubDate>Fri, 01 Jul 2022 09:10:00 +0800</pubDate><guid>https://blog.kubeantony.com/archive/networking/%E7%B6%B2%E8%B7%AF%E5%9F%BA%E7%A4%8E/</guid><description>
&lt;h2&gt;Ethernet(乙太網路)&lt;span class="hx:absolute hx:-mt-20" id="ethernet乙太網路"&gt;&lt;/span&gt;
&lt;a href="#ethernet%e4%b9%99%e5%a4%aa%e7%b6%b2%e8%b7%af" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;由網路卡，網路設備和網路線所組成
我們現在的電腦&lt;strong&gt;有線&lt;/strong&gt;網路設備，例：電腦主機上的埠、switch上的埠或是實體網路線，都是Ethernet的規格。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;port:中文為埠&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Switch 網路交換器&lt;span class="hx:absolute hx:-mt-20" id="switch-網路交換器"&gt;&lt;/span&gt;
&lt;a href="#switch-%e7%b6%b2%e8%b7%af%e4%ba%a4%e6%8f%9b%e5%99%a8" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;以學校教室的Switch為例，如下圖
&lt;img src="https://i.imgur.com/32P5Ns8.png" alt="" loading="lazy" /&gt;
這台switch是由ZYXEL公司賣的，它有48個孔，一台電腦有一個網路，用一條網路線連到它的孔，第二台電腦也有一條網路線連到它的第二個孔，所以可以有48台電腦可以連到48個孔，此時這48台電腦可以透過這台switch互相傳資料給對方&lt;/p&gt;
&lt;p&gt;switch有什麼功用？
&lt;img src="https://i.imgur.com/hzfl5d6.png" alt="" loading="lazy" /&gt;
可以讓多台電腦互相交換資料&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;在Ethernet這種網路下，電腦之間要溝通時候需要知道對方的MAC位址才能傳資料過去&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;什麼是MAC位置？
每一張網路卡都有一個MAC位址，全世界絕對不會有相同的MAC位址的網路卡或設備，&lt;strong&gt;MAC位址一律使用16進位&lt;/strong&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;16進位：0 ~ 9，A ~ F。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如何確定MAC(Media Access Control)位址?
在windows系統下，執行&lt;code&gt;ipconfig /all&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;C:\Users\ybean&amp;gt;ipconfig /all
...以上省略
乙太網路卡 乙太網路:
連線特定 DNS 尾碼 . . . . . . . . : mcu.edu.tw
描述 . . . . . . . . . . . . . . .: Intel(R) Ethernet Connection (7) I219-LM
實體位址 . . . . . . . . . . . . .: C8-D9-D2-04-57-3D
...以下省略&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;可以看到第三行的“實體位址”，就是MAC位址，以這台電腦為例：&lt;code&gt;C8-D9-D2-04-57-3D&lt;/code&gt;就是他的MAC位址。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;VMware 公司出廠的mac address 前3碼一定是
00-50-56
&lt;img src="https://i.imgur.com/BT52vf5.png" alt="" loading="lazy" /&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Protocol:電腦之間溝通的語言&lt;span class="hx:absolute hx:-mt-20" id="protocol電腦之間溝通的語言"&gt;&lt;/span&gt;
&lt;a href="#protocol%e9%9b%bb%e8%85%a6%e4%b9%8b%e9%96%93%e6%ba%9d%e9%80%9a%e7%9a%84%e8%aa%9e%e8%a8%80" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3&gt;ARP(Adress Resolution Protocol)通訊協定&lt;span class="hx:absolute hx:-mt-20" id="arpadress-resolution-protocol通訊協定"&gt;&lt;/span&gt;
&lt;a href="#arpadress-resolution-protocol%e9%80%9a%e8%a8%8a%e5%8d%94%e5%ae%9a" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;電腦跟電腦之間有很多的通訊協定/語言，就像人跟人之間有很多語言，下面介紹一下Adress Resolution Protocol，簡稱&lt;strong&gt;ARP&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;基本上，在 Ethernet 網路上傳送訊息，都必須以 Ethernet 封包格式封裝，來源位址與目的位址也都必須是 Ethernet Address 格式(48 bits)。但在 TCP/IP 網路上傳送訊息又都以 IP Address格式(32 bits)，那 Ethernet 與 IP 位址之間的轉換機制，則須仰賴 ARP 協定來達成。&lt;/p&gt;
&lt;p&gt;ARP運作方式圖如下：
&lt;img src="https://i.imgur.com/qQgldZz.png" alt="" loading="lazy" /&gt;
以上圖為例，假設今天Ａ電腦要透過 Ethernet 網路傳送訊息給 IP = 120.96.143.153的C電腦，首先第一步&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;會到Switch上面廣播：誰是120.96.143.153?
所有連在Switch上面的主機都會接收到廣播，並分解是否詢問自己，如果不是就不予理會而拋棄。&lt;/li&gt;
&lt;li&gt;如果是，則電腦 C（120.96.143.153）收到廣播，發現詢問自己則回應自己的ＩＰ位址（120.96.143.153）以及ＭＡＣ位址（C8-D9-D2-04-54-39）給發問者(120.96.143.151)，也就是Ａ電腦，此時Ａ電腦會儲存ARP廣播後收到的ＩＰ位址和ＭＡＣ位址，這樣下次就不用再問一次。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;2022/02/28陳松林老師上課的白板圖
&lt;img src="https://i.imgur.com/Z57Zt5a.jpg" alt="" loading="lazy" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ARP通訊協定主要功能
使用對方的ＩＰ位址取得對方的ＭＡＣ位址&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;什麼時候會啟用ＡＲＰ通訊協定？
&lt;code&gt;ping&lt;/code&gt;、http&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;有關ARP的參考資料來自&lt;a
href="http://www.tsnien.idv.tw/Manager_WebBook/chap4/4-2%20ARP%20%E5%8D%94%E5%AE%9A%E8%88%87%E5%88%86%E6%9E%90.html?fbclid=IwAR1XpIXxmIn6L-H6uEzV9vkeB2JFhG3qX4WAY5u8tBcP2OD5T9zYr0flCck"target="_blank" rel="noopener"&gt;ARP 協定與分析
&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;重點整理：&lt;span class="hx:absolute hx:-mt-20" id="重點整理"&gt;&lt;/span&gt;
&lt;a href="#%e9%87%8d%e9%bb%9e%e6%95%b4%e7%90%86" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;簡單來說&lt;strong&gt;Ethernet這種網路下，硬體層面電腦要互相做資料的溝通一定要透過MAC，沒得商量！&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;可是由於MAC的長度太長沒人背得起來，所以在電腦裡面還有一個給人看的IP位址，也就是TCP/IP網路他在運作的位址，這時候就需要一種通訊語言(protocol)，把我們看得懂的IP轉換成真正通訊的MAC，而這個通訊協定就是&lt;strong&gt;ARP&lt;/strong&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;IP address就是一台電腦在網路上的位址，而MAC address則是製造商指定給網路硬體（像是無線網卡、有線網卡）的獨特編碼。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;就好像終端機上面有貝殼程式;電腦上有cpu、memory、HardDisk和網路，上面可以跑os；Ethernet網路的硬體，網路卡、網路線和Switch，這個硬體要傳資料一定要透過MAC，硬體有了之後，上面跑的軟體是TCP/IP，這個system有一個protocol叫做ARP，他可以把對方的IP位址轉換成MAC位址。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;4/16更新ARP通訊協定&lt;span class="hx:absolute hx:-mt-20" id="416更新arp通訊協定"&gt;&lt;/span&gt;
&lt;a href="#416%e6%9b%b4%e6%96%b0arp%e9%80%9a%e8%a8%8a%e5%8d%94%e5%ae%9a" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://i.imgur.com/gSNDjAS.png" alt="" loading="lazy" /&gt;
當Host A要傳給Host B資料時， 第一步Host A主機會先檢查自己的ARP cache有沒有Host B的MAC位址，如果沒有紀錄，&lt;/p&gt;
&lt;p&gt;第一步
&lt;img src="https://i.imgur.com/TRHRqSB.png" alt="" loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;它就會進到第二部，在Switch上面廣播&amp;quot;ARP requset&amp;quot;，ARP requset裡面會有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Host A自己的IP address 和 MAC address&lt;/li&gt;
&lt;li&gt;Host B的IP address和MAC address，但因為這時候不知道，所以顯示都是00:00:00:00:00:00（ 00:00:00:00:00:00 ）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;第二步
&lt;img src="https://i.imgur.com/Ypjj64M.png" alt="" loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;第三部
Host B主機收到ARP request後，會在自己這邊的ARP cache紀錄Host A主機的MAC Address&lt;/p&gt;
&lt;p&gt;第四部
Host B主機會將自己的IP位址和MAC address位址傳給Host A
&lt;img src="https://i.imgur.com/AswRVpw.png" alt="" loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;第五部
Host A主機把收到的Host B 主機的IP位址和MAC address紀錄起來&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;鎖定網路卡
我們現在用線鯊，到這個網路卡上面，
選這張網路卡的原因是因為，他負責連接我們那兩台機器，
所以我們就可以用線鯊到這張網路卡上面，收取底層的封包
等下我們應該就會看到 ARP 的封包
封包會分成很多層
Ethernet 網路硬體上，送出去的資料區塊，我們稱它為封包
裡面的 mac address ，只要是一片 f ，就會造成那個硬體在
那個網路上面，把所有的封包送給所有電腦，這就是廣播的意思。
你看到這個 Ethernet 2 裡面的資訊，就是要來操控我們的硬體
軟體的部分在下面。&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h6&gt;tags: &lt;code&gt;網路基礎&lt;/code&gt;&lt;span class="hx:absolute hx:-mt-20" id="tags-網路基礎"&gt;&lt;/span&gt;
&lt;a href="#tags-%e7%b6%b2%e8%b7%af%e5%9f%ba%e7%a4%8e" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h6&gt;</description></item><item><title>`Ping` 命令的運作</title><link>https://blog.kubeantony.com/archive/networking/ping-%E5%91%BD%E4%BB%A4%E7%9A%84%E9%81%8B%E4%BD%9C/</link><pubDate>Wed, 22 Jun 2022 08:57:24 +0800</pubDate><guid>https://blog.kubeantony.com/archive/networking/ping-%E5%91%BD%E4%BB%A4%E7%9A%84%E9%81%8B%E4%BD%9C/</guid><description>
&lt;p&gt;&lt;strong&gt;2022/06/04 學習目標&lt;/strong&gt;&lt;/p&gt;
&lt;h1&gt;&lt;code&gt;Ping&lt;/code&gt; 命令的運作&lt;/h1&gt;&lt;p&gt;&lt;img src="https://i.imgur.com/ESgcm6l.png" alt="" loading="lazy" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mac 電腦 ip ：120.96.143.120/24&lt;/li&gt;
&lt;li&gt;Win10 電腦 ip ：120.96.143.250/25&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;font color=red&gt; &lt;strong&gt;&lt;code&gt;Ping&lt;/code&gt; 的icmp封包一定是有去有回。&lt;/strong&gt; &lt;/font&gt;
&lt;font color=red&gt; &lt;strong&gt;Ethernet 有線網路，機器之間要連線一定會會透過 Mac Address 來溝通。&lt;/strong&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;運作流程
當 Mac 電腦要 &lt;code&gt;ping 120.96.143.250&lt;/code&gt; (Win10 電腦)時，
在 Mac 電腦上會先做兩次 and 運算，&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先用自己的 ip 和自己的 subnet mask 做 and 運算&lt;/li&gt;
&lt;li&gt;再用對方的 ip 位址和自己的 subnet mask 做 and 運算
&lt;ul&gt;
&lt;li&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;第一次 | 第二次
120.96.143.120 | 120.96.143.250
255.255.255.0 &amp;amp; | 255.255.255.0 &amp;amp;
---------------- | ------------------
120.96.143.0 = 120.96.143.0 ---&amp;gt; 兩個 Network ID 一樣&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;如果 Network ID 一樣， 封包就會從 Mac 電腦透過 ARP 通訊協定傳到 win10 電腦。&lt;/li&gt;
&lt;li&gt;如果 Network ID 不同，封包就會送到 Default Gateway 。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;當 win10 電腦收到封包以後會回傳，此時在 win10 電腦也會做兩次 and 運算&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先用自己的 ip 和自己的 subnet mask 做 and 運算&lt;/li&gt;
&lt;li&gt;再用對方的 ip 位址和自己的 subnet mask 做 and 運算
&lt;ul&gt;
&lt;li&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;第一次 | 第二次
120.96.143.250 | 120.96.143.120
255.255.255.128 &amp;amp; | 255.255.255.128 &amp;amp;
---------------- | ------------------
120.96.143.128 != 120.96.143.0 ---&amp;gt; 兩個 Network ID 不一樣&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Network ID 相同就會透過 ARP 傳送封包給 Mac 電腦。&lt;/li&gt;
&lt;li&gt;如果 Network ID 不同，封包就會送到 Default Gateway 。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;小結論
&lt;font color=red&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;相同 Network ID 就會啟動 ARP 通訊協定將封包送達。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不同 Network ID 一定會將封包送達 Default Gateway。&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/font&gt;
&lt;p&gt;額外補充
&lt;font color=blue&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;mac address 的前三碼，同一品牌都會一樣，可用 mac address 直接辨認網卡。
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;00:23:05&lt;/code&gt;，J409電腦的 MAC address&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/font&gt;
&lt;hr&gt;
&lt;h1&gt;實體 Ethernet 有線網路建構&lt;/h1&gt;&lt;p&gt;&lt;font color=red&gt;&lt;strong&gt;定義 : 由1個或多個 Switch 負責連接一個區域內，所有的有線網路&lt;/strong&gt;。&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;提問 : 如果一間教室有 31 台電腦，要用幾台 Switch ( 一台 5 port ) 來建構教室網路?&lt;/p&gt;
&lt;p&gt;答 :&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/pKmZ3LX.png" alt="" loading="lazy" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果用這種串聯的方式建構教室網路，最左上角的 Switch 連到的電腦要傳資料給右下角連接 Switch 的電腦，會經過 10 台 Switch 才能將資料傳送到，太過耗時和耗資源，此方法不合適。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/2EqKbsM.png" alt="" loading="lazy" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;應該選擇 2 台主要的 Switch 互相連接 8 台 Switch ，再由 8 台 Switch 去連接教室所有的電腦，這樣電腦與電腦之間要傳資料，只需經過 4 台 Switch 。&lt;/li&gt;
&lt;li&gt;企業沒錢請人來做高架地板，將網路線埋到地下，然後買一台 48 port 的 Switch 就只能照上面的方法做。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/32P5Ns8.png" alt="" loading="lazy" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;銘傳大學比較有錢，兩間教室都做高架地板，將網路線埋到地下，然後用一個 48 port 的 Switch 將所有電腦的有線網路，通通連接在一起。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1&gt;Routing Table&lt;/h1&gt;&lt;p&gt;&lt;img src="https://i.imgur.com/RCCGVf4.png" alt="" loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;ip_forward 永久開啟&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;net.ipv4.ip_forward = 1&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee -a /etc/sysctl.conf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;免重啟立即生效指令&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo sysctl -p&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;開啟封包轉送後，再&lt;/p&gt;
&lt;p&gt;新增 Routing Table&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ sudo route add -net $destination netmask $SubnetMask gw $GWIP
# -net -&amp;gt; 目的地 network ID
# netmask -&amp;gt; 目的地子網路遮罩
# gw -&amp;gt; gateway &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;以上指令只要重新開機就會重置&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;永久修改 Routing Table&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ sudo nano /etc/local.d/route_set.start
#!/bin/sh
route add -net $destination netmask $SubnetMask gw $GWIP
## 賦予執行權限
$ sudo chmod &amp;#43;x /etc/local.d/route_set.start
## 啟用開機執行檔功能
$ sudo rc-update add local
##　重新開機
$ sudo reboot&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;font color=red&gt;要記得安裝 bash !!!&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;練習&lt;/p&gt;
&lt;p&gt;當 IP 位址尾數 11 的電腦要&lt;code&gt; ping 192.168.55.21&lt;/code&gt; 可以通時，要做以下設定&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;## 在他的 Alpine Linux 上先開啟封包轉送
$ echo &amp;#39;net.ipv4.ip_forward = 1&amp;#39; | sudo tee -a /etc/sysctl.conf
## 免重啟立即生效 ip_forward
$ sudo sysctl -p
## 新增 Routing Table
$ sudo route add -net 192.168.55.0 netmask 255.255.255.0 gw 192.168.55.254&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;而 IP 位址尾數 21 的電腦也要做以下設定&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;## 在他的 Alpine Linux 上先開啟封包轉送
$ echo &amp;#39;net.ipv4.ip_forward = 1&amp;#39; | sudo tee -a /etc/sysctl.conf
## 免重啟立即生效 ip_forward
$ sudo sysctl -p
## 新增 Routing Table
$ sudo route add -net 192.168.66.0 netmask 255.255.255.0 gw 192.168.66.254/25&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;兩者都做完設定後，就可以在 IP 位址尾數 11 的電腦&lt;code&gt; ping 192.168.55.21&lt;/code&gt; 囉 ~&lt;/p&gt;
&lt;h6&gt;tags: &lt;code&gt;網路基礎&lt;/code&gt;&lt;span class="hx:absolute hx:-mt-20" id="tags-網路基礎"&gt;&lt;/span&gt;
&lt;a href="#tags-%e7%b6%b2%e8%b7%af%e5%9f%ba%e7%a4%8e" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h6&gt;</description></item><item><title>VMWare Player 的網路模式</title><link>https://blog.kubeantony.com/archive/networking/vmware-player-%E7%9A%84%E7%B6%B2%E8%B7%AF%E6%A8%A1%E5%BC%8F/</link><pubDate>Sat, 04 Jun 2022 11:45:16 +0800</pubDate><guid>https://blog.kubeantony.com/archive/networking/vmware-player-%E7%9A%84%E7%B6%B2%E8%B7%AF%E6%A8%A1%E5%BC%8F/</guid><description>
&lt;h2&gt;Bridge 網路模式&lt;span class="hx:absolute hx:-mt-20" id="bridge-網路模式"&gt;&lt;/span&gt;
&lt;a href="#bridge-%e7%b6%b2%e8%b7%af%e6%a8%a1%e5%bc%8f" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://i.imgur.com/6ac6SPN.png" alt="" loading="lazy" /&gt;
在Bridge網路模式下，我們的VM會透過bridge虛擬橋接器，連到實體機器的網卡上網
代表虛擬機器所連接的網路和windows的實體電腦在同一個網路&lt;/p&gt;
&lt;h2&gt;Host-Only&lt;span class="hx:absolute hx:-mt-20" id="host-only"&gt;&lt;/span&gt;
&lt;a href="#host-only" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://i.imgur.com/yUO3ewe.png" alt="" loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;在Host only 網路模式下，我們的VM無法上網，只能跟相同Network ID的VM互連，如果想連到不同Network ID的網路，就必須在VM設定 routing 或 NAT 的服務&lt;/p&gt;
&lt;h2&gt;NAT&lt;span class="hx:absolute hx:-mt-20" id="nat"&gt;&lt;/span&gt;
&lt;a href="#nat" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://i.imgur.com/NrzJ0i6.png" alt="" loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;封包偽裝（IP masquerade）：可以將VM的私有 IP（內部IP）改變成真實 IP（外部 IP）再傳送到網際網路，使網路上的人無法得知私有網路的 IP 分配情形而增加網路安全性。&lt;/p&gt;
&lt;h6&gt;tags: &lt;code&gt;網路基礎&lt;/code&gt;&lt;span class="hx:absolute hx:-mt-20" id="tags-網路基礎"&gt;&lt;/span&gt;
&lt;a href="#tags-%e7%b6%b2%e8%b7%af%e5%9f%ba%e7%a4%8e" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h6&gt;</description></item><item><title>TCP/IP 通訊協定</title><link>https://blog.kubeantony.com/archive/networking/tcp-ip-%E9%80%9A%E8%A8%8A%E5%8D%94%E5%AE%9A/</link><pubDate>Sat, 04 Jun 2022 11:45:04 +0800</pubDate><guid>https://blog.kubeantony.com/archive/networking/tcp-ip-%E9%80%9A%E8%A8%8A%E5%8D%94%E5%AE%9A/</guid><description>
&lt;p&gt;&lt;strong&gt;目錄&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;準備環境&lt;span class="hx:absolute hx:-mt-20" id="準備環境"&gt;&lt;/span&gt;
&lt;a href="#%e6%ba%96%e5%82%99%e7%92%b0%e5%a2%83" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3&gt;下載WiresharkPortable64_3.6.3.paf.exe&lt;span class="hx:absolute hx:-mt-20" id="下載wiresharkportable64_363pafexe"&gt;&lt;/span&gt;
&lt;a href="#%e4%b8%8b%e8%bc%89wiresharkportable64_363pafexe" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;a
href="https://www.wireshark.org/"target="_blank" rel="noopener"&gt;下載連結，請點我&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/CFrwWbt.png" alt="" loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;Wire 電線
shark 鯊魚
Wireshark 中文簡稱：線鯊&lt;/p&gt;
&lt;h3&gt;學習筆記本&lt;span class="hx:absolute hx:-mt-20" id="學習筆記本"&gt;&lt;/span&gt;
&lt;a href="#%e5%ad%b8%e7%bf%92%e7%ad%86%e8%a8%98%e6%9c%ac" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;a
href="https://tbala.net/x/mcse2008/SESE-04IP-200807.html"target="_blank" rel="noopener"&gt;TCP/IP學習筆記本&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a
href="https://linux.vbird.org/linux_server/centos6/0110network_basic.php#whatisnetwork_what"target="_blank" rel="noopener"&gt;鳥哥基礎網路概念&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Ethernet 乙太網路&lt;span class="hx:absolute hx:-mt-20" id="ethernet-乙太網路"&gt;&lt;/span&gt;
&lt;a href="#ethernet-%e4%b9%99%e5%a4%aa%e7%b6%b2%e8%b7%af" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;電腦的網路系統分兩大類&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有線網路
&lt;ul&gt;
&lt;li&gt;硬體規格：Ethernet
&lt;ul&gt;
&lt;li&gt;組成：乙太網路卡、網路連接設備和網路線
&lt;ul&gt;
&lt;li&gt;網路卡：重點在速度&lt;/li&gt;
&lt;li&gt;網路連接設備：讓很多電腦能夠互通傳遞資訊&lt;/li&gt;
&lt;li&gt;網路線：傳遞資訊&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;IP Address
&lt;ul&gt;
&lt;li&gt;格式：由 Network ID ＋ Host ID 組成
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Network ID&lt;/th&gt;
&lt;th&gt;Host ID&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://i.imgur.com/UPO328v.png" alt="" loading="lazy" /&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;li&gt;Network ID 由IP 位址和子網路遮罩做and運算得出
因為Router負責幫我們在網路上傳遞訊息，為了不為難Router，於是我們把IP位址頭一組數字相同的IP放在一起，這樣Router就只要記同一堆電腦的第一組數字位置，而不需要記錄到每一台電腦的IP Address。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;==&lt;strong&gt;電腦之間要溝通除了軟體層的IP Address還要有硬體層的Mac Address&lt;/strong&gt;==&lt;/li&gt;
&lt;li&gt;Mac Address
&lt;ul&gt;
&lt;li&gt;定義：實體網路卡的出廠代號（16進位）
&lt;img src="https://i.imgur.com/1kyQjHZ.png" alt="" loading="lazy" /&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;C:\Users\ybean&amp;gt;ipconfig /all
乙太網路卡 乙太網路:
...
實體位址 . . . . . . . . . . . . .: C8-D9-D2-04-57-3D
...
乙太網路卡 VMware Network Adapter VMnet1:
...
實體位址 . . . . . . . . . . . . .: 00-50-56-C0-00-01
...&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;VMware的Mac Address開頭一定是&lt;code&gt;00-50-56&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;電腦跟電腦之間溝通要透過Mac address，但是很難記怎麼辦？
答：靠ARP 通訊協定&lt;/li&gt;
&lt;li&gt;功能：根據IP Address，幫我們把資料傳給對方&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ARP 通訊協定（Address Resolution Protocal）
&lt;ul&gt;
&lt;li&gt;他負責把IP位址轉換成Mac Address&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;無線網路
&lt;ul&gt;
&lt;li&gt;辦公室、學校和手機會使用&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;一個網段要怎麼配置IP位址&lt;span class="hx:absolute hx:-mt-20" id="一個網段要怎麼配置ip位址"&gt;&lt;/span&gt;
&lt;a href="#%e4%b8%80%e5%80%8b%e7%b6%b2%e6%ae%b5%e8%a6%81%e6%80%8e%e9%ba%bc%e9%85%8d%e7%bd%aeip%e4%bd%8d%e5%9d%80" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;口訣：去頭去尾中間切一半，前十給IP Server，後面5個給網路設備（Switch不會有），剩下的前面手動設定IP位址，後面的給DHCP Server配發&lt;/p&gt;
&lt;p&gt;以下用J409教室的網段當範例：&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;120.96.143.128 Network ID
120.96.143.129 ~ 120.96.143.138 IP Server
120.96.143.139 ~ 120.96.143.190 (手動設定IP)
120.96.143.191 ~ 120.96.143.249 (DHCP Server)
120.96.143.250 ~ 120.96.143.254 Network Device (Router)
120.96.143.255 Broadcast&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;設定固定 IP 位址(Alpine linux)&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ sudo nano /etc/network/interfaces
auto lo
iface lo inet loopback
#auto eth0
#iface eth0 inet dhcp
auto eth0 (auto 的意思是作業系統一起來，就啟動這張網卡)
iface eth0 inet static （iface 全名就是interface ，static 代表固定ＩＰ）
address 120.96.143.180/25
gateway 120.96.143.254 （Router的ＩＰ位址就是120.96.143.254）&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;重啟網路服務&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;$ sudo /etc/init.d/networking restart&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;在區域網路下，電腦的IP位址在相同的Network ID，就可以透過網路設備Switch互相溝通，Network ID的算法為IP位址跟遮罩作AND運算
TCP/IP屬於軟體層的標準，真正硬體層(Ethernet)在溝通靠的是Mac address
&lt;img src="https://i.imgur.com/zkqiVoL.png" alt="" loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;當我們電腦要上網到不同的Network id，電腦就要透過Router的IP位址，才能出去上網，而Router的IP位址就是Deafault Gateway，Router出去以後會透過海底電纜，到其他台Router傳送封包，再到另一個Router，到達我們的8.8.8.8這台主機，&lt;/p&gt;
&lt;p&gt;Router(路由器)是走海底電纜傳輸至國外，會有多種路徑規劃選擇 而經過周轉的Router越少傳送速度越快，最少的就是最佳路徑&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/OzmbBqi.png" alt="" loading="lazy" /&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;網路等級&lt;span class="hx:absolute hx:-mt-20" id="網路等級"&gt;&lt;/span&gt;
&lt;a href="#%e7%b6%b2%e8%b7%af%e7%ad%89%e7%b4%9a" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;公有 IP&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;IP等級&lt;/th&gt;
&lt;th&gt;最低位址&lt;/th&gt;
&lt;th&gt;~&lt;/th&gt;
&lt;th&gt;最高位址&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;0.0.0.0&lt;/td&gt;
&lt;td&gt;~&lt;/td&gt;
&lt;td&gt;127.255.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;128.0.0.0&lt;/td&gt;
&lt;td&gt;~&lt;/td&gt;
&lt;td&gt;191.255.255.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;192.0.0.0&lt;/td&gt;
&lt;td&gt;~&lt;/td&gt;
&lt;td&gt;223.255.255.2555&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;私有 IP
&lt;img src="https://i.imgur.com/sm7GQyi.png" alt="" loading="lazy" /&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Address Resolution Protocol (ARP 通訊協定)&lt;span class="hx:absolute hx:-mt-20" id="address-resolution-protocol-arp-通訊協定"&gt;&lt;/span&gt;
&lt;a href="#address-resolution-protocol-arp-%e9%80%9a%e8%a8%8a%e5%8d%94%e5%ae%9a" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://i.imgur.com/gSNDjAS.png" alt="" loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/TRHRqSB.png" alt="" loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;當Host A要傳給Host B資料時， Host A主機會先檢查自己的ARP cache（存放在記憶體裡）有沒有Host B的MAC位址，如果沒有紀錄，&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/Ypjj64M.png" alt="" loading="lazy" /&gt;
它就會進到第二部，在Switch上面廣播&amp;quot;ARP requset&amp;quot;的封包&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ARP requset 內容：
&lt;ul&gt;
&lt;li&gt;Host A自己的IP address 和 MAC address&lt;/li&gt;
&lt;li&gt;Host B的IP Address和MAC Address，但因為這時候不知道Mac Address，所以顯示都是00:00:00:00:00:00（ 00:00:00:00:00:00 ）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;廣播的意思：連接在Switch上面的所有電腦都會收到 (同一個Network ID 上面)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;第三部
Host B主機收到ARP request後，會在自己這邊的ARP cache紀錄Host A主機的IP Address 和MAC Address&lt;/p&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/AswRVpw.png" alt="" loading="lazy" /&gt;
Host B主機會將自己的IP位址和MAC address位址傳給Host A&lt;/p&gt;
&lt;p&gt;第五部
Host A主機把收到的Host B 主機的IP位址和MAC address紀錄起來&lt;/p&gt;
&lt;h3&gt;ARP實戰&lt;span class="hx:absolute hx:-mt-20" id="arp實戰"&gt;&lt;/span&gt;
&lt;a href="#arp%e5%af%a6%e6%88%b0" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;登入m1虛擬機&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;C:\Users\ybean&amp;gt;ssh bigred@192.168.61.4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;arp 命令在任何linux作業系統都是內建的&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;bigred@m1:~$ arp --help
BusyBox v1.34.1 (2022-04-04 10:19:27 UTC) multi-call binary.
Usage: arp
[-vn] [-H HWTYPE] [-i IF] -a [HOSTNAME]
[-v] [-i IF] -d HOSTNAME [pub]
[-v] [-H HWTYPE] [-i IF] -s HOSTNAME HWADDR [temp]
[-v] [-H HWTYPE] [-i IF] -s HOSTNAME HWADDR [netmask MASK] pub
[-v] [-H HWTYPE] [-i IF] -Ds HOSTNAME IFACE [netmask MASK] pub
Manipulate ARP cache
-a Display (all) hosts
-d Delete ARP entry
-s Set new entry
-v Verbose
-n Don&amp;#39;t resolve names
-i IF Network interface
-D Read HWADDR from IFACE
-A,-p AF Protocol family
-H HWTYPE Hardware address type&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;先檢查本機的ARP Cache紀錄&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;bigred@m1:~$ arp -a
x2 (192.168.61.1) at 00:50:56:c0:00:08 [ether] on eth0
x3 (192.168.61.2) at 00:50:56:e0:f3:4a [ether] on eth0&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;ping 另一台主機&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;bigred@m1:~$ ping 192.168.61.6
PING 192.168.61.6 (192.168.61.6) 56(84) bytes of data.
64 bytes from 192.168.61.6: icmp_seq=1 ttl=64 time=0.479 ms
64 bytes from 192.168.61.6: icmp_seq=2 ttl=64 time=0.382 ms
64 bytes from 192.168.61.6: icmp_seq=3 ttl=64 time=0.438 ms
64 bytes from 192.168.61.6: icmp_seq=4 ttl=64 time=0.833 ms
--- 192.168.61.6 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3108ms
rtt min/avg/max/mdev = 0.382/0.533/0.833/0.176 ms&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;再檢查本機的ARP紀錄&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;bigred@m1:~$ arp -a
x2 (192.168.61.1) at 00:50:56:c0:00:08 [ether] on eth0
w1 (192.168.61.6) at 00:50:56:ab:00:06 [ether] on eth0
x3 (192.168.61.2) at 00:50:56:e0:f3:4a [ether] on eth0&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;我們再ping 另一台沒記錄過Mac Address的主機&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;bigred@m1:~$ ping 192.168.61.7
PING 192.168.61.7 (192.168.61.7) 56(84) bytes of data.
64 bytes from 192.168.61.7: icmp_seq=1 ttl=64 time=0.562 ms
64 bytes from 192.168.61.7: icmp_seq=2 ttl=64 time=0.786 ms
64 bytes from 192.168.61.7: icmp_seq=3 ttl=64 time=0.465 ms
64 bytes from 192.168.61.7: icmp_seq=4 ttl=64 time=0.949 ms
--- 192.168.61.7 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3092ms
rtt min/avg/max/mdev = 0.465/0.690/0.949/0.189 ms&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;快點兩下，啟動WiresharkPortable64_3.6.3.paf.exe，找到VMnet8那張網卡，因為他負責連接我們的那3台電腦
&lt;img src="https://i.imgur.com/AKxciuT.png" alt="" loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;可以看第二步的廣播封包
&lt;img src="https://i.imgur.com/pghFiWE.png" alt="" loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;硬體層：
broadcast 它的Mac Address都是f&lt;/p&gt;
&lt;p&gt;軟體層：
&lt;img src="https://i.imgur.com/AZyYs8z.png" alt="" loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;第四部的reply
&lt;img src="https://i.imgur.com/3bmA1FA.png" alt="" loading="lazy" /&gt;&lt;/p&gt;
&lt;h3&gt;ARP 攻擊&lt;span class="hx:absolute hx:-mt-20" id="arp-攻擊"&gt;&lt;/span&gt;
&lt;a href="#arp-%e6%94%bb%e6%93%8a" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;ARP Cache 的儲存時間（10年前的規格）
Dynamic ARP cache entries update persist for 2-20 minutes depending on the system.&lt;br&gt;
Windows 2003 Server = 10 minutes&lt;br&gt;
Windows 2000 professional/Server = 10 minutes&lt;br&gt;
Windows XP = 2 minutes&lt;br&gt;
Solaris = 5 minutes&lt;/p&gt;
&lt;p&gt;提問：ARP Cache的時間要設長還設短
答：在內網的話，要設長，原因是因為在內網不可能一直換網路卡，這樣可以讓ARP的封包降到最低，甚至不會產生。&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;bigred@m1:~$ arp -a
w2 (192.168.61.7) at 00:50:56:ab:00:07 [ether] on eth0
x2 (192.168.61.1) at 00:50:56:c0:00:08 [ether] on eth0
w1 (192.168.61.6) at 00:50:56:ab:00:06 [ether] on eth0
x3 (192.168.61.2) at 00:50:56:e0:f3:4a [ether] on eth0
bigred@m1:~$ sudo arp -d w2
bigred@m1:~$ sudo arp -d w1
bigred@m1:~$ sudo arp -d x2
bigred@m1:~$ sudo arp -d x3
bigred@m1:~$ arp -a
x2 (192.168.61.1) at 00:50:56:c0:00:08 [ether] on eth0 ## 不理他&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4&gt;Add static entry to ARP table&lt;span class="hx:absolute hx:-mt-20" id="add-static-entry-to-arp-table"&gt;&lt;/span&gt;
&lt;a href="#add-static-entry-to-arp-table" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;添加靜態的Mac address，不會因為時間到就消失。&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;arp -s &amp;lt;ip address&amp;gt; &amp;lt;mac address&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;範例：
將&lt;code&gt;192.168.61.6&lt;/code&gt;對應的Mac Address設成&lt;code&gt;00:22:33:44:55:66&lt;/code&gt;&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;bigred@m1:~$ sudo arp -s 192.168.61.6 00:22:33:44:55:66
bigred@m1:~$ arp -a
x2 (192.168.61.1) at 00:50:56:c0:00:08 [ether] on eth0
w1 (192.168.61.6) at 00:22:33:44:55:66 [ether] PERM on eth0
x3 (192.168.61.2) at 00:50:56:e0:f3:4a [ether] on eth0&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;發現ping 不到&lt;code&gt;192.168.61.6&lt;/code&gt;這台電腦&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;bigred@m1:~$ ping 192.168.61.6
PING 192.168.61.6 (192.168.61.6) 56(84) bytes of data.
^C
--- 192.168.61.6 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3161ms&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4&gt;ping 外網&lt;span class="hx:absolute hx:-mt-20" id="ping-外網"&gt;&lt;/span&gt;
&lt;a href="#ping-%e5%a4%96%e7%b6%b2" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;ping 8.8.8.8&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;bigred@m1:~$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=3.13 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=128 time=4.01 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=128 time=2.99 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=128 time=3.05 ms
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 2.985/3.293/4.009/0.416 ms&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;發現ping 不通啦！！！&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;bigred@m1:~$ ping 192.168.61.6
PING 192.168.61.6 (192.168.61.6) 56(84) bytes of data.
^C
--- 192.168.61.6 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3161m&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;提問：為何&lt;code&gt;ping 8.8.8.8&lt;/code&gt;，我的主機裡面沒有它的Mac Address？&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;bigred@m1:~$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=3.13 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=128 time=4.01 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=128 time=2.99 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=128 time=3.05 ms
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 2.985/3.293/4.009/0.416 ms&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;檢查真的沒有8.8.8.8的Mac Address，為什麼！？&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;bigred@m1:~$ arp -a
x2 (192.168.61.1) at 00:50:56:c0:00:08 [ether] on eth0
w1 (192.168.61.6) at 00:22:33:44:55:66 [ether] PERM on eth0
x3 (192.168.61.2) at 00:50:56:e0:f3:4a [ether] on eth0&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;答：因為8.8.8.8的Network ID和我們的主機不同，所以不會觸發ARP通訊協定，但是IP要出去外網之前，一定會經過Default Gateway這個大門，所以我們這台主機的ARP Cache裡面會紀錄Default Gateway的Mac Address&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;bigred@m1:~$ arp -a
x2 (192.168.61.1) at 00:50:56:c0:00:08 [ether] on eth0
w1 (192.168.61.6) at 00:22:33:44:55:66 [ether] PERM on eth0
## 下面這行就是Default Gateway的IP位址和它的Mac Address
x3 (192.168.61.2) at 00:50:56:e0:f3:4a [ether] on eth0 &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;以後設定機器時，在開機程序裡面埋一個bash script，設定靜態的Mac address，不但可以降低ARP 封包的產生，還可以避免被攻擊。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;IP Header 重要欄位&lt;span class="hx:absolute hx:-mt-20" id="ip-header-重要欄位"&gt;&lt;/span&gt;
&lt;a href="#ip-header-%e9%87%8d%e8%a6%81%e6%ac%84%e4%bd%8d" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Source IP address&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Destination IP address&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Time-to-Live&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Time to live&lt;/li&gt;
&lt;li&gt;IP 的封包，只要經過一個Router，他的數字（TTL）就會減一 ，數字為0時，封包就不會再傳送&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;提問：ping 這個命令有沒有設定TTL
答：&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;bigred@m1:~$ ping --help
...
-t &amp;lt;ttl&amp;gt; define time to live
...&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;自行設定TTL = 3，代表只能跳躍3個Router&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;bigred@m1:~$ ping -t 3 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 120.96.98.121 icmp_seq=1 Time to live exceeded
From 120.96.98.121 icmp_seq=2 Time to live exceeded
From 120.96.98.121 icmp_seq=3 Time to live exceeded
From 120.96.98.121 icmp_seq=4 Time to live exceeded
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 0 received, &amp;#43;4 errors, 100% packet loss, time 3074ms&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;由以下可知，到&lt;code&gt;8.8.8.8&lt;/code&gt;這台電腦，要經過12台Router&lt;/p&gt;
&lt;div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"&gt;
&lt;div&gt;&lt;pre&gt;&lt;code&gt;bigred@m1:~$ ping -t 12 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=3.16 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=128 time=4.07 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=128 time=4.14 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=128 time=3.76 ms
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 3.160/3.783/4.142/0.387 ms&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"&gt;
&lt;button
class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
title="複製程式碼"
aria-label="複製程式碼"
data-copied-label="已複製！"
&gt;
&lt;div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"&gt;&lt;/div&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2&gt;ICMP&lt;span class="hx:absolute hx:-mt-20" id="icmp"&gt;&lt;/span&gt;
&lt;a href="#icmp" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;ICMP這個封包，所有Router都會送，但通常這個功能會關閉，因為會造成網路癱瘓，但是企業內網的ICMP回應的功能可能還有打開。&lt;/p&gt;
&lt;h1&gt;UDP&lt;/h1&gt;&lt;p&gt;提問：TCP與UDP的差別？
答：UDP 通訊協定的特性，丟了就跑，代表不會跟對方建立connection，也就是說對方如果沒有回應他就會再丟一次封包，Domain NameServer在使用，也就是名稱在查詢時，透過UDP，把名稱在查詢的封包丟給DNS Server，如果DNS Server沒有回應，我們的機器就會再送一次封包出去，總共會丟3次，如果都失敗，就判定連不到對方的DNS Server。&lt;/p&gt;
&lt;p&gt;RIP 通訊協定和 SNMP 網路設備在監控用的通訊協定 都是通過UDP通訊協定，送出去有回應就繼續作業，如果沒有回應就繼續送，累積3次沒有回應就爆錯。&lt;/p&gt;
&lt;p&gt;TCP通訊協定有一個必要條件一定要發生：叫做Handshake握手，意思就是說我要跟對方做連接一定會跟對方握手，也就代表等等資料再傳送時，一定保證可以送到對方手上。&lt;/p&gt;
&lt;p&gt;SMTP 電子郵件的通訊協定一定會透過TCP/IP再傳
TCP/IP 在傳遞時一定很耗資源，因為他要handshake（握手）後，才會傳資料。
UDP就是我丟給你就等你，有回應我就做，沒有回應就丟3次。&lt;/p&gt;
&lt;p&gt;SSH通訊協定一定要走TCP
RDP(Remote Desktop Protocol)通訊協定一定要走TCP
VNC也是走TCP&lt;/p&gt;
&lt;p&gt;NTP時間同步的通訊協定走UDP&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;Socket&lt;/h1&gt;&lt;p&gt;TCP上面有6萬多個插座，以SMTP這個網路服務，他會把他的整個資料溝通會插在第25port，也就是第25個插座，FTP插在21 port，&lt;/p&gt;
&lt;p&gt;定義：
一個應用的通訊協定，一定會找TCP或UDP上面的插座，插進去，代表服務會透過TCP/IP做操作，講TCP一定會經過IP這層，有IP這層一定會透過實體層，以上就叫做Socket。
Socket要讓他通一定要提供IP Adress和port Number&lt;/p&gt;
&lt;p&gt;分類：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;TCP Socket，只要服務插在上面，代表資料一定會送達&lt;/li&gt;
&lt;li&gt;UDP Socket，DNS 插在第53個插孔&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以數學公式表示：
TCP/UDP Socket = Port + IP&lt;/p&gt;
&lt;h2&gt;Unix domain socket&lt;span class="hx:absolute hx:-mt-20" id="unix-domain-socket"&gt;&lt;/span&gt;
&lt;a href="#unix-domain-socket" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;a
href="https://en.wikipedia.org/wiki/Unix_domain_socket"target="_blank" rel="noopener"&gt;Unix domain Socket&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;IPC Socket
&lt;ul&gt;
&lt;li&gt;運作方式一定在同一台機器&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h6&gt;tags: &lt;code&gt;網路基礎&lt;/code&gt;&lt;span class="hx:absolute hx:-mt-20" id="tags-網路基礎"&gt;&lt;/span&gt;
&lt;a href="#tags-%e7%b6%b2%e8%b7%af%e5%9f%ba%e7%a4%8e" class="subheading-anchor" aria-label="此章節的永久連結"&gt;&lt;/a&gt;&lt;/h6&gt;</description></item></channel></rss>