eth2前導符
❶ eth2.2中.2是什麼意思
etho eth1 eth2 ...
etho eth1 eth2 ...
例句:route add net 10.0.2.0 netmask 255.255.255.0 gw 10.0.2.254 dev eth1
請教:下面關於一條路由添加的命令為什麼出錯?
route add -net 10.2.0.0 netmask 255.255.255.0 dev eth2
注意如有需要應該添加默認路由。
❷ 聯通ETH光纖貓與路由器如何連接
聯通ETH光纖貓終端標識解釋:pwr 電源 gpon光口eth1,eth2, 網口 FXS 語音。
Eth-Trunk介面是一種可以動態創建的介面,該類型介面可以綁定若干物理的乙太網介面作為一個邏輯介面使用。加入到Eth-Trunk介面的乙太網介面稱為成員介面,用戶只需對Eth-Trunk介面進行配置,對這些配置最終會映射到成員介面上。Eth-Trunk介面有路由模式和交換模式之分。路由模式的Eth-Trunk介面與路由模式的乙太網介面類似,可以配置IP地址,運行各種路由協議、MPLS VPN等多種業務;交換模式的Eth-Trunk介面與交換模式乙太網介面類似,可以加入VLAN,運行STP等協議。
Eth-Trunk介面應用特點有拓展介面帶寬,增加鏈路可靠性以及流量的負載分擔。
建議你可以咨詢PC機電腦組網專業人士相關問題,以下圖片盡供參考:
具體以當地聯通客服答復為准。
❸ linux配置中eth0和eth1做什麼用的
是一種光纖乙太網介面卡,按照乙太網通信協議進行信號傳輸。一般通過光纜與光纖乙太網交換機連接。
Eth0和eth1用於區分網卡名。它們的含義與windows本地連接1和本地連接2相同。
這里的子網卡不是一個實用的網路介面,但是它可以作為一個集合介面在系統中閃現,比如eth0:1,eth1:2。
(3)eth2前導符擴展閱讀:
Linux操作系統嵌入了TCP/IP協議棧,協議軟體具有路由轉發功能。路由和轉發依賴於在主機中安裝多個網卡作為路由器。
當某一網卡接收到度包時,系統內核會根據度包的目的IP地址查詢路由表,然後根據查詢結果將度包發送到另一網卡,最後通過該網卡發送度包。主機的進程是路由器的核心功能。
路由功能是通過修改Linux內核參數來實現的。sysctl命令用於配置和顯示/proc/sys目錄中的內核參數。
出於安全原因,Linux內核默認禁止數據包路由和轉發。在Linux系統中,有臨時和永久兩種方法啟用轉發功能。
❹ ETH0什麼意識我是小白…
首先說一下Ethernet(乙太網)是所謂802.3標准,當然你所問的(eth0)是指乙太網卡,就是乙太網Ethernet前三字面的縮寫,用來表示網卡的。linux系統中eth0,eth1,eth2...等等來表示網卡設備。對應windows系統就是你的Ethernet Adapter 本地連接。
❺ redhat 萬兆和千兆的網卡命名問題
新弄了一批機器,為了准備切換到萬兆環境,給機器配了雙千兆和雙萬兆混合的4介面網卡,然後就出了一點問題
centos 7 引入了網路一致化命名規則,具體可以看紅帽的聯網指南
主要部分摘抄如下
------------引用專用分割線----------------------------
8.1. 命名方案層級結構
默認情況下,systemd 會使用以下策略,採用支持的命名方案為介面命名:
方案 1: 如果固件或 BIOS 信息適用且可用,則使用整合了為板載設備提供索引號的固件或 BIOS 的名稱(例如:eno1),否則請使用方案 2。
方案 2: 如果固件或 BIOS 信息適用且可用,則使用整合了為 PCI 快速熱插拔插槽提供索引號的固件或 BIOS 名稱(例如 ens1),否則請使用方案 3。
方案 3: 如果硬體連接器物理位置信息可用,則使用整合了該信息的名稱(例如:enp2s0),否則請使用方案 5。
方案 4: 默認不使用整合介面 MAC 地址的名稱(例如:enx78e7d1ea46da),但用戶可選擇使用此方案。
方案 5: 傳統的不可預測的內核命名方案,在其他方法均失敗後使用(例如: eth0)。
這個策略(如上所述)是默認策略。如果該系統已啟用 biosdevname ,則會使用該方案。註:啟用 biosdevname 需要添加 biosdevname=1 作為命令行參數(Dell 系統除外),此時只要安裝 biosdevname ,就會默認使用該方案。如果用戶已添加 udev 規則,該規則會更高內核設備名稱,則會優先使用這些規則。
設備命名過程如下:
/usr/lib/udev/rules.d/60-net.rules 文件中的規則會讓 udev 幫助工具 /lib/udev/rename_device 查看所有 /etc/sysconfig/network-scripts/ifcfg- suffix 文件。如果發現包含 HWADDR 條目的 ifcfg 文件與某個介面的 MAC 地址匹配,它會將該介面重命名為 ifcfg 文件中由 DEVICE 指令給出的名稱。
/usr/lib/udev/rules.d/71-biosdevname.rules 中的規則讓 biosdevname 根據其命名策略重命名該介面,即在上一步中沒有重命名該介面、已安裝 biosdevname 、且在 boot 命令行中將 biosdevname=0 作為內核命令給出。
/lib/udev/rules.d/75-net-description.rules 中的規則讓 udev 通過檢查網路介面設備,填寫內部 udev 設備屬性值 ID_NET_NAME_ONBOARD、ID_NET_NAME_SLOT、ID_NET_NAME_PATH。註:有些設備屬性可能處於未定義狀態。
/usr/lib/udev/rules.d/80-net-name-slot.rules 中的規則讓 udev 重命名該介面,優先順序如下:ID_NET_NAME_ONBOARD、ID_NET_NAME_SLOT、ID_NET_NAME_PATH。並提供如下信息:沒有在步驟 1 或 2 中重命名該介面,同時未給出內核參數 net.ifnames=0。如果一個參數未設定,則會按列表的順序設定下一個。如果沒有設定任何參數,則不會重命名該介面。
-----------以上是紅帽的聯網指南-------
其實簡述上面的信息就是首先看內核參數是否啟用了biosdevname=1 (默認是啟用),如果bios提供了設備的名稱就使用bios提供的名稱
如果沒有,就根據網卡配置中 device=eth,em,xyz 的名字來命名這個網卡,但是如果這樣命名的話,必須在配置里寫死網卡的mac地址
作為網卡的識別標志,對單網卡當然沒什麼問題,但是如果在集群環境里,HA,以及bonding環境里,為了快速切換網路流量,往往要屏蔽mac,
使用虛擬mac,或者多塊網卡使用一個mac地址,這個時候需要在配置文件里屏蔽mac地址,因此就需要區改udev的配置文件來解決
我所遇到的問題是,使用了biosdevname=0和 net.ifnames=0 參數後,(因為以前有大量的centos6的機器,為了移植方便,不使用一致性命名規則,網卡名依然是eth0,eth1.。。。)安裝伺服器時一切正常,但啟動系統後,發現系統將插在第一個埠的網卡認為是eth2,和預期不符,本能的認為udev可以解決問題,於是添加了udev的規則
```
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="24:6e:96:ac:a1:xa", ATTR{type}=="1", KERNEL=="*", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="24:6e:96:ac:a1:xb", ATTR{type}=="1", KERNEL=="*", NAME="eth1"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="24:6e:96:ac:a1:xc", ATTR{type}=="1", KERNEL=="*", NAME="eth2"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="24:6e:96:ac:a1:xd", ATTR{type}=="1", KERNEL=="*", NAME="eth3"
```
發現不起作用,,難道寫錯了?換個規則,用pci設備號去綁定
SUBSYSTEM=="net", ACTION=="add", KERNEL=="eth*", SUBSYSTEM=="pci", KERNELS===="0000:01:00.0", NAME="eth0"
依然沒用
用下面的命令debug一下
udevadm test /sys/class/net/eth0
結果縮略如下
rules contain 49152 bytes tokens (4096 * 12 bytes), 13451 bytes strings
2076 strings (25677 bytes), 1399 de-plicated (12904 bytes), 678 trie nodes used
NAME 'eth2' /etc/udev/rules.d/60-net.rules:6
IMPORT builtin 'net_id' /usr/lib/udev/rules.d/75-net-description.rules:6
IMPORT builtin 'hwdb' /usr/lib/udev/rules.d/75-net-description.rules:12
IMPORT builtin 'path_id' /usr/lib/udev/rules.d/80-net-setup-link.rules:5
IMPORT builtin 'net_setup_link' /usr/lib/udev/rules.d/80-net-setup-link.rules:9
No matching link configuration found.
RUN '/usr/lib/systemd/systemd-sysctl --prefix=/net/ipv4/conf/$name --prefix=/net/ipv4/neigh/$name --prefix=/net/ipv6/conf/$name --prefix=/net/ipv6/neigh/$name' /usr/lib/udev/rules.d/99-systemd.rules:55
Error changing net interface name 'eth0' to 'eth2': File exists
could not rename interface '2' from 'eth0' to 'eth2': File exists
created db file '/run/udev/data/n2' for '/devices/pci0000:00/0000:00:1c.4/0000:06:00.0/net/eth0'
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:06:00.0/net/eth0
ID_BUS=pci
ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Gigabit 4P X540/I350 rNDC)
粗體看到原來是設備已經存在,無法重命名,於是想到的重新載入驅動
modprobe -rv igb
modprobe -rv ixgbe
然後按順序載入驅動
modprobe ixgbe
modprobe igb
終於可以看到效果了,不過重啟就完蛋了
於是想是否可以調整驅動載入順序?
找了半天文檔,發現可以通過重新打包內核啟動文件和編譯內核兩條路實現,不過這顯然又增加了很多麻煩,總不能升級一次內核,就重新打一次包吧
看看其他方法。最好發現簡單的方法就是修改啟動內核的參數 將 biosdevname=0和net.ifnames=0 改為 biosdevname=0和net.ifnames=1 ,這樣系統啟動時,會按照上述一致性命名規則,重新命名網卡,可以預期的是,已dell板載網卡為例,網卡會依次命名為eno1,eno4,等等,然後再載入udev規則,按照udev規則,再次重新命名為我們期望的eth0,eth1,等等
當然配置文件可以用ansible搞定,我這里的模版內容就是
ifcfg-eth0.j2
------
NAME="eth0"
DEVICE="eth0"
ONBOOT=yes
HWADDR="{{ hostvars[inventory_hostname].ansible_eth1.macaddress }}"
NETBOOT=yes
IPV6INIT=no
BOOTPROTO=static
TYPE=Ethernet
----------
這樣udev 規則就生效了,其實就是啟動過程中,當上述兩個參數全為0時,網路設備只能叫ethx,先載入的驅動搶佔了eth0和eth1時,(我這里是千兆的設備驅動 igb先啟動)後起的設備想按udev規則rname時,發現eth0,和eth1 已經被占據了,因此命名失敗,所以深入理解啟動順序和動作其實還是蠻重要的
參考鏈接 https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/networking_guide/sec-understanding_the_device_renaming_procere
紅帽知識庫文章引用如下
❻ ETH介面是什麼
ETH介面指的是介面,是目前應用最廣泛的區域網通訊方式,同時也是一種協議。而乙太網介面就是網路數據連接的埠。
乙太網的每個版本都有電纜的最大長度限制(即無須放大的長度),這個范圍內的信號可以正常傳播,超過這個范圍信號將無法傳播。
為了允許建設更大的網路,可以用中繼器把多條電纜連接起來。中繼器是一個物理層設備,它能接收、放大並在兩個方向上重發信號。
(6)eth2前導符擴展閱讀
幾種常見的乙太網介面類型。
1、SC光纖介面
SC光纖介面在100Base-TX乙太網時代就已經得到了應用,因此當時稱為100Base-FX(F是光纖單詞fiber的縮寫),不過當時由於性能並不比雙絞線突出但是成本卻較高,因此沒有得到普及,現在業界大力推廣千兆網路,SC光纖介面則重新受到重視。
2、RJ-45介面
這種介面就是我們現在最常見的網路設備介面,俗稱「水晶頭」,專業術語為RJ-45連接器,屬於雙絞線乙太網介面類型。RJ-45插頭只能沿固定方向插入,設有一個塑料彈片與RJ-45插槽卡住以防止脫落。
3、FDDI介面
FDDI是目前成熟的LAN技術中傳輸速率最高的一種,具有定時令牌協議的特性,支持多種拓撲結構,傳輸媒體為光纖。光纖分布式數據介面(FDDI)是由美國國家標准化組織(ANSI)制定的在光纜上發送數字信號的一組協議。
參考資料來源:網路-乙太網介面
❼ 用C實現斷點續傳的功能,詳細點的實現原理是什麼嘞
用C實現斷點續傳的功能,詳細點的實現原理是什麼嘞
於HTTP 協議的多執行緒下載和斷點續傳的實現 學 生:葉升路 指導教師:覃 穎 (三峽大學 電氣資訊學院) 摘 要:本文介紹了網路下載軟體中的最新技術——多執行緒下載和斷點續傳技術,同時 也介紹了HTTP 協議的發展、特點以及WinSock 程式設計技術。
FTP客戶端怎麼樣實現斷點續傳的功能?
上傳的時候,如果檔案已經存在,服務端會返回檔案已經存在大小,根據這個大小,從本地檔案讀取這個大小之後的資料,進行斷點續傳
c#winform中怎麼利用wini實現斷點續傳?
WinI 提供對常用的網際毀首網路協議,包括 Gopher、 FTP 和 HTTP 訪問。使用 WinI,可以不必處理 WinSock、 TCP/IP 或特定的網際網路協議的詳細資訊寫入 Inter 客戶端應用程式的程式設計中,更高的級別。
FTP 通常公開要將一個檔案附加到另一個"追加"命令。WinI 不直接公開此功能。
在 Inter Explorer 3.0 和 4.0 中,這一問題的解決方法是從伺服器下載檔案、 將附加到該客戶端然後上載該檔案備份到伺服器上。
從開始 Inter Explorer 5,FTP 命令可以直接傳送到 FTP 伺服器使用 FtpCommand,如下所示:
CHAR szTemp[256];
wsprintf (szTemp, "APPE %s", "DestFile.txt");
bRet = FtpCommand( hConnection, WinI Connection handle
TRUE, Yes, I expect a response
FTP_TRANSFER_TYPE_ASCII, I'm receiving ASCII
szTemp, This is the FTP mand I am passing
0, No context needed
&hResponse); The handle to read the response
if (!bRet)
{
cout << "FtpCommand failed, error: " << GetLastError() << endl;
return;
}
wsprintf (szTemp, "This data will be appended to the file");
DWORD dwSize;
if (!InterWriteFile (hResponse, (LPVOID)szTemp, lstrlen(szTemp)+1, &dwSize))
{
cout << "InterWriteFile failed, error: " << GetLastError() << endl;
return;
}
用swoole做websocket,怎麼實現資料斷點續傳
在php的web控制器中,每當更新了資料庫的資料庫後,我需要將這些資料傳送到其他使用者的客戶端, 不知在web控制器中怎麼實現這個一個目的,怎麼才能swoole_websocket_server傳送這些最新的資料。如果再建立一個 swoole_client話又感覺不好。
主軸定位功能的實現原理是什麼
主軸定位指通過一個輸出點控制主軸旋轉到特定的位置以方便換刀或者主軸配合其它裝置動作。
主軸定位是通過主軸伺服驅動模組內建的位置控制功能和檢測主軸的位置編碼器(可以安裝在主軸上或者是主軸電機內建的編碼器)來實現主軸定位的。
API有斷點續傳的功能嗎?
有,可以通過HTML5 File api 實現斷點續傳。
一、實現檔案多選
HTML5的<input>新增了"multiple"屬性,該屬性可接受多個值的檔案上傳欄位
- <input type=filemultiple="multiple"name="file"id="file">
添加了該屬性使用者就可以在彈出的對話方塊中一次性納源選擇多個檔案了
二、實現檔案從計算機拖拽到網頁以及新增檔案佇列功能
這里我們用 dragover 和 drop 兩個事件來管理檔案拖拽的功能
其中 dragover 用來處理在指定的元素上洞余態移動時的事件,這里我們通過給body系結dragover時間來處理頁面中拖動檔案的事件
- document.body.addEventListener('dragover',dragFile,false);
- functiondragFile(evt){
- evt.sPropagation();
- evt.preventDefault();
- evt.dataTransfer.dropEffect=''
- }
用 drop 事件來處理滑鼠松開時候的事件,此時應該將使用者拖動過來的檔案加入到上傳佇列中,以供後續的處理
- document.body.addEventListener('drop',dropFile,false);
- functiondragFile(evt){
- evt.sPropagation();
- evt.preventDefault();
- dataTransfer.files屬性可以獲取到所有拖動選擇的檔案,通過遍歷可以讀取到所有檔案的資訊。
- 遍歷每個檔案可以獲取到檔案的 name、size、type、lastModifiedDate等關鍵資訊
- varfiles=evt.dataTransfer.files;
- addfile 方法 用來新增上傳檔案佇列,在input的change事件中也需要呼叫
- 該方法首先檢查有無檔案正在上傳中,如果有就將後續加入的檔案放到上傳佇列中,如果沒有檔案正在上傳就直接執行上傳命令
- addfile(files);
-
}
斷點續傳指的是在下載或上傳時,將下載或上傳任務(一個檔案或一個壓縮包)人為的劃分為幾個部分,每一個部分採用一個執行緒進行上傳或下載,如果碰到網路故障,可以從已經上傳或下載的部分開始繼續上傳下載未完成的部分,而沒有必要從頭開始上傳下載。使用者可以節省時間,提高速度。
360瀏覽器如何實現斷點續傳
- 360安全瀏覽器內建下載工具是支援斷點續傳功能的,但是斷點續傳需要下載工具和下載資源相互支援配合才行。
-
所以,如果使用360se下載的檔案無法斷點續傳的話,一般都是資源伺服器不支援斷點續傳功能。
-
部分下載網為了防止盜鏈是不允許斷點續傳的。
代理的實現原理是什麼?
代理伺服器有很多種,大體分為三類:HTTP、FTP、SOCKS,其中又分為透明代理和不透明代理,透明代理一般是閘道器,為硬體
過程:
(1)客戶端先和代理伺服器通訊,建立TCP連線,目的IP是代理伺服器的IP
(2)客戶端發出GET命令,GET命令中包含URL或IP地址、明文
(3)代理伺服器將其中的URL轉換為IP地址,可能會有DNS,將源資料包中的資料拷貝下來,去掉URL,重新組包再發出去
(4)代理伺服器和真實伺服器通訊,源IP是代理伺服器的IP
以上就是代理的實現原理,在我們日常生活中只有在學習IT才會了解哦,我也是在黑馬程式設計師學習之後才了解的。
什麼是ECMP?ECMP的實現原理是什麼?
Linux 平台上之 Multipath Routing 應用
--------------------------------------------------------------------------------
撰稿/整理: Rex Tsai <[email protected].>
HTML 版本:
:kalug.linux./sections.php?op=viewarticle&artid=4
TEXT 版本:
[Tips] Linux 平台上之 Multipath Routing 應用.
$Date: 2001/10/22 09:25:41 $
警告:
*****************************************************************************
您因使用或不能使用本文之教學而產生之任何軟體、硬體損害(包括但不限
於直接或間接個人損害、營業利潤之喪失、業務中斷、營業資訊之遺失、或
任何其他金錢損失),概不負任何損害賠償責任。
The author has taken care in the preparation of this paper, but
make no expressed or implied warranty of any kind and assume no
responsibility for errors or omissions. No liability is assumed for
incidental or consequential damages in connection with or arising
out of the use of the information or programs contained herein.
Linux is a registered trademark of Linus Torvalds. Other proct
and pany names mentioned herein may be the trademarks of their
respective owners.
*****************************************************************************
撰稿/整理: Rex Tsai <[email protected].>
此檔案應有許多技術上得問題. 請熟悉的朋友來信指教.
[Introction]
許多中小企業或是 Soho 甚至家庭, 會在家中裝有一條以上寬頻/寬頻線路.
這篇 Tips 將介紹如何在 Linux 上, 好好的應用這些資源.
在你使用兩家不同的 ISP 的時候, destination address-based load
balancing 將會是最好的解決方案. 你的封包可以即時透過不同的 ISP 線路
走出去. 當然這里所提的是從內部到外部, 如果你的專線提供不同的網路服
務提供給網路上得人存取, 那麼接下來所說明的方式不適合您.
此篇文章只能提供內部網路對外的 load sharing.
以下文章以 GNU/Debian, Linux kernel 2.4.12, iproute-20001007-1 為
環境, 所有動作請在主機前面執行.
假設你有兩條以上的網際網路資料線路 (xDSL, ISDN, Cable, whatever..),
想充分使用這些線路, 概觀來看有三種方式
1. Multiplexing
2. Packet-wise load balancing
3. Destination address-based load balancing,
或稱 Equal-Cost MultiPath Routing (ECMP)
稍微解釋一下三種方式的不同
1. Multiplexing
Multiplexing, 這個方式提供某些路由器提供 offer-load balancing 或叫
做 load sharing. 這個方式可以讓路由器將流量分給不同的外流 ports.
但是會造成每個 port 的傳送上約有 30 % 的 overhead. 此外, 每家廠商的
實作都是獨一的, 因次你會被鎖在特定的解決方案上.
類似的技術是 "bonding" 或是 "multi-link". 這里所提得 Bonding 是一
個標准, 是由 Bandwidth on Demand Interoperability Group (一個大
概有四十個製造商的協會)所提. 已經提交給 American National Standards
Institute TR41.4 group. 這個通常的在於兩條資料線路都是接在同一個
點(ISP)上的時候, 因此如果是兩條不同 ISP 所提供的線路, 那麼就沒辦法
達到這個目的. 當然, 如果你的 ISP 不提供此項技術服務, 那麼也是沒轍.
舉個例子, 像是 stick multiple ISDN channels. 將幾個慢速的線路合成為
快速的一條. 像是 ISDN H.221 規格即用到 inverse multiplexing. 但通常
用於視訊傳輸而不是電子資料.
2. Packet-wise load balancing:
這個在你可以得到所有的 ISP 協助的時候是可行的, 如果兩家 ISP 都願意
協助將其不同的路由器皆設定到同一個 IP 位址. 那麼便可以這么作.
在這個方式中, 你會用到像是 sch_teql (the TEQL scheler) 來創造一個
virtual device 將你的封包分散在不同的網路介面上.
一般來講, 如果你是使用兩家不同 ISP , 那麼你不可以使用這個解決方案.
但, 你 "可以" 將所有的網路封包透過 IPIP or CIPE (Crypto IP Encapsu-
lation) 的方式來解決這個問題. 看看 Linux Kernel 中的 IP: tunneling.
3. Equal-Cost MultiPath:
在 Linux 核心中叫做 equal cost multipath (CONFIG_IP_ROUTE_MULTIPATH)
比較正確的說法應該是 "destination address-based load balancing". 一
般 Linux 想要為某個 IP 位址找到路由, 會因為效能的問題去查驗暫存(cache)
中的資料, 如果目標 IP 並沒有在暫存空間中, 那麼他便會去查 routing table
來決定該 IP 位址的路由, 並將該路由放進 cache 中.
一般來講核心中的路由功能只能為某個封包決定唯一的方向. 如果使用 ECMP 並
有機會讓某個 package pattern 具有好幾種不同的方向, 可以讓某個符合路由條
件的封包透過 "equal" cost 或是自訂的權重來選擇該走的路由.
[Howto]
如果你有數台電腦想使用外部網路, 一條 ADSL 不夠你使用(例如某人抓檔太凶)
那麼這是你正在找的解決方案. 你所能做的作好的方式就是每個 connection 可以
以 "non-deterministic fashion" 的方式選擇路由, 將 connection 分散到不同的
Router 上, 注意: 這里所說的不是 packets, 這樣 TCP/IP session 將無法連續.
但是這整個路由程式有兩個部份四個問題要解決.
1a. How to get your packets to the outside world,
1b. How the outside world replies to you,
2a. How the outside world sends packets to you,
2b. How you reply to the outside world.
Multipath 可以解決 1a 出去的問題. 一般的路由設定可以解決 1b 與 2a. 而 2b
則必須使用 policy routing (multiple tables)才能解決, Multiple Tables 可以
讓你加入以封包來源位址為依據來決定路由.
以下的範例, 在核心中, 務必加入編譯以下選項
必備:
CONFIG_NETLINK=y
這個選項是 Kernel/User link socket
CONFIG_RTNETLINK=y
Routing messages
CONFIG_INET=y
TCP/IP neorking
CONFIG_IP_ADVANCED_ROUTER=y
IP: advanced router
CONFIG_IP_MULTIPLE_TABLES=y
IP: policy routing
CONFIG_IP_ROUTE_MULTIPATH=y
IP: equal cost multipath
選用:
CONFIG_IP_ROUTE_LARGE_TABLES=y
一般來講 IP: large routing tables 也會勾選, 一方面 routing
zones 可以大於 64 筆, 這些資料存在 hash 資料結構中, 也可以
加速 "the routing process".
而 iproute 套件也是必須的軟體. 這個軟體的安裝方式與位置請洽詢提供
您所使用套件之廠商/組織. (Red Hat, Debian, Mandrake, SuSE, etc...)
重頭戲來了, 這里假設你有三塊網路卡, 分別給內部網路與兩家 ISP. eth0
是內部網路, eth1 與 eth2 是其他兩家 ISP 線路.
eth0 是內部網路, 范圍是 10.0.0.0/255.255.255.0
eth1 其中一家 ISP, IP 是 1.1.1.1, 閘道器(gateway)是 1.1.1.253
eth2 另外一家 ISP, IP 是 2.2.2.2, 閘道器(gateway)是 2.2.2.253
# 列出所有的 rule
ip rule list
# table 後的 "10" 是 table identifer, 為數字.
# 注: 可用英文代稱取代請看 /etc/iproute2/rt_tables
#
# table 10 是給在 gateway 後面的內部網路使用, 10.0.0.x 是 LAN 使用的 IP.
#
# pref 後面指定的 "10" 是 priority. 為 policy routing database 搜尋的次序
ip rule add pref 10 to 10.0.0.0/24 table 10
ip route add 10.0.0.0/24 table 10 dev eth1
# table 20 給 ISP #1, IP 1.1.1.1, gateway 1.1.1.253
# pref 後面指定的 "20" 是 priority. 為 policy routing database 搜尋的次序
ip rule add pref 20 from 1.1.1.1 table 20
ip route add default table 20 via 1.1.1.253
# table 30 is for ISP #2, IP 2.2.2.2, gateway 2.2.2.253
ip rule add pref 20 from 2.2.2.2 table 30
ip route add default table 30 via 2.2.2.253
# 列出所有的 rule
ip rule list
# 列出 table 10 的 rule
ip route list table 10
# 列出 table 20 的 rule
ip route list table 20
# If your ISP's have servers that authenticate by originating IP address,
# (e.g. SMTP or NNTP servers) you will want to explicitly list them here.
# 這里是靜態的 routing table 設定. 如果你的 ISP 有提供某些網路服務, 必須該
# ISP 的 IP 才能使用, 那麼你會想將它設定在這里
# (e.g. Proxy, SMTP or NNTP Server)
ip route add 1.1.1.0/24 dev eth1
ip route add 2.2.2.0/24 dev eth2
# 如果上面所有的 routing table 都沒有吻合, 那麼封包會走 default route
# 這里使用 "ECMP" 來選擇上游路由器.
# "ip route repleace" 是用來取代原本的 default routi.
ip route replace default nexthop via 1.1.1.253 dev eth1
nexthop via 2.2.253 dev eth2
# 如果你想加上權重, 是這樣使用的. 請依據你的線路網路頻寬
# 頻寬越大, 請把 weight 加大.
#ip route replace default nexthop via 1.1.1.253 dev eth1 weight 1
# nexthop via 2.2.253 dev eth2 weight 3
# Make it all happen. IMPORTANT! The above mands do NOT
# flush the route cache!
ip route flush cache
<-- 結束 -->
Linux 上得 ECMP implementation 的實作有一個特色, 當你的上游網路介面
使用 ARP (e.g. 使用傳統 IP-over-Ether)時, 如果其中一個網路介面陣
亡時, Linux kernel 會自動把該介面 "shutdown", 並停止那些需要經過該
介面的 "nexthops". 但是要附註一提的是, 如果你使用的是 "網路型" ADSL
服務, 你會取得一個 ADSL 路由器, 你可能會架設一個 NAT 伺服器與 ADSL
路由器放在同一個 Ether Hub 上, 如果這個時候 ADSL 斷線, 但是 Hub
並未斷線, Linux 會認為該網路卡仍在 on-line 狀態. 除非是該 hub 或是網
路卡故障, kernel 才會 shutdown 該網路介面.
因此如果你需要確實的 "failover", 請動手寫一個小 script, 定時用 ping
或稱 "icmp echo request" 來詢問 ISP 端的閘道器是否正常的運作, 並用
"ip route replace" 來置換那些確定可通的路由. 這里就請您自行處理了.
Enjoy it, Rex.
[Reference]
[1] Linux-Net mailing list. :uwsg.iu.e/hypermail/linux//
原文 :uwsg.iu.e/hypermail/linux//0107.3/0028.
[2] Alexey N. Kuzsov, April 14, 1999, IP Command Reference
[Futrher reading]
[1] Jack Coates , Load-Balancing on LRP HOWTO
[2] Netherlabs BV (bert hubert ),
Gregory Maxwell ,
Remco van Mook ,
Martijn van Oosterhout ,
Paul B Schroeder ,
Jasper Spaans , [email protected],
Linux 2.4 Advanced Routing Howto
[3] Horacio J. Pe?a, [email protected], 05/Apr/2000
Policy based routing MICRO-HOWTO,
:pendium..ar/policy-routing.txt
[Keywords]
Linux, Routeing, 路由, ADSL, 寬頻, 寬頻, 頻寬, 合並, 分流, 共用
[Acknowledgements]
Zygo Blaxell (zblaxell@furryterror.) 在 Linux- 的說明
Digital Sesame, Inc - :d11e. 提供環境測試.
--
Best Regards.
Rex Tsai <chihchun_at_kalug.linux.>
--
ThinkPHP 的 C 函式實現原理是什麼?
c方法裡面有個靜態變數,每次初始化的時候就把配置賦值給這個靜態變數,然後每次使用的時候就直接在這個靜態變數里獲取了,樓主應該知道靜態變數在整個執行期間都存在吧
❽ linux怎麼查eth1網卡是否啟動,求口令
1、ethtool命令
ethtool eth1
2、mii-tool命令
mii-tool em1
em1: negotiated 1000baseT-FD flow-control, link ok
mii-tool em3
em3: no link
3、ip addr
4、ifconfig eth1也可以看出來,啟動後有RUNNING字樣