色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何優化去程的路由而保留原有的回程路由

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 作者:馬哥Linux運維 ? 2022-09-22 09:55 ? 次閱讀

方案二個人感覺是一個更好的配置方案,并且其中的 wireguard 配置方式也在方案一中使用,步驟更簡潔明確一些。所以推薦沒有耐心看完的同學直接看方案二。

奇怪的環境產生奇怪的需求——現在有一臺機器去程只有移動能夠直連,電信和聯通都會繞日走 ntt(tnt),一到了晚上就會產生劇烈的抖動以及嚴重丟包,那么是是否有辦法去優化一下呢?使用一臺移動網絡的機器作為中轉是一個方法,但是這樣的話,所有的流量都會經過這臺中轉的機器,這臺機器的速度成為了這個網絡中的瓶頸,而且流量也會加倍消耗。既然我們只是去程繞路,那么是否有辦法只優化去程的路由而保留原有的回程路由呢?在實際的互聯網中“非對稱路由”非常常見,即A 到 B 和 B 到 A 走了不同的路徑,而我們要想實現這個效果則需要先建立一個虛擬的網絡,然后再在這個網絡中配置路由,我這里使用了 wireguard 作為建立虛擬內網的工具。

三臺機器上的非對稱路由

環境準備

在這個實驗中使用了三臺機器 :

本地機器 A wireguard 網內 ip 為 192.168.51.5 169.254.1.5

去程不錯但是帶寬較小的機器 B 192.168.51.1 169.254.1.1

去程繞路但是回程不繞且帶寬較大的機器 C 192.168.51.2 169.254.1.2

需要實現的效果是 A 訪問 C 路徑為 A->B->C->A

在安裝好 wireguard 后需要生成密鑰且開啟包轉發 :

$aptinstallwireguardwireguard-tools
$wggenkey|teeprivatekey|wgpubkey>publickey

$echo"net.ipv4.ip_forward=1">>/etc/sysctl.conf
$echo"net.ipv6.conf.default.forwarding=1">>/etc/sysctl.conf
$echo"net.ipv6.conf.all.forwarding=1">>/etc/sysctl.conf
$sysctl-p

兩兩之間建立連接

下面直接貼一下三臺機器的 wireguard 配置,注意一點 需要設置 Table=off,即禁止 wireguard 直接修改路由表 , 且這里使用的是鏈路本地地址建立的連接。另外,三臺機器彼此之間要兩兩連接 (對應單獨的一個配置文件), 也就是說需要自己寫 6 個配置文件

節點 A 與節點 B 配置文件 :

[Interface]
PrivateKey=
ListenPort=27000
PostUp=ipaddradd169.254.1.5/32peer169.254.1.1/32dev%i
PostDown=ipaddrdel169.254.1.5/32peer169.254.1.1/32dev%i
Table=off
#B
[Peer]
PublicKey=
AllowedIPs=0.0.0.0/0
Endpoint=
PersistentKeepalive=10

節點 A 與節點 C 配置文件 :

[Interface]
PrivateKey=
ListenPort=27001
PostUp=ipaddradd169.254.1.5/32peer169.254.1.2/32dev%i
PostDown=ipaddrdel169.254.1.5/32peer169.254.1.2/32dev%i
Table=off
#C
[Peer]
PublicKey=
AllowedIPs=0.0.0.0/0
Endpoint=
PersistentKeepalive=10

節點 B 與節點 A 配置文件 :

[Interface]
PrivateKey=
ListenPort=27000
PostUp=ipaddradd169.254.1.1/32peer169.254.1.5/32dev%i
PostDown=ipaddrdel169.254.1.1/32peer169.254.1.5/32dev%i
Table=off
#A
[Peer]
PublicKey=
AllowedIPs=0.0.0.0/0

節點 B 與節點 C 配置文件 :

[Interface]
PrivateKey=
ListenPort=26002
PostUp=ipaddradd169.254.1.1/32peer169.254.1.2/32dev%i
PostDown=ipaddrdel169.254.1.1/32peer169.254.1.2/32dev%i
Table=off
#C
[Peer]
PublicKey=
AllowedIPs=0.0.0.0/0
Endpoint=

節點 C 與節點 A 配置文件 :

[Interface]
PrivateKey=
ListenPort=27001
PostUp=ipaddradd169.254.1.2/32peer169.254.1.5/32dev%i
PostDown=ipaddrdel169.254.1.2/32peer169.254.1.5/32dev%i
Table=off
#A
[Peer]
PublicKey=
AllowedIPs=0.0.0.0/0

節點 C 與節點 B 配置文件 :

[Interface]
PrivateKey=
ListenPort=26002
PostUp=ipaddradd169.254.1.2/32peer169.254.1.1/32dev%i
PostDown=ipaddrdel169.254.1.2/32peer169.254.1.1/32dev%i
Table=off
#thk
[Peer]
PublicKey=
AllowedIPs=0.0.0.0/0
Endpoint=

ip 分配與靜態路由

在建立了兩兩之間的連接之后,我們還需要在每臺機器上創建一個 dummy 網卡 (也可以寫到 postup 里面),用來獲取到發給自己的包。

以機器 A 為例,BC 上也要進行同樣的操作 (記得改 ip)

#iplinkdeldummy
$iplinkadddummytypedummy
$ipaddradd192.168.50.5/32devdummy
$iplinksetdummyup

此時 192.168.50.5(A) 到 192.168.50.2(C) 是還沒有路由的,不過我們希望去程經過節點 B,那么我們在 A 上設置靜態路由 :

$iprouteadd192.168.51.2/32dev[AB之間連接對應的wireguard接口名]
#或者iprouteadd192.168.51.2/32via169.254.1.1

然后還需要在節點 B 上設置到 C 的靜態路由 :

$iprouteadd192.168.51.2/32dev[BC之間連接對應的wireguard接口]
#或者iprouteadd192.168.51.2/32via169.254.1.2

此時,在 A 上 pingC,在 B 上抓包,我們便能得到如下結果 :

08b53b46-39bb-11ed-9e49-dac502259ad0.pngPING C

在 B 上只能看見單向的數據流,而 A 是可以得到回應的,再在 C 上抓包看看 :

C 上分別查看兩個接口 B-C 與 C-A 的接口

08c0e98c-39bb-11ed-9e49-dac502259ad0.pngB-C 08d0f408-39bb-11ed-9e49-dac502259ad0.pngC-A

可以發現一點,實際上 B 作為路由進行轉發時,源 ip 是什么是無所謂的,只需要有目的 ip 即可,而目的 ip 的路由方式通過靜態路由指定了,那么在 C 上則會收到來自于 A 的鏈路本地地址 (169.254.1.5) 的包,而 C 與 A 直接連接,且 wireguard 創建了到 169.254.1.5 的連接,所以 C 的響應是可以不經過 B 直接走到 A 的。這樣就實現了一個非對稱的路由。現在的設置下,A 主動訪問 C 時會經過 B,C 還沒辦法主動的連接 A,因為還沒有設置 C 到 A 的靜態路由,我們可以重復一遍前面的步驟,在 C 上與 B 上指定到 A 的靜態路由,也可以直接讓 C 訪問 A 而不經過 A。不過由于該需求中我只需要 A 能夠主動訪問到 C 即可,所以不再進行這些設置。

為什么使用了鏈路本地地址

為什么在配置文件中使用了 169 開頭的地址,而不是直接用 192 開頭的地址建立連接并參與后續的路由設置呢?因為(至少是在我這種配置方式下),ip addr add xxx peer xxx 建立點對點連接時,會自動添加一條路由規則,會和我們后續添加的手動路由沖突。所以我只能退一步,使用另一個地址來建立點對點連接,然后用新的地址來設置靜態路由。wireguard 工作在網絡層,大概不支持不設置 ip 直接通過 mac 來連接 ?

只用兩臺機器實現非對稱路由

上一節實現了三臺機器組建的網絡的非對稱路由,那么能否更進一步,借助現有的“流量轉發”服務,實現兩臺機器建立非對稱路由呢?這樣我們便不再需要第三臺服務器轉發去程,且優質線路在流量轉發服務中也常見一些,且由于只有去程走了轉發,實際上是花不了多少錢的。

個人測試下來,這個方案也很容易實現。以本地機器 A 與遠程機器 C 為例,每臺機器上都要設置兩個 wireguard 接口,分別對應通過端口轉發建立的 wireguard 以及直接連接建立的 wireguard。

命名如下 :

a1 本地對應的通過流量轉發建立的 wireguard 連接的接口 169.254.2.1 192.168.51.3

a2 本地對應的通過直接連接建立的 wireguard 連接的接口 169.254.2.2 192.168.51.3

c1 遠程對應的通過流量轉發建立的 wireguard 連接接口 169.254.2.3 192.168.51.2

c2 遠程對應的通過直接連接建立的 wireguard 連接接口 169.254.2.4 192.168.51.2

配置文件如下,注意這里沒有用ip addr add peer的命令,而完全采用靜態路由來實現,也不再需要 dummy 設備,而是直接使用了后面需要用的 ip。對,沒寫錯,其實并沒有規定一個 ip 只能分配給一個接口,只需要我們后面靜態路由別寫錯就好,上一節采用三臺服務器的方案也可以這樣的配置形式,而不是用 dummy 接口。

a1 配置

[Interface]
PrivateKey=
Address=192.168.51.3/32
PostUp=iprouteadd192.168.51.2/32dev%i
#PostDown=
Table=off
#hkg
[Peer]
PublicKey=
AllowedIPs=0.0.0.0/0
Endpoint=[填寫端口轉發服務的地址]:14967
PersistentKeepalive=10

a2 配置a1 和 a2 只有 endpoint ip、端口不一樣

[Interface]
PrivateKey=
Address=192.168.51.3/32
#PostUp=
#PostDown=
Table=off
#hkg
[Peer]
PublicKey=
AllowedIPs=0.0.0.0/0
Endpoint=[C的地址]:14967
PersistentKeepalive=10

c1、c2 配置,注意c1 和 c2 只有端口不一樣

[Interface]
PrivateKey=
ListenPort=27002
Address=192.168.51.2/32
PostUp=iprouteadd192.168.51.3/32dev%i#c2配置文件進行該設置,指定直連
#PostDown=
Table=off
#local
[Peer]
PublicKey=
AllowedIPs=0.0.0.0/0

然后配置靜態路由

本地機器上,去程通過 a1(經過流量轉發) ip route add 192.168.51.2/32 dev a1

遠程機器上,回程直連 ip route add 192.168.51.2/32 dev c2

之后我們嘗試在本地ping 192.168.51.2看看效果

08e14f9c-39bb-11ed-9e49-dac502259ad0.png

延遲降低到了 30ms,而之前去程繞日 ntt 延遲有 70ms,并且抖動劇烈,可以看出效果還是很明顯的。

總結

目前的方案感覺依舊不是最優解,用鏈路本地地址建立連接再添加 dummy 設備多少有些繁瑣,計算機網絡上還有很多我沒搞清楚的,且這個網絡節點較少,在較多 (>3) 路由節點的情況下,是否能直接這樣簡單的配置還是一個問題。不過關于這方面的資料實在是太少了,而當前的配置方法雖然比較麻煩,但是也不是不能用,還望大家多多指教,有更好的連接方式請留下評論給我一點提示。

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 路由
    +關注

    關注

    0

    文章

    278

    瀏覽量

    41867
  • 移動網絡
    +關注

    關注

    2

    文章

    444

    瀏覽量

    32896
  • 機器
    +關注

    關注

    0

    文章

    784

    瀏覽量

    40757

原文標題:如何使用 WireGuard 組建非對稱路由

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    低端路由器和高端路由的區別

    類似的疑問--“為什么一樣的功能,這款路由器這么貴,另外一款又這么便宜”、“為什么JCG的路由器這么貴?TP-LINK的這么便宜?”、“這兩款路由器的主要參數都一樣,為什么性能卻相差
    發表于 06-26 14:11

    請問替換協調器在不重啟這些路由節點的情況能讓協調器C2控制所有的路由節點嗎

    協調器發送給路由節點的控制指令一直是Router Request請求他的短地址,而這些路由節點沒有一個轉發,或者發路由回復。斷點調試的
    發表于 08-19 07:11

    為什么lwip dhcp功能有的路由器能成功有的路由器不成功?

    lwip dhcp功能有的路由器能成功有的路由器不成功,網上說是lwip dhcp的option不全,將電腦的dhcp的option添加進去就可以了,修改lwip的源碼,但不知道怎么做
    發表于 09-29 22:10

    路由控制和路由選擇

    我們可以使用路由策略來控制路由的引入、分發、選擇過程;可以使用策略路由來改變數據包的默認的轉發行為和轉發路徑。通過路由策略和策略路由,我們可
    發表于 06-24 16:23 ?2次下載

    靜態路由協議概述

    課程說明 . 1課介紹. 1課目標. 1相關資料. 1第一節 路由協議概述 11.1 概述. . 21.2 路由協議簡介 21.3 靜態路由
    發表于 06-24 17:40 ?10次下載

    基于移動IP的路由優化研究

    移動IP 是一種簡單且可擴展的全球IP 移動性的解決方案,但是“三角路由”一直是移動IP 中需要解決的一個關鍵問題。文章首先針對現有“三角路由”問題的優化方案進行了研
    發表于 01-22 12:44 ?15次下載

    基于DynamipsGUI的網絡路由優化實驗設計

    策略路由是網絡優化的常用方法。利用DynamipsGUI搭建網絡環境,配置路由策略,模擬了報文大小分別為60、500和1800三種數據報文從路由器轉發時,
    發表于 07-26 11:25 ?16次下載
    基于DynamipsGUI的網絡<b class='flag-5'>路由</b><b class='flag-5'>優化</b>實驗設計

    避免路由斷裂的優化AODV路由協議

    移動自組織網絡( Mobile Ad Hoc NETwork.MANET)是一種自組織、對等式、多跳無線移動網絡,網絡中的節點具有主機和路由器的功能。該網絡應用在沒有基礎設施的環境下,通過節點自己
    發表于 01-29 10:31 ?0次下載
    避免<b class='flag-5'>路由</b>斷裂的<b class='flag-5'>優化</b>AODV<b class='flag-5'>路由</b>協議

    無線路由器的設置優化指南

    無線路由器現在是家庭必備產品,我們在使用過程中也可能遇到眾多的小問題,比如網速忽然變慢等,其實很多情況下并不是路由器配置的問題,很大的可能是其他家電設備或其他路由器信號干擾導致的,那么我們要怎么
    的頭像 發表于 03-21 15:34 ?3381次閱讀

    路由和硬路由的區別

    路由的費用較軟路由大,一個300元的軟路由的功能就可以與萬元級別的硬路由相媲美,對于預算較少的用戶來說,使用軟路由比硬
    發表于 03-26 09:23 ?1.5w次閱讀

    路由如何進入bios

    路由是指利用臺式機或服務器配合軟件形成路由解決方案,主要靠軟件的設置,達成路由器的功能;路由則是以特
    發表于 03-26 10:00 ?7912次閱讀

    如何優化您的無線路由

    星創易聯教你如何優化您的無線路由
    發表于 11-08 14:53 ?1237次閱讀

    如何優化您的無線路由

    優化您的無線路由器應該知道什么 重新定位您的路由器、更新其固件和添加新天線通常會增強信號。將某些類型的流量分類到雙頻路由器的不同頻段和信道上將減少
    發表于 11-25 15:48 ?1169次閱讀
    如何<b class='flag-5'>優化</b>您的無線<b class='flag-5'>路由</b>器

    什么是路由表?IP路由表包含了哪些要素?

    路由表:簡單點說路由表就是路由器用于指導數據包如何轉發的表項,記錄了往目的IP的下一跳哪里(如下圖)。
    的頭像 發表于 12-04 09:36 ?1.4w次閱讀
    什么是<b class='flag-5'>路由</b>表?IP<b class='flag-5'>路由</b>表包含了哪些要素?

    恒訊科技分析:常用的vps路由測試的工具和方法

    VPS(虛擬私人服務器)路由測試是評估服務器網絡性能的重要環節,以下是一些常用的工具和方法: 1、BestTrace:這是一款路由追蹤客戶端軟件,可以測試VPS的
    的頭像 發表于 08-08 22:54 ?380次閱讀
    主站蜘蛛池模板: 秋霞在线看片无码免费| 2019精品国产品在线不卡| 亚洲午夜福利未满十八勿进| 伊人热人久久中文字幕| 99RE6这里只有精品国产AV| 国产AV视频一区二区蜜桃| 精品午夜视频| 欧美色图天堂网| 亚洲精品国产熟女久久久| 99re精品视频在线播放视频| 国产成人高清视频| 久久99re66热这里只有精品| 欧洲videosdesrxotv| 亚洲aaaa级特黄毛片| 970女主播电台歌曲| 国产精品外围在线观看| 麻豆AV无码精品一区二区| 天天色狠狠干| 91夫妻交友论坛| 国产网站免费观看| 欧美特黄三级成人| 亚洲日本欧美国产在线视| 被强J高H纯肉公交车啊| 九九热精品免费观看| 日本一卡精品视频免费| 在线播放免费人成视频| 国产91青青成人a在线| 老师系列高H文| 亚洲不卡一卡2卡三卡4卡5卡| 99精彩免费观看| 黄桃AV无码免费一区二区三区| 人人舔人人爱| 中文字幕乱码一区久久麻豆樱花| 国产精品99久久久久久WWW| 米奇影视999| 亚洲网站视频在线观看| 囯产少妇BBBBBB高潮喷水一| 美国色吧影院| 亚洲精品日韩在线观看视频| 成片免费观看视频大全| 蓝男色gay|