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

解決 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 囉!...

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

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

在 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 伺服器囉!...

在 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 這樣就完成囉~...

將任何 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 起來了...

在 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 ...