

Ubuntu 下面搞 Multi-home 架構
source link: https://blog.gslin.org/archives/2022/09/04/10877/ubuntu-%e4%b8%8b%e9%9d%a2%e6%90%9e-multi-home-%e6%9e%b6%e6%a7%8b/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Ubuntu 下面搞 Multi-home 架構
家裡的 internet 架構大概是這樣 (省略過其他裝置):

一邊是 HiNet 的線路直接接中華的數據機 (modem),這段是用 PPPoE 撥接;另一邊是第四台網路 (北都),另外上面寫的 Switch 應該是 IP 分享器 (一台 ASUS 的機子,刷 DD-WRT),作圖的時候寫錯了...
最後是電腦的部份,我的桌機是跑 Ubuntu,用兩張個不同的實體線路 (界面分別是中華的 enp4s0
與第四台的 enp6s0f0
) 接到了這兩個不同的網段上面。
打算跑 source routing 的架構來善用兩邊的頻寬,想法上面大概是這樣拆解:
- 機器本身有個
192.168.3.x
的 static ip。 - 針對 source ip 是
192.168.3.x
的封包,預設會往192.168.3.254
這台分享器丟,然後 NAT 出去。 - 用 Squid 在本機上跑一個 proxy server,指定 source ip 是
192.168.3.x
。
有了這樣的架構,我就可以在瀏覽器上面就透過 SwitchyOmega 這類的套件,指定某些網段要走第四台的頻寬出去了。
另外可以指定 http proxy 的服務也可以透過這個方法往第四台的線路連出去。
其中第二點需要把 source ip 是 192.168.3.x
的封包丟到 192.168.3.254
這段需要一些設定,首先是需要設定一個獨立的 routing table,我是在 /etc/iproute2/rt_tables
裡面放:
2 second
然後因為我是透過 NetworkManager 在管理網路界面的,我希望在 enp6s0f0
啟動時自動設定這個 source routing 邏輯,所以我在 /etc/NetworkManager/dispatcher.d/99-enp6s0f0
這邊寫了:
#!/bin/bash interface=$1 event=$2 if [[ "$interface" == "enp6s0f0" && "$event" == "up" ]]; then ip route add default via 192.168.3.254 table second ip rule from 192.168.3.0/24 table second fi
然後要記得把這個檔案 chmod 755
讓他可以執行。
接著是 Squid 的設定,在 /etc/squid/squid.conf
裡面這樣寫:
# http_access allow all # access_log /var/log/squid/access.log squid cache deny all cache_dir null /tmp cache_log /dev/null cache_mem 8 MB dns_v4_first on forwarded_for off http_port 3128 tcp_outgoing_address 192.168.3.x
其中最後的 192.168.3.x
換成自己的固定 IP address。這邊因為 traffic 基本上都是 HTTPS 了,也不需要開 cache,就這樣設定...
這邊比較特別的是 dns_v4_first
的設計,這個是讓 Squid 儘量用 IPv4 的位置連線。這是因為北都的網路沒有提供 IPv6 位置,所以如果網站的 DNS 如果有 IPv6 位置的話就會從 HiNet 這邊的 IPv6 出去了...
另外 ping 與 MTR 之類的工具不會動在這這樣的架構下是正常的,因為這些工具會自己組合 raw packet 丟,不是透過 Linux 的 network stack 處理,所以不會被我們指定的 ip rule
解析。網路上看起來是有方法可以 mitigate,但我就先放著了...
這樣看起來還算堪用,先這樣用一陣子看看... 先前是在 Raspberry Pi 上面跑個 proxy server 導流量,但會受限於 Raspberry Pi 的硬體限制,效能上面就普普通通,現在直接用桌機拼看看...
Related
玩玩文字轉圖片的 min(DALL·E)
幾個禮拜前看到「Show HN: I stripped DALL·E Mini to its bare essentials and converted it to Torch (github.com/kuprel)」這個東西,有訓練好的 model 可以直接玩文字轉圖片,GitHub 專案在「min(DALL·E) is a fast, minimal port of DALL·E Mini to PyTorch」這邊可以取得。 因為這是包裝過的版本,裝起來 & 跑起來都很簡單,但沒想到桌機的 1080 Ti 還是跑不動,只能用 CPU 硬扛了,速度上當然是比官網上面列出來用 GPU 的那些慢很多,但至少能跑起來玩看看。 首先是拿官方的句子來玩看看,第一次跑會需要下載 model (會放到我們指定的 pretrained 目錄下): #!/usr/bin/env python3 from min_dalle import MinDalle…
July 24, 2022In "Computer"
用 pfSense 接 AWS Direct Connect (Public VIF) 的方式
公司在菲律賓的辦公室因為常常會需要連到 AWS 傳輸影音資料 (新加坡,ap-southeast-1),但發現偶而會很不順,傳輸的時候會很卡,所以後來決定租了一條專線用 AWS Direct Connect 接進去。 不過因為跑在 AWS 上面的服務是掛在 public network 上,而不是 private ip 的網段,所以就不能用 IPsec site-to-site 打通收工,而需要搞 BGP routing,然後就卡關卡的亂七八糟 XD 首先是文書作業的部份,因為 AWS 對於 public network peering 需要證明你要交換的 IP address 是你自己的 (或是有被授權),這部份在 web console 上建立完 Public VIF 後會進入審核階段,接下來就要開 support ticket 提供 LOA-CFA 文件後才能繼續設定,我們這邊是從 ISP 申請 AWS Direct Connect…
October 27, 2020In "AWS"
Distributed Key-Value Database
這篇是因為在 PIXNET 內講了 n 次,決定寫成文字,至少之後新人進來可以說「就看這篇」,避免整套系統都需要重新講一次。 對了,補充一下,PIXNET 還是有缺人,參考「缺人找人」這篇的內容,如果有想問的細節,可以寫信問我。 資料庫 在 RDBMS 提供了很多而且很豐富的操作方式,但當資料量愈來愈大時,會遇到單台機器的網路頻寬有限以及空間有限。這時候一定得走向多台的架構。 Replication 最容易解決的情況是「讀取的 query 比寫入的 query 多」,可以用 database replication 解決,這也是 Web 1.0 網站常見的解法之一 (另外一種常見的解法是使用靜態檔案,或是 reverse proxy cache),同步將資料複製到多台。 Memcached 接下來會發現當 slave 過多時會造成每台記憶體內重複 cache 相同的元素,也就是說,有二十台 slave,每台都有 SELECT * FROM `user` WHERE `name` = 'gslin' 的結果其實很浪費資源。不過這個問題可以用 memcached 或是 hash selection 解決。 Sharding 在…
July 25, 2009In "Computer"
Author Gea-Suan LinPosted on September 4, 2022Categories Computer, Murmuring, Network, Software, WWWTags address, bandwidth, home, ip, linux, multi, network, ubuntu
Leave a Reply
Your email address will not be published. Required fields are marked *
Comment *
Name *
Email *
Website
Notify me of follow-up comments by email.
Notify me of new posts by email.
To respond on your own website, enter the URL of your response which should contain a link to this post's permalink URL. Your response will then appear (possibly after moderation) on this page. Want to update or remove your response? Update or delete your post and re-enter your post's URL again. (Learn More)
Post navigation
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK