利用 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

在 Linux 上安裝 DHCP 伺服器

我時常用 Linux 系統當作路由器,理由很簡單,因為虛擬機需要。 但想了想,既然都這樣做了,何不寫下部落格呢? 那麼… 開始安裝吧! 安裝 isc-dhcp-server 首先,我們需要先安裝一個套件,名為 isc-dhcp-server sudo apt install isc-dhcp-server 設置 DHCP Server 安裝完成後,我們需要編輯設定檔 /etc/dhcp/dhcpd.conf 範例大概像這樣 option domain-name "network.steveyi.net"; # 網域名稱 option domain-name-servers 8.8.8.8; # DNS Server default-lease-time 600; # 預設租賃時間 max-lease-time 3600; # 最大租賃時間 authoritative; # 網段,這邊分配 /24 使用 subnet 10.121.210.0 netmask 255.255.255.0 { range 10.121.210.1 10.121.210.253; option subnet-mask 255.255.255.0; option routers 10.121.210.254; } 接著,我們需要編輯發 DHCP 包的網卡 /etc/default/isc-dhcp-server 最後,輸入 service isc-dhcp-server restart 這樣就完成囉~

April 11, 2021 · SteveYi

將任何 Tweet 置頂到自己的 Twitter 上

在今天,我滑 Twitter 時,發現了一篇有趣的推文… 於是我馬上就跟 @edisonlee55 分享這個趣事 很明顯的發現,這個人將別人的推文轉推過來,並置頂在自己的個人頁面 這看似很正常,但事實上「我們只能置頂自己發的推文」 當我們點擊我們 retweet 的推文,我們沒有發現「置頂推文」的選項 那麼… 當然要一點偏方了! 跟 @edisonlee55 進行快速的討論後,我們開始了實驗 首先,我們將瀏覽器的開發者工具打開 理論上,點擊右鍵就可以看見了! 接著,我們先進入 Network 的地方 在對我們想要進行 pin 的推文按個愛心 好那,我們看到了一個 HTTP POST 到 create.json 我們也看到了一個 “id”,這個 ID 則是 Tweet 的 ID。先將他複製下來,等等會用到 接著,我們還需要複製 Cookie, x-csrf-token, Bearer Token(Authorization) 等值,我們可以在 Header 上看到 注意!請記得要保存好,不要隨意洩露這些值 接著,我們打開 Postman,選擇 POST URL 則為https://twitter.com/i/api/1.1/account/pin_tweet.json?tweet_mode=extended&id=<id> 將 Header 與 Authorization 都設定好了後,我們點擊 Send 我在第一次測試的時候,因為我沒有先 retweet 推文,所以系統 return 這個給我 完成 retweet 後,我們再執行一次 POST。成功啦! 接著,我們打開網站,刷新頁面。 果然看到成功 pin 起來了

April 7, 2021 · SteveYi

在 iptables 上設定 NAT

不久之前,小易將家裡的一台電腦裝上了 Ubuntu 20.04,並把它當成了軟路由在使用。 但小易發現了一件事情,就是電腦沒辦法上網RRR! 我們透過 mtr 追蹤路由後發現… 路由送到 Gateway 就出不去了,於是我們在路由器上抓包發現 我們的內部 IP 發給 ISP 了。但沒有回程。 如果 ISP 沒有設定好的話,就容易導致 IP Spoofing。 所以我們必須要在這邊設定好封包轉換(NAT),才可以上網! 在 iptables 上的指令為這樣(注意:eth1 是公網網卡名稱) iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE 另外,如果只想允許某段網段轉換為 NAT,則可以寫成 iptables -t nat -A POSTROUTING -s 10.121.210.0/24 -o eth1 -j MASQUERADE

March 8, 2021 · SteveYi

使用 checkm8 Activation Lock 免費版,繞過 iOS 啟用鎖定

作者:蘿蔔 本文章同步發佈於「蘿蔔ㄉ部落格」 [注意] 請勿用於商業或是非法用途。 這個軟體不是筆者所撰寫,如果使用上產生爭議,筆者恕不負責。 繞過啟用鎖定需要使用到Mac電腦。 筆者使用的是自己的設備和自己的帳號做測試。(iPhone 7 Plus, iOS 14.3) 有時候因為某些原因,將iPhone 重置或更新時沒有關閉「尋找」,重新設定時會被要求Apple ID密碼來解除啟用鎖定,忘記Apple ID的密碼的話iPhone只能當作零件機或是一塊無用的磚頭。因此我們可能會需要繞過這道鎖定,至少還能當作遊戲機或是隨身聽使用。 筆者寫這篇文章時最新的iOS版本是iOS 14.4,官方標示支援的版本從12.4~14.4。< 官方標示支援的設備是: iPhone SE (第一代) iPhone 6 iPhone 6S iPhone 7, 7 Plus iPhone 8, 8 Plus iPhone X iPad Air (1, 2) iPad Mini (2, 3, 4) iPad (5, 6, 7) iPad Pro (1, 2) iPad Pro (9.7 10.5 in.) [注意] 部分功能在繞過啟用鎖定後會暫時失效 (包括但不限於下列): 行動通訊(無法撥打或接聽電話,也無法使用行動數據上網) iCloud雲端同步功能(也包含「接續互通」等需要帳號的功能) 不建議安裝軟體更新 重開機(會跳出啟用鎖定頁面,要重新進行操作) 如果繞過後想起密碼,可以重開機,在啟用鎖定的地方輸入密碼,以上限制會被立馬破除 可以使用的功能(包括但不限於下列): Wi-Fi上網 藍芽功能 (AirPods可用) iTunes Store...

March 4, 2021 · 蘿蔔

將部落格從 WordPress 轉移到 Hugo

從 2018 年註冊了第一個網域 steveyigame.com 後,我也嘗試架設了第一個 WordPress 部落格。 當時也正好學習使用 Linux 系統,順帶了解到 雲端硬碟(像是 Google Drive) 及 檔案伺服器 的差異 為什麼要換成 Hugo?WordPress 不好嗎? 我認為沒有好或不好這件事,一切憑個人感覺。 但由於逐漸學習到後端,會覺得說「如果可以靜態網頁就靜態,不要讓網站伺服器處理東西」。 PS. 其實 WordPress 也可以優化到很好,但我純粹不想優化 XD。 另外,由於 WordPress 是動態網頁,且必須要與資料庫進行連接。一般用戶訪問網站時,網站會先到資料庫抓資料處理後再回應給用戶。 我不想維護資料庫 R 效能對比 我們來看看更換前跟更換後的具體差別好了。 WordPress 載入速度 Hugo 載入速度 很明顯的可以看到,WordPress 網站初次載入需要花費 4.11 秒,而 Hugo 網站只需 1.41 秒,差異非常大。 關於 Hugo 由於 Hugo 是靜態網頁,所以想到可以將其部署在 GitHub,並搭配 GitHub Pages 使用。 於是我開了兩個 Repositories,一個用來放網站的原始檔案。 當然,如果你想要開在同一個 Repo 下,利用不同的 branch 也是可以的! Hugo 原始碼 產生後的網站原始碼 安裝 Hugo 首先,我們先在電腦中裝好 Hugo Hugo 官方提供了以下系統預先編譯版,這代表這些系統不需要自行編譯!...

February 10, 2021 · SteveYi