一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何優(yōu)化去程的路由而保留原有的回程路由

馬哥Linux運(yùn)維 ? 來(lái)源:馬哥Linux運(yùn)維 ? 作者:馬哥Linux運(yùn)維 ? 2022-09-22 09:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

三臺(tái)機(jī)器上的非對(duì)稱路由

環(huán)境準(zhǔn)備

在這個(gè)實(shí)驗(yàn)中使用了三臺(tái)機(jī)器 :

本地機(jī)器 A wireguard 網(wǎng)內(nèi) ip 為 192.168.51.5 169.254.1.5

去程不錯(cuò)但是帶寬較小的機(jī)器 B 192.168.51.1 169.254.1.1

去程繞路但是回程不繞且?guī)捿^大的機(jī)器 C 192.168.51.2 169.254.1.2

需要實(shí)現(xiàn)的效果是 A 訪問(wèn) C 路徑為 A->B->C->A

在安裝好 wireguard 后需要生成密鑰且開啟包轉(zhuǎn)發(fā) :

$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

兩兩之間建立連接

下面直接貼一下三臺(tái)機(jī)器的 wireguard 配置,注意一點(diǎn) 需要設(shè)置 Table=off,即禁止 wireguard 直接修改路由表 , 且這里使用的是鏈路本地地址建立的連接。另外,三臺(tái)機(jī)器彼此之間要兩兩連接 (對(duì)應(yīng)單獨(dú)的一個(gè)配置文件), 也就是說(shuō)需要自己寫 6 個(gè)配置文件

節(jié)點(diǎn) A 與節(jié)點(diǎn) 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

節(jié)點(diǎn) A 與節(jié)點(diǎn) 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

節(jié)點(diǎn) B 與節(jié)點(diǎn) 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

節(jié)點(diǎn) B 與節(jié)點(diǎn) 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=

節(jié)點(diǎn) C 與節(jié)點(diǎn) 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

節(jié)點(diǎn) C 與節(jié)點(diǎn) 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 分配與靜態(tài)路由

在建立了兩兩之間的連接之后,我們還需要在每臺(tái)機(jī)器上創(chuàng)建一個(gè) dummy 網(wǎng)卡 (也可以寫到 postup 里面),用來(lái)獲取到發(fā)給自己的包。

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

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

此時(shí) 192.168.50.5(A) 到 192.168.50.2(C) 是還沒(méi)有路由的,不過(guò)我們希望去程經(jīng)過(guò)節(jié)點(diǎn) B,那么我們?cè)?A 上設(shè)置靜態(tài)路由 :

$iprouteadd192.168.51.2/32dev[AB之間連接對(duì)應(yīng)的wireguard接口名]
#或者iprouteadd192.168.51.2/32via169.254.1.1

然后還需要在節(jié)點(diǎn) B 上設(shè)置到 C 的靜態(tài)路由 :

$iprouteadd192.168.51.2/32dev[BC之間連接對(duì)應(yīng)的wireguard接口]
#或者iprouteadd192.168.51.2/32via169.254.1.2

此時(shí),在 A 上 pingC,在 B 上抓包,我們便能得到如下結(jié)果 :

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

在 B 上只能看見單向的數(shù)據(jù)流,而 A 是可以得到回應(yīng)的,再在 C 上抓包看看 :

C 上分別查看兩個(gè)接口 B-C 與 C-A 的接口

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

可以發(fā)現(xiàn)一點(diǎn),實(shí)際上 B 作為路由進(jìn)行轉(zhuǎn)發(fā)時(shí),源 ip 是什么是無(wú)所謂的,只需要有目的 ip 即可,而目的 ip 的路由方式通過(guò)靜態(tài)路由指定了,那么在 C 上則會(huì)收到來(lái)自于 A 的鏈路本地地址 (169.254.1.5) 的包,而 C 與 A 直接連接,且 wireguard 創(chuàng)建了到 169.254.1.5 的連接,所以 C 的響應(yīng)是可以不經(jīng)過(guò) B 直接走到 A 的。這樣就實(shí)現(xiàn)了一個(gè)非對(duì)稱的路由?,F(xiàn)在的設(shè)置下,A 主動(dòng)訪問(wèn) C 時(shí)會(huì)經(jīng)過(guò) B,C 還沒(méi)辦法主動(dòng)的連接 A,因?yàn)檫€沒(méi)有設(shè)置 C 到 A 的靜態(tài)路由,我們可以重復(fù)一遍前面的步驟,在 C 上與 B 上指定到 A 的靜態(tài)路由,也可以直接讓 C 訪問(wèn) A 而不經(jīng)過(guò) A。不過(guò)由于該需求中我只需要 A 能夠主動(dòng)訪問(wèn)到 C 即可,所以不再進(jìn)行這些設(shè)置。

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

為什么在配置文件中使用了 169 開頭的地址,而不是直接用 192 開頭的地址建立連接并參與后續(xù)的路由設(shè)置呢?因?yàn)椋ㄖ辽偈窃谖疫@種配置方式下),ip addr add xxx peer xxx 建立點(diǎn)對(duì)點(diǎn)連接時(shí),會(huì)自動(dòng)添加一條路由規(guī)則,會(huì)和我們后續(xù)添加的手動(dòng)路由沖突。所以我只能退一步,使用另一個(gè)地址來(lái)建立點(diǎn)對(duì)點(diǎn)連接,然后用新的地址來(lái)設(shè)置靜態(tài)路由。wireguard 工作在網(wǎng)絡(luò)層,大概不支持不設(shè)置 ip 直接通過(guò) mac 來(lái)連接 ?

只用兩臺(tái)機(jī)器實(shí)現(xiàn)非對(duì)稱路由

上一節(jié)實(shí)現(xiàn)了三臺(tái)機(jī)器組建的網(wǎng)絡(luò)的非對(duì)稱路由,那么能否更進(jìn)一步,借助現(xiàn)有的“流量轉(zhuǎn)發(fā)”服務(wù),實(shí)現(xiàn)兩臺(tái)機(jī)器建立非對(duì)稱路由呢?這樣我們便不再需要第三臺(tái)服務(wù)器轉(zhuǎn)發(fā)去程,且優(yōu)質(zhì)線路在流量轉(zhuǎn)發(fā)服務(wù)中也常見一些,且由于只有去程走了轉(zhuǎn)發(fā),實(shí)際上是花不了多少錢的。

個(gè)人測(cè)試下來(lái),這個(gè)方案也很容易實(shí)現(xiàn)。以本地機(jī)器 A 與遠(yuǎn)程機(jī)器 C 為例,每臺(tái)機(jī)器上都要設(shè)置兩個(gè) wireguard 接口,分別對(duì)應(yīng)通過(guò)端口轉(zhuǎn)發(fā)建立的 wireguard 以及直接連接建立的 wireguard。

命名如下 :

a1 本地對(duì)應(yīng)的通過(guò)流量轉(zhuǎn)發(fā)建立的 wireguard 連接的接口 169.254.2.1 192.168.51.3

a2 本地對(duì)應(yīng)的通過(guò)直接連接建立的 wireguard 連接的接口 169.254.2.2 192.168.51.3

c1 遠(yuǎn)程對(duì)應(yīng)的通過(guò)流量轉(zhuǎn)發(fā)建立的 wireguard 連接接口 169.254.2.3 192.168.51.2

c2 遠(yuǎn)程對(duì)應(yīng)的通過(guò)直接連接建立的 wireguard 連接接口 169.254.2.4 192.168.51.2

配置文件如下,注意這里沒(méi)有用ip addr add peer的命令,而完全采用靜態(tài)路由來(lái)實(shí)現(xiàn),也不再需要 dummy 設(shè)備,而是直接使用了后面需要用的 ip。對(duì),沒(méi)寫錯(cuò),其實(shí)并沒(méi)有規(guī)定一個(gè) ip 只能分配給一個(gè)接口,只需要我們后面靜態(tài)路由別寫錯(cuò)就好,上一節(jié)采用三臺(tái)服務(wù)器的方案也可以這樣的配置形式,而不是用 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=[填寫端口轉(zhuǎn)發(fā)服務(wù)的地址]: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配置文件進(jìn)行該設(shè)置,指定直連
#PostDown=
Table=off
#local
[Peer]
PublicKey=
AllowedIPs=0.0.0.0/0

然后配置靜態(tài)路由

本地機(jī)器上,去程通過(guò) a1(經(jīng)過(guò)流量轉(zhuǎn)發(fā)) ip route add 192.168.51.2/32 dev a1

遠(yuǎn)程機(jī)器上,回程直連 ip route add 192.168.51.2/32 dev c2

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

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

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

總結(jié)

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

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 路由
    +關(guān)注

    關(guān)注

    0

    文章

    280

    瀏覽量

    42480
  • 移動(dòng)網(wǎng)絡(luò)

    關(guān)注

    2

    文章

    449

    瀏覽量

    33750
  • 機(jī)器
    +關(guān)注

    關(guān)注

    0

    文章

    790

    瀏覽量

    41284

原文標(biāo)題:如何使用 WireGuard 組建非對(duì)稱路由

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    低端路由器和高端路由的區(qū)別

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

    請(qǐng)問(wèn)替換協(xié)調(diào)器在不重啟這些路由節(jié)點(diǎn)的情況能讓協(xié)調(diào)器C2控制所有的路由節(jié)點(diǎn)嗎

    ,協(xié)調(diào)器發(fā)送給路由節(jié)點(diǎn)的控制指令一直是Router Request請(qǐng)求他的短地址,而這些路由節(jié)點(diǎn)沒(méi)有一個(gè)轉(zhuǎn)發(fā),或者發(fā)路由回復(fù)。斷點(diǎn)調(diào)試的
    發(fā)表于 08-19 07:11

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

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

    路由控制和路由選擇

    我們可以使用路由策略來(lái)控制路由的引入、分發(fā)、選擇過(guò)程;可以使用策略路由來(lái)改變數(shù)據(jù)包的默認(rèn)的轉(zhuǎn)發(fā)行為和轉(zhuǎn)發(fā)路徑。通過(guò)路由策略和策略路由,我們可
    發(fā)表于 06-24 16:23 ?2次下載

    靜態(tài)路由協(xié)議概述

    課程說(shuō)明 . 1課介紹. 1課目標(biāo). 1相關(guān)資料. 1第一節(jié) 路由協(xié)議概述 11.1 概述. . 21.2 路由協(xié)議簡(jiǎn)介 21.3 靜態(tài)路由
    發(fā)表于 06-24 17:40 ?10次下載

    基于移動(dòng)IP的路由優(yōu)化研究

    移動(dòng)IP 是一種簡(jiǎn)單且可擴(kuò)展的全球IP 移動(dòng)性的解決方案,但是“三角路由”一直是移動(dòng)IP 中需要解決的一個(gè)關(guān)鍵問(wèn)題。文章首先針對(duì)現(xiàn)有“三角路由”問(wèn)題的優(yōu)化方案進(jìn)行了研
    發(fā)表于 01-22 12:44 ?15次下載

    基于DynamipsGUI的網(wǎng)絡(luò)路由優(yōu)化實(shí)驗(yàn)設(shè)計(jì)

    策略路由是網(wǎng)絡(luò)優(yōu)化的常用方法。利用DynamipsGUI搭建網(wǎng)絡(luò)環(huán)境,配置路由策略,模擬了報(bào)文大小分別為60、500和1800三種數(shù)據(jù)報(bào)文從路由器轉(zhuǎn)發(fā)時(shí),
    發(fā)表于 07-26 11:25 ?16次下載
    基于DynamipsGUI的網(wǎng)絡(luò)<b class='flag-5'>路由</b><b class='flag-5'>優(yōu)化</b>實(shí)驗(yàn)設(shè)計(jì)

    避免路由斷裂的優(yōu)化AODV路由協(xié)議

    移動(dòng)自組織網(wǎng)絡(luò)( Mobile Ad Hoc NETwork.MANET)是一種自組織、對(duì)等式、多跳無(wú)線移動(dòng)網(wǎng)絡(luò),網(wǎng)絡(luò)中的節(jié)點(diǎn)具有主機(jī)和路由器的功能。該網(wǎng)絡(luò)應(yīng)用在沒(méi)有基礎(chǔ)設(shè)施的環(huán)境下,通過(guò)節(jié)點(diǎn)自己
    發(fā)表于 01-29 10:31 ?0次下載
    避免<b class='flag-5'>路由</b>斷裂的<b class='flag-5'>優(yōu)化</b>AODV<b class='flag-5'>路由</b>協(xié)議

    無(wú)線路由器的設(shè)置優(yōu)化指南

    無(wú)線路由器現(xiàn)在是家庭必備產(chǎn)品,我們?cè)谑褂眠^(guò)程中也可能遇到眾多的小問(wèn)題,比如網(wǎng)速忽然變慢等,其實(shí)很多情況下并不是路由器配置的問(wèn)題,很大的可能是其他家電設(shè)備或其他路由器信號(hào)干擾導(dǎo)致的,那么我們要怎么
    的頭像 發(fā)表于 03-21 15:34 ?3918次閱讀

    路由和硬路由的區(qū)別

    路由的費(fèi)用較軟路由大,一個(gè)300元的軟路由的功能就可以與萬(wàn)元級(jí)別的硬路由相媲美,對(duì)于預(yù)算較少的用戶來(lái)說(shuō),使用軟路由比硬
    發(fā)表于 03-26 09:23 ?1.5w次閱讀

    路由如何進(jìn)入bios

    路由是指利用臺(tái)式機(jī)或服務(wù)器配合軟件形成路由解決方案,主要靠軟件的設(shè)置,達(dá)成路由器的功能;路由則是以特
    發(fā)表于 03-26 10:00 ?8296次閱讀

    如何優(yōu)化您的無(wú)線路由

    星創(chuàng)易聯(lián)教你如何優(yōu)化您的無(wú)線路由
    發(fā)表于 11-08 14:53 ?1498次閱讀

    如何優(yōu)化您的無(wú)線路由

    優(yōu)化您的無(wú)線路由器應(yīng)該知道什么 重新定位您的路由器、更新其固件和添加新天線通常會(huì)增強(qiáng)信號(hào)。將某些類型的流量分類到雙頻路由器的不同頻段和信道上將減少
    發(fā)表于 11-25 15:48 ?1549次閱讀
    如何<b class='flag-5'>優(yōu)化</b>您的無(wú)線<b class='flag-5'>路由</b>器

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

    路由表:簡(jiǎn)單點(diǎn)說(shuō)路由表就是路由器用于指導(dǎo)數(shù)據(jù)包如何轉(zhuǎn)發(fā)的表項(xiàng),記錄了往目的IP的下一跳哪里(如下圖)。
    的頭像 發(fā)表于 12-04 09:36 ?1.6w次閱讀
    什么是<b class='flag-5'>路由</b>表?IP<b class='flag-5'>路由</b>表包含了哪些要素?

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

    VPS(虛擬私人服務(wù)器)路由測(cè)試是評(píng)估服務(wù)器網(wǎng)絡(luò)性能的重要環(huán)節(jié),以下是一些常用的工具和方法: 1、BestTrace:這是一款路由追蹤客戶端軟件,可以測(cè)試VPS的
    的頭像 發(fā)表于 08-08 22:54 ?775次閱讀