在 Arista 上設定 OOB 網路

最近部署了一台 Arista 交換器。由於這台交換機上做了 L3 Routing,所以沒辦法直接將 OOB 網路設定預設路由。 為了解決這個問題,我們建立了一個 VRF 來隔離 OOB 網路。 如何設定 首先,我們先定義一個新的 VRF 及 rd vrf definition OOB rd 10:1 接著我們設定 MGMT 網卡 interface Management1 vrf forwarding OOB ip address 10.39.0.2/24 設定靜態路由,並啟用 VRF 的 Routing 功能 ip route vrf OOB 0.0.0.0/0 10.39.0.1 ip routing vrf OOB 接著可以輸入 show ip route vrf OOB 來查看設定的路由 arista#show ip route vrf OOB VRF name: OOB Codes: C - connected, S - static, K - kernel, O - OSPF, IA - OSPF inter area, E1 - OSPF external type 1, E2 - OSPF external type 2, N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type2, B I - iBGP, B E - eBGP, R - RIP, I L1 - ISIS level 1, I L2 - ISIS level 2, O3 - OSPFv3, A B - BGP Aggregate, A O - OSPF Summary, NG - Nexthop Group Static Route, V - VXLAN Control Service Gateway of last resort: S 0....

July 5, 2022 · SteveYi

在 Golang build 時,遇到動態連結庫遺失的問題

Hi! 最近在寫一些 Golang 的專案。在使用 Docker build image 時,發現了一些問題。 問題點 Docker image build 完後,執行 docker run 時出現以下錯誤 standard_init_linux.go:211: exec user process caused "no such file or directory" 原因 以我目前在寫的專案 URL-Shortener 為例。 在這個專案中,我用到了 go-sqlite3 這個 Library。 我們可以注意到 go-sqlite3 是以 C programming 來寫的。當我們在 build 時,需要使用到 GCC 及 CGO 來構建。所以我們也需要將 CGO_ENABLED 的變量設為 1,使其可以進行動態編譯。 執行指令就像這樣 $ CGO_ENABLED=1 CC=gcc go build -o /app/app main.go Mini Image 開兩個 Container 第一個 Container 執行 docker build 進行 build。 將 build 完成的 binary file 複製到第二個 Container。 在第二個 Container 中安裝相關套件,打包。...

April 7, 2022 · SteveYi

在 Linux 上實現虛擬 WAN 多撥 PPPoE

前幾天,剛好想起來家中網路的 ISP(中華電信),可以透過撥號取得 7 個浮動的 Public IPv4 Address,於是就來實現他了! 環境 以下資訊是透過 bench.sh 的 Script 所產生的 ---------------------------------------------------------------------- CPU Model : Intel(R) Celeron(R) CPU 3865U @ 1.80GHz CPU Cores : 2 CPU Frequency : 1278.526 MHz CPU Cache : 2048 KB Total Disk : 14.9 GB (6.6 GB Used) Total Mem : 1910 MB (256 MB Used) Total Swap : 2047 MB (0 MB Used) System uptime : 3 days, 18 hour 30 min Load average : 0....

July 19, 2021 · SteveYi

在 Linux 中開啟 VRF 模組

這幾天在裝新的路由器,由於是使用服務商提供的 Image,所以發現 VRF 模組沒有成功加載。 root@eu-router:/opt/tunnel# modprobe vrf modprobe: FATAL: Module vrf not found in directory /lib/modules/5.4.0-72-generic 我的 Linux Kernel 為 5.4.0-72-generic,這邊安裝一下擴充包。 apt install linux-modules-extra-`uname -r` 接著,在加載一下 VRF,沒有任何回應就代表成功囉! modprobe vrf Virtual Routing and Forwarding (VRF)

July 6, 2021 · SteveYi

利用 AS-SET 建立過濾器

最近,為了跟一些新入坑的朋友們建立 BGP Peer,所以也順便來教他們怎麼使用 AS-SET 過濾。 什麼是 AS-SET AS-SET 是一個可以新增 ASN 及 AS-SET 的 Object。 通常用於過濾透過 BGP 協議所交換的路由。(如 BGP Peer Neighbor、Internet Exchange Route Server 等) 我們通常透過 Whois 及遞迴的方式,來查詢這個 AS-SET 中的所有 Route Object。 舉例來說,我們今天要透過 AS-STEVEYI 對某一個 BGP Peer 進行過濾。 首先,先透過 whois 查詢這個 AS-SET 中有哪些 ASN,然後我們在繼續查詢這個 AS-SET 中的其他 AS-SET(這邊的為 AS-STEVEYI-C ) $ steveyiyo@steveyi-MBP ~ % whois -r AS-STEVEYI as-set: AS-STEVEYI descr: SteveYi Network Service members: AS17413 members: AS60614 members: AS141173 members: AS209557 remarks: --- DownStream --- members: AS-STEVEYI-C remarks: ---------- tech-c: YT1698-RIPE admin-c: YT1698-RIPE mnt-by: STEVEYI-MNT created: 2020-09-10T18:57:46Z last-modified: 2021-03-26T15:31:21Z source: RIPE 接著,我們可以透過 RADB 查詢對應的 Route Object 紀錄...

June 27, 2021 · SteveYi

利用 FRRouting 設定策略路由

前幾天,我為了調整我實驗室內的網路架構,讓其可以全部走 VPN 出去,並且可以進入到我的大內網,所以在研究策略路由 (PBR) 我本來是使用 VRF(三層交換)來隔離我的網路(其實這樣應該算另類的策略路由了吧X),但這樣會導致我沒辦法把我的 Service 監聽在 VRF Interface 內。 導致… 我就不能架設 DoH 在路由器上了 後來,我發現我可以利用其他方式做到 PBR,而不需要透過 VRF 來隔離 PBR 是什麼? PBR 全名 Policy Based Routing,是一種可以透過修改下一跳 IP Address 來達到控制路由或封包方向的一種技術 在 Linux 下怎麼做到? Linux 下其實有許多種方式可以做到,比如說透過 Routing Daemon 或是 ip link 及 ip rule 的指令去做到 # 比如說我想要讓 10.121.210.0/24 這條路由放在一張表裡面 ip rule add from 10.121.210.0/24 lookup TW # 並讓其網路走 VPN Interface 出去 ip route add 0.0.0.0/0 via 10.121.210.0/24 dev VPN-JP table TW 但這樣的話,我每次都開機時都要執行一次 Script。...

May 18, 2021 · SteveYi

利用 OSPF 及 BGP 來最佳化大內網

一直一來,我跟朋友間有一個類似於 DN42 的大內網。 我們使用 VPN 建立 BGP 互聯,並將這個大內網部署於我各個區域的設備使用。 P.S. 目前共有 46 條路由左右 而我目前則是在一個點與其他人建立 BGP Peer,並使用 Static Route 處理內部路由 e.g. 10.121.23.242 的設備想要到我的內網下的某台設備 10.121.210.3 比如說,我在核心路由器上指一條 10.121.210.0/24 到我放在學校的路由器上。 而在學校的路由器上,我則與核心路由器建立了 BGP Peer,來收我們的大內網全表。 這樣確實可以讓我們的網路動,但是當核心路由器故障時,其他人則無法進到我的內網。 於是我想到,我可以使用 OSPF 及 iBGP 去解決單一核心路由器故障的問題 什麼是 OSPF? OSPF 全名 Open Shortest Path First,是一種 IGP 協議,使用 Link State Routing 算法。 IETF 中的 IGP 開發團隊在 1988 年提出 RFC 2328,用於 IPv4 的路由協定。 在當時,由於 RIP 單一路徑最多只能支 15 個網路設備,所以 RIP 路由協定在當時並不適合用於大型的網路環境,所以才會研發 IGRP 路由協定,並且同時開發出 OSPF 協定。 目前 OSPF 分為兩種版本:...

May 16, 2021 · SteveYi

解決 Ubuntu 上 53 Port 占用問題

最近為了在路由器上安裝 DoH Client 並架設 DNS Server 給內網機器使用,發現 Ubuntu 常常會使用 53 Port。 經過檢查一輪後,發現是 systemd-resolve 所導致的,於是找到這些方法去關閉他! 在此之前,如果大家發現 53 Port 被使用,可以先下以下指令來查看是哪個進程去用的。 sudo netstat -pna | grep 53 那接著,我們來關閉一下 systemd-resolve 使用 53 Port 的問題吧 首先,我們編輯 /etc/systemd/resolved.conf 文件 sudo vi /etc/systemd/resolved.conf 我們將 DNSStubListener 取消註解,並修改為 No [Resolve] #DNS= #FallbackDNS= #Domains= #LLMNR=no #MulticastDNS=no #DNSSEC=no #DNSOverTLS=no #Cache=yes DNSStubListener=no #ReadEtcHosts=yes 接著,在輸入這行指令 sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf 最後,我們先將 systemd-resolved 服務重啟 sudo systemctl restart systemd-resolved 接著,我們就可以使用 53 Port 囉!

May 12, 2021 · SteveYi

在 VSCode 中將 .tmpl 檔案設為 HTML 語法

前陣子開始學習 Golang 時,使用了 .tmpl 作為網頁模板 但發現,這樣不會像 HTML 檔案一樣,無法自動處理格式。 P.S. 裝了相關外掛也只會處理 .html 文件 在查詢了一下相關文件後,發現可以修改使用者的設置來處理 那這邊有兩種做法,我們來介紹一下 第一種是直接修改 settings.json 文件,在最下面新增以下程式碼 "files.associations": { "*.tmpl": "html" } 第二種則是進入設定,點擊文字編輯器,文件。 並新增 *.tmpl 為 html 最終結果就會像這樣啦!

April 25, 2021 · SteveYi

在 Linux 系統上自架 Minecraft 伺服器

最近剛好有朋友也想在 Linux 上架設 Minecraft Server,那這邊就稍微寫一下架設過程好了! 環境 在這次的環境中,我使用了以下作業系統及套件 Ubuntu 20.04 Server byobu openjdk-8-jdk spigot 1.16.5 更新系統 及 安裝套件 更新系統,我們輸入以下指令 apt update -y apt upgrade -y 接著,安裝 Java 及 Byobu apt install openjdk-8-jdk byobu -y 部署 Minecraft 伺服器 首先,我們建立資料夾,來放置伺服器檔案 mkdir /data mkdir /data/minecraft cd /data/minecraft 接著,我們下載 Minecraft Server 核心 這邊使用的是 Spigot 1.16.5,我們直接使用 wget 來下載到伺服器裡面 wget https://cdn.getbukkit.org/spigot/spigot-1.16.5.jar mv spigot-1.16.5.jar server.jar 完成之後,我們寫一個啟動腳本 java -Xmx2048M -Xms1024M -jar server.jar nogui 就開啟你的 Minecraft 伺服器囉!

April 12, 2021 · SteveYi