1. linux 作路由器 的限速語句
處理信息在device eth1 INC中處理的.
前面是序號,
root對eth1有絕對控制權,並使用了htb流量控制演算法.
平均速率在500k, 允許突發10k
.. .... 200k 10
基於IP協議的優先順序被設置為16 同時被匹配了到192.168.1.5的數據包,其流量平均被限制為500k,允許突發10k
....... 同時被匹配了到192.168.1.6的數據包, 200k 10k
2. Linux流量監控的幾個方法
看你用哪個linux系統啊,建議你用專業的linux系統,比如WFilter NGF系統,基於Linux,專門做上網行為管理和流控技術。流量監控只是其中的小功能。
3. linux伺服器要怎樣針對IP流量限制
不是木馬,是設置問題,下面是流量的控制方法一、Linux流量控制過程分二種:1、隊列控制即QOS,瓶頸處的發送隊列的規則控制,常見的有SFQPRIO2、流量控制即帶寬控制,隊列的排隊整形,一般為TBFHTB二、Linux流量控制演算法分二種:1、無類演算法用於樹葉級無分支的隊列,例如:SFQ2、分類演算法用於多分支的隊列,例如:PRIOTBFHTB三、具體實現:1.在網卡上建立以SFQ演算法的限流#tcqdiscadddeveth0roothandle1:sfqSFQ參數有perturb(重新調整演算法間隔)quantum基本上不需要手工調整:handle1:規定演算法編號..可以不用設置由系統指定..#tcqdiscshdeveth0顯示演算法#tcqddeldeveth0root刪除注:默認eht0支持TOS2.在網卡建立以TBF演算法的限流#tcqdadddeveth1roothandle1:速率256kbit突發傳輸10k最大延遲50ms#tc-sqdshdeveth1統計#tcqddeldeveth1root刪除3.在網卡建立PRIO#tcqdiscadddeveth0roothandle1:prio#此命令立即創建了類:1:1,1:2,1:3(預設三個子類)#tcqdiscadddeveth0parent1:1handle10:sfq#tcqdiscadddeveth0parent1:2handle20:注:此為TBF限速的另一寫法,前文有講解.#tcqdiscadddeveth0parent1:3handle30:sfq4.WEB伺服器的流量控制為5Mbps,SMTP流量控制在3Mbps上.而且二者一共不得超過6Mbps,互相之間允許借用帶寬#tcqdiscadddeveth0roothandle1:#tcclassadddeveth0parent1:0classid1:.這部分按慣例設置了根為1:0,並且綁定了類1:1.也就是說整個帶寬不能超過6Mbps.#tcclassadddeveth0parent1:1classid1:.#tcclassadddeveth0parent1:1classid1:.建立了2個類.注意我們如何根據帶寬來調整weight參數的.兩個類都沒有配置成"bounded",但它們都連接到了類1:1上,而1:1設置了"bounded".所以兩個類的總帶寬不會超過6Mbps.別忘了,同一個CBQ下面的子類的主號碼都必須與CBQ自己的號碼相一致!#tcqdiscadddeveth0parent1:3handle30:sfq#tcqdiscadddeveth0parent1:4handle40:sfq預設情況下,兩個類都有一個FIFO隊列規定.但是我們把它換成SFQ隊列,以保證每個數據流都公平對待.#tcfilteradddeveth0parent1::3#tcfilteradddeveth0parent1::46.過濾器過濾示例#::1在10:節點添加一個過濾規則,優先權1:凡是去往22口(精確匹配)的IP數據包,發送到頻道10:1..#::1在10:節點添加一個過濾規則,優先權1:凡是來自80口(精確匹配)的IP數據包,發送到頻道10:1..#:prio2flowid10:2在eth0上的10:節點添加一個過濾規則,它的優先權是2:凡是上二句未匹配的IP數據包,發送到頻道10:2..#tcfilteradddeveth0parent10:.3.2.1/32flowid10:1去往4.3.2.1的包發送到頻道10:1其它參數同上例#tcfilteradddeveth0parent10:.2.3.4/32flowid10:1來自1.2.3.4的包發到頻道10:1#:prio2flowid10:2凡上二句未匹配的包送往10:2#tcfilteradddeveth0parent10:.3.2.1/:1可連續使用match,匹配來自1.2.3.4的80口的數據包
4. 如何通過TC實現基於Linux系統的流量管理
接收包從輸入介面(Input Interface)進來後,經過流量限制(Ingress Policing)丟棄不符合規定的數據包,由輸入多路分配器(Input De-Multiplexing)進行判斷選擇:如果接收包的目的是本主機,那麼將該包送給上層處理;否則需要進行轉發,將接收包交到轉發塊(Forwarding Block)處理。轉發塊同時也接收本主機上層(TCP、UDP等)產生的包。轉發塊通過查看路由表,決定所處理包的下一跳。然後,對包進行排列以便將它們傳送到輸出介面(Output Interface)。一般我們只能限制網卡發送的數據包,不能限制網卡接收的數據包,所以我們可以通過改變發送次序來控制傳輸速率。Linux流量控制主要是在輸出介面排列時進行處理和實現的。
5. linux雙網伺服器架設教程(高分求)
LINUX下雙網雙線伺服器的架設全過程
目的: 現在很多中小型網路有兩條或者多條相同的不同的ISP的網路出口線路
而如何將這兩條線路合理的利用起來 是很多人非常關心的
西安秀網吧資訊會為大家提供更多更好的學習資料和知
此文用通俗易懂的方法的講解了如何初步達到此目的 本方案不需要大量的投資
也不需要改變現有網路結構 並且可擴展性好! 環境:用基於LINUX路由功能 由2.2內核開始,
Linux便開始支持高級路由技術,提供策略路由,流量控制等多項高級路由功能,
配合Netfilter包過濾軟體,可實現許多專業路由器和防火牆才能實現的高級功能
本方案採用RedHat 9.0 系統基礎 系統自帶 IPTABLES 和 IPROUTER2 軟體,
申明:本方案為了表達一個通俗易懂的稱述 很多地方採用大白話方式進行說明,
這對技術來說是不嚴謹的態度,並且在文中可能出現很多錯誤,歡迎指正
希望有更多人能使用此方案而達到自己的目的 可以用在論壇上聯系,
寫的很亂還請大家見諒!
約定:對於具體#作,都是基於Shell下的,就是所謂終端,控制台
我將用橫線閣開,可以看成實際的#作,後面的針對解釋 均採用漢字通俗解
但不能作為實際#作!
一、 硬體選擇和實施:
1。本人在實際#作中選擇了 C3 1G CPU INTEL 815ET晶元組主板(集成顯卡) 128M SDRAM 三張網卡 均是RTL 8139 10/100M 自適應網卡 3G大小心的一塊老硬碟 RedHat 9.0系統盤 光碟機 鍵盤 滑鼠 顯示器|
為安裝使用 過後拆掉,在各個實際環境里 選擇方案不一定要相同 ,但是本人建議 CPU 不低於233M 內存不低於64M 網卡盡量不用8029等10M 設備,如果有條件可以選擇不同的主流網卡 其他 主是要求穩定
2。安裝系統 根據硬碟大小以及個人情況 可任意方式安裝 提示以及建議:
A : 如果分區不是很清楚 可以用 光碟上的PQ 將硬碟分區 第一次接觸的,採用 將6G以下的空間分成EXT3格式的分區 然後接著一256M左右的SWP交換分區
B。 網卡先別一次性裝上, 可先將要用於內網的網卡,先插上,以後系統安裝成功以後再依次插上其他網卡 以免混淆!在安裝的時候 可以完全默認的方式 並且 盡量採用 英文安裝 ,不裝XWINDOWS 也就是可以一路 NEXT下去!!!
3。建立用戶 除了系統自帶的 root 超級管理員帳戶以外 請建立1-2個普通用戶! 更具體的安裝#作 請搜尋網路上其他的文章!或者聯系我,有非常詳細的稱述!
二、 單機的配置 這一步很重要 包括設置好網卡 如果是ADSL的PPOE的撥號方式 還必須設置ADSL上網 並且弄清楚 在硬體上的每一塊網卡和系統裡面的網卡的對應關系!
參考模型 eth0———接內網 RD9.0 LINUX eth1———接外網線路 1 eth2———接外網線路
2 注意 : 在LINUX中表示的以態網卡的方式是ethX X代表的是第幾個設備,對於排序 請根據系統的自設定 然後人為找到對應的網卡,可以採用每張網卡接一條線進行 Ping 的方式確定!
在下面這種情況下 將 eth0 (內網)設置為 IP: 192.168.0.1 Netmask:255.255.255.0 Gateway網關:無 eth1 (線路一) 假如 IP : 218.6.2.211 Netmask:255.255.255.0 Gateway網關:218.6.2.1 eth2(線路二)假如 IP :10.0.0.2 Netmask:255.255.255.0 Gateway: 10.0.0.1 實際#作方式: ———————————————————– ifconfig eth0 192.168.0.1 netmask 255.255.255.0 ifconfig eth1 218.6.2.1 netmask 255.255.255.0 ifconfig eth2 10.0.0.1 netmask 255.255.255.0 ———————————————————– 格式為: ifconfig 設備名 IP地址 netmask 子網掩碼 直接輸入 ifconfig 不帶任何參數的話 系統將顯示當前網路介面信息
至於更詳細的#作方法請參考其他資料! 這樣 就初步設置好了
各個網路介面的 IP地址等! 但是 這樣的設置 可能在重起系統以後就會失效
那麼最直接的方法是 修改 文件!
(在LINUX下 很多地方可以直接修改文件的方式實現,特別是沒有X的時候,顯得特別重要,也最有效!
—— vi /etc/sysconfig/network-scripts/ifcfg-eth0
進入VIM編輯界面 按 「i」 進入編輯模式 大致修改為以下內容
請注意 當一塊網卡被系統正常檢測 只需要改變「=」後面的內容: DEVICE = eth0 ———》設備名,
一般系統自動賦予 ONBOOT = yes ———》是否開機激活 默認 「yes」
BROADCAST =192.168.0.255 ———》
廣播地址 NETWORK = 192.168.0.0 ———》
網路地址 NETMASK = 255.255.255.0 ———》
子網掩碼 IPADDR = 192.168.0.1 ———》
IP地址 提示 BROADCAST =192.168.0.255
和NETWORK = 192.168.0.0 可以根據IP地址來
當掩碼是 24位 (255.255.255.0) 時 BROADCAST是IP地址最後一位變255 NETWORK是 IP地址最後一位變0
修改成功以後 按 「ESC」鍵 然後 Shift+; 號鍵,出現「:」提示符 在 「:」提示符下面 輸入 「w」 並回車 就將設置保存了,然後輸入 「q」退出編輯界面
注意:如果你的eth0也是 用於內網
那麼請將 GATEWAAY= 項刪除 其他兩張網卡,則必須要!!!
如果你裝了X 那麼可以在圖形界面下,才用更合適的工具軟體進行修改! ————————————————– vim /etc/sysconfig/network-scripts/ifcfg-eth1 ————————————————- 上面命令進入設置 eth1 ———————————————— vim /etc/sysconfig/network-scripts/ifcfg-eth2 —————————–
上面命令進入設置 eth2 設置 DNS 一般情況下
如果當系統檢測到網卡並且要求你設置的時候 你就可以將DNS 加入 但是如果你想修改的話,最直接的方法為編輯DNS文件 ——————————
vim /etc/resolv.conf ——————————— 加入DNS IP地址 格式為 nameserver 202.98.96.68 nameserver 61.139.2.69 等
具體DNS IP即可 當以上設置都正常進行以後
重起系統, 檢測設置 ——————————————– ping 192.168.0.1 ping 10.0.0.2 ping 218.6.2.211 ——————————————
檢測正確性 (用Ctrl+C結束) 然後 ,將外網卡正確接入網路 至少你確定能上網!
不管他是用的哪條線路!!!!!!!! 如果一切正常 那麼就表示系統的配置基本正確。
三、多路復用 接下來, 我們 就可以用系統本身的功能以及軟體進行路由規則設置
前面已經提到 2.2以上內核已經帶有很多的高級功能
而RedHat 9.0採用採用的是2.4.20的內核版本 是公認的比較穩定的,
當然 你可以選擇重新編譯升級內核的方式 升級到2.6.X 版本的內核,體驗更新的功能,
但是這不是本文所要考慮的內容。
在我們將多路復用之前 最好是先打上兩個補丁 A 因為路由緩存的機制,
所以在某一時間斷 連接到某一點上的線路是不變的,而必須等到失效才能重新選擇,(
對於RedHat9.0的系統內核 需要打這之PATH
下載地址為: http://www.ssi.bg/~ja/patch-2.4.20-ja1.diff 這之PATCH 解決了在系統內核中equailze參數不生效的問題 http://www.teatime.com.tw/~tommy/linux/equalize.patch 將這兩個PATCH 下載到本地 比如 直接放在 /root目錄下那麼這樣做,
將PATCH補進內核: ——————————————————– /usr/src/linux-2.4.20-8/patch -p1 ——————————————————— ————————————————- /usr/src/linux-2.4.20-8/patch -p1 ————————————————– 執行完以後 我們就基本上需要的軟體都准備齊全了
路由規則: 首先 我們使用 ip route show 命令來顯示當前默然的路由規則: ———————————————— ip route show ————————————————- 可以看見 如: 0 lookup local 32766 main 32767 default 這是原有系統的路由規則!
那麼 現在 我們使用自己的規則替代或者說將自己的規則的優先順序提高於原有規則,
接著 我們創建路由表, 注意 創建的路由表的根據是上面的網路介面 ,
所以請根據我上列舉的具體設置來理解 新建命名為 10 和 20的規則
分別針對兩個外網線路 規則「10」 ———————————————————- ip rule add pref 10 from 218.6.2.211 table 10 ———————————————————- 規則「20」 ———————————————————- ip rule add pref 20 from 10.0.0.2 table 20 ———————————————————- 設置main表 ——————————————————— ip route add 218.6.2.0 dev eth1 src 218.6.2.211 ip route add 10.0.0.0 dev eth2 src 10.0.0.2 ———————————————————設置完成
上面的只需要根據不同的IP地址以及對應的硬體設備 修改其部分內容即可 題外: 在LINUX路由表中可以使用0-255來代表不同的規則 而且每個規則都可以用別名來表示,
如果大家對此感興趣 可以查看修改一個文件裡面的內容來達到目的: 原文件給出了幾個例子包括 lookup、 main、 default
需要自己添加的 按照這樣的格式修改: 在空行處插入 : 規則號 規則名稱 10 OUT1 保存即可 路由選擇的優先順序,是數值越小 代表權越大,所以一個路由選擇將先查看 0 規則,既 環路 然後查看下一個規則
在本例子中,當一個數據在路由選擇的時候,過了0規則 然後就是 10 規則 接著 20 規則 一直往下!直到匹配為止 通過以上設置, 我們就可以控制住通過某一條線路(ISP)的數據包的返回信息也從原線路返回。這將對運行在路由上的所有的進程起作用!!!並且實現了最基本的流量分割,很簡單吧! 然後 就是做負載均衡了!可以將不同的請求根據自定設置發往不同的線路!
我們已經安裝好了補丁 並且設置好的各種規則, 對於負載均衡,
可以使用這條語句來實現: ————————————————————————————————- ip route replace default \nexthop via 218.6.2.1 dev eth1 weight via 10.0.0.1 dev eth2 weight 1 ————————————————————————————————- 50
這樣 我們就改變了預設的路由為多路路由!!!!並且我們可以通過改變 weight 參數的值來指定 一條線路的優先權大於 另有條線路 這在兩條線路質量不相同的時候是種不錯的選擇 -.M 5sUvsc
如: —————ip route replace default \nexthop via 218.6.2.1 dev eth1 weight \ via 10.0.0.1 dev eth2 weight —————————————————————-
注意:特別 應該指出的是,因為上面的均衡是根據路由進行的,而路由是根據CACHE選擇的,所以這樣的均衡不是100%的准確,在實際使用中 最多能達的70%的效率,對於經常訪問的某一遠程站點,會一直使用同一條線路
求通過不同的線路發送,已經快於原先單條線路了。同時,就現階段而言,沒有ISP的配合 是不可能達到100%的精確的!!!! 現在 負載均衡已經基本設置完成了, 你就可以將外網兩條線路接上對應的網卡,特別注意 必須是對應的網卡!
仍然用 ping 命令來檢測 兩條線路是否能在同時 ping 通! ping 線路1ISP出口網關 ping 線路2ISP出口網關 這是一種很好的方法, 各線路的從內網出去以後最先經過的是ISP的網關,並且在正常情況下都是允許 ping 探測的!!
如果都能同, 那麼 你已經正確的完成設置了!!!! 你的這台單機已經可以使用兩條線路同時上網了,系統在你進行網路連接的時候,根據每條線路的輕重區別 來為你將連接請求合理的分發到兩條線路上!! 四、帶動內網機器上網 IP偽裝(NAT)、埠轉發 配置好單機的多重路由功能以後,如何讓他沖當內網的網路出口伺服器,帶動其他機器上網呢,
這將是此節的重點,並且,這部分內容單獨來將,已經是將一個LINUX#作系統配置成路由器的具體步驟了! 首先,我們應該確定系統已經安裝了IPTABLES 在大多數基於2.2內核的LINUX#作系統中,已經默認安裝了次軟體!
通過下面的命令就可以實現 IP偽裝
註: 裡面幾個具體數據將安裝本實例問准,我會在後面提到!
A、定義IPTABLES位置(不是必須): ———————————– IPTABLES=」/usr/##in/iptables」 —————————–
B、清除原有防火牆規則設置: ———————————– IPTABLES -P INPUT ACCEPT IPTABLES -P FORWARD ACCEPT IPTABLES -P OUTPUT ACCEPT ——————————-
C、清除NAT規則設置 ————————————— IPTABLES -t nat -P PREROUTING ACCEPT IPTABLES -t nat -P POSTROUTING ACCEPT IPTABLES -t nat -P OUTPUT ACCEPT IPTABLES -t mangle -P PREROUTING ACCEPT IPTABLES -t mangle -P OUTPUT ACCEPT——————————-
D、清除在防火牆和NAT中不是默認的連接 ————————————- IPTABLES -F IPTABLES -t nat -F IPTABLES -t mangle -F IPTABLES -X IPTABLES -t nat -X IPTABLES -t mangle -X ————————————
E、載入模塊 (必須): ———————————— /##in/depmod -a /##in/modprobe ip_tables /##in/modprobe ip_conntrack /##in/modprobe iptable_filter /##in/modprobe iptable_nat /##in/modprobe ipt_limit /##in/modprobe ipt_state /##in/modprobe ip_conntrack_ftp ————————————-+
F、打開轉發功能(必須) ——————————————– echo」1〃 /proc/sys/net/ipv4/ip_forward ——————————————–
G、設置轉發規則: ———————————————————————– iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/24 -j MASQUERADE iptables -t nat -A POSTROUTING -o eth2 -s 192.168.0.0/24 -j MASQUERADE ———————————————————————– A B C D為可選
但是請注意 如果你的IPTABLES不在 /usr/##in/ 這個目錄 那麼 你最好是選擇這幾項
並且 該成自己所在的目錄 如果你選擇了使用B C D 那麼 你必須 選擇A 就是必須給「IPTABLES」 這個常量賦值,
因為在 LINUX 默認中 全部大寫的 IPTABLES 不是一個合法的iptables 命令 當然,如果你的系統已經定義了 iptables 的路徑
那麼, 將上面的 IPTABLES 換成小寫的 iptables 也行! E F G則是必須要的, 當上面的規則成功設置以後, 將你的內網網卡連上交換機 等,修改其他機器的IP地址為 192.168.0.X 掩碼為 255.255.255.0 (X為2-254之間) 生效後,就能通過你剛才打造的LINUX路由器上網了!!!
但是這些設備在重起後就會失效,如何解決了
將這些命令寫入腳本 讓他開機啟動 即可達到保存的效果!具體
將各命令寫入一文本文件, 並形象的取名 比如,將IPTABLES設置 保存到當前工作目錄裡面的一個文件 並取名為 nat —————- vi nat —————- #復制內容 IPTABLES=」/usr/##in/iptables」 IPTABLES -P INPUT ACCEPT IPTABLES -P FORWARD ACCEPT IPTABLES -P OUTPUT ACCEPT IPTABLES -t nat -P PREROUTING ACCEPT IPTABLES -t nat -P POSTROUTING ACCEPT IPTABLES -t nat -P OUTPUT ACCEPT IPTABLES -t mangle -P PREROUTING ACCEPT IPTABLES -t mangle -P OUTPUT ACCEPTIPTABLES -F IPTABLES -t nat -F IPTABLES -t mangle -F IPTABLES -X IPTABLES -t nat -X IPTABLES -t mangle -X /##in/depmod -a /##in/modprobe ip_tables /##in/modprobe ip_conntrack /##in/modprobe iptable_filter /##in/modprobe iptable_nat /##in/modprobe ipt_limit /##in/modprobe ipt_state /##in/modprobe ip_conntrack_ftp echo 「1〃 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/24 -j MASQUERADE iptables -t nat -A POSTROUTING -o eth2 -s 192.168.0.0/24 -j MASQUERADE
存檔退出 存檔退出 重起即可生效 (根本不需要用戶登陸執行!)
其他腳本也是一樣道理 各位 所有基本的#作到此為止 我想 如果你能看完,
那麼你自己就完全能用LINUX 打造一個高級路由 不要猶豫 他的性能 絕對敢和市面上價值幾大千的路由器成品媲美~!!!
感謝網路上這方面的網站、論壇介紹的很多知識 使我能夠獨立實施整個方案 並且詳盡的寫出來! 感謝LINUX 以及無數的開發人員 是他們 給我們構造了一個強大 自由 的#作系統及軟體!
接下來,我將對其他更細微的有關#作方法、心得 寫下來,希望對現在採用LINUX 類LINUX系統 、軟體做路由的朋友有所幫助,
如:斷線救援,如何在一條線路斷開以後立刻啟用另一條線路負擔整個網路任務,並且在線路連同以後,又重新自動啟用,如何為此提供最詳盡的,有效的,簡易的方案 一盤秀的技巧設置 如果面對一盤秀的諸多問題了?
讓我們一起來 在一張小小的軟盤上反轉乾坤 高級路由策略 ,想某一個游戲 只走某一條線? 想限制某些人 或者某些機器的上網需求,我們照樣能辦到,並且能做得更好!!!!!!!!!
動態路由,電信級路由 如何在一台投資根本不多的LINUX 類LINUX機器上 實現更強大的功能,如 各種高級動態路由 並使其有更好的擴充性 和靈活性!!!為我們在網路接入方面多一個選擇!!!多一點放心!!! 。。。。。。。。。。。。。。。。。
我將把這個方案中所用到的腳本 和補丁 打包放在網上, 敬請 指正!!!
我於昨日晚,測試完所有的腳本, 包括在兩種不同的雙線路下測試, ?
我採用的機器的配置和前一次差不多 P2 433 CPU 128M SDRAM 3.1G 硬碟 三張8139 10/100M 自適應網卡,上100 M FULL 其他外設,在配置的時候用,
採用RedHat 9.0 系統,最小化安裝. 網路具體情況, A環境 100台機器, 一條3M ADSL 固定IP 一條 4M 光纖 線路等值使用 將系統配置好,並讓內網機器上網, 使用網路螞蟻,
在機器1上下載天虎網下 載中心(down.tyfo.com)的2000 SP4補丁 5線程, 最高速度 450K/S 最低速度 350K/S 平均值 410K/S 在機器2上同時也開5線程下載 綿陽169 下載中心的 2000 SP4 最高速度為 310K/S 最低速度為280K/S 平均為302/S
由此,可以看出, 基本上完全使用了線路的帶寬, 並且,是分到兩條線路在 進行數據交換, 而我在LINUX路由上,用tcpmp 查看當前系統網路情況, 可以看 出 每條線上都分發的有連接, 並且一個很有趣的現象出現了,
當我在內網機器上 打開網頁的時候,他通過 線路1連接到DNS 解析了域名,而又將連接從 線路2發出! B 環境,40台機器 兩條等值的帶寬相同的 但是不同ISP 的ADSL線路 均為2M 下行 640K 上行速度! 一為電信 一為網通, 而上次有位朋友提到,
當伺服器 是電信的時候內網連接可能卡,慢的情況,, 我針對此做了個測試, 在路由中寫入 規則,當遠程站點為電信IP段的時候,選擇電信線路出口,當遠程站點IP為網通IP段 的時候,選擇網通線路出口, 這樣緩沖了交差連接導致網速慢的情況, 但是,另一 個現象發生了,電信線路上感覺比較擁擠 , 在內網同時進行任意游戲,上網,聊天, 下載文件的時候, ADSL線路的請求等待隊列都已經比較長, 畢竟ADSL的上行只有 640K 因為機器不是很多 所以感覺不明顯,
最後我做了個更詳細的規則 1.只對北方的或者其他物理位置較遠的電信IP 段進行必須通過電信線路這 個規則, 2. 對於任意位置的網通IP段必須通過網通線路連接, 過後測試,基本 上兩條線路的使用比較均衡, 相對來說,連接到在物理位置上很遠的遠程站點進行 下載和游戲的不是很多, 因為還有很大一個因素是,遠程站點的伺服器配置,以及 經過的中間節點的數目及網路性能等,如果你對此還不滿意 你可以進行更加細微 的設置 斷線救援方面, 很遺憾 在這個環節上,因為ISP的限制,導致此功能在實施 過程中遇見了一點點問題, 因為 我們這里的ISP ,不允許用ICMP探測, 當然,可 以探測到某一條線路的網關, 也就是說,比如一條光纖和一條ADSL 光纖為網關為 218.6.2.1 ADSL網關為61.139.54.1 那麼同時ping 這兩個IP地址來探測線路情 況,是可行的,, 但是 當某一條線路被停用以後,, 就有可能不能在線路恢復的 時候重新啟用 因為,,ISP不運行從光纖線路上去pingADSL網關,當ADSL斷掉的時候 ,系統將從路由中刪除ADSL連路,只有光纖在使用, 這個時候,不管ADSL是否正常, 都沒辦法ping 通 ,返回的值永遠是」0〃 如果你的地方ISP沒有這個限制的話, 就沒有這個問題, 並且會執行得很好. 針對這個問題,我會考慮在短時間了去尋 找其他的方法!!! 而對於」網路游戲經常斷」這個情況, 在線路及伺服器正常的情況下是不可能 出現的, 就算有這種情況出現,問題都不在於內部網路的路由上! 如果你是以下情況 那麼 你可以採用我的文件,並簡單修改,就能實現起強大 的功能, 有3張物理網卡(兩條外線),, 或者2張網卡(一條外線)+一固定ADSL 好了,, 廢話就到此為止吧! 每個目錄下面都有相應的說明文件 詳細說明,該目錄下面需要改的文件,不需要改的文件,所需修改的文件的具體 位置 約定 : 任何設置文件裡面的參數都有統一性, 請注意 最好是保持變數名 的一致 便於項目的設置和問題的查找 如: OUTIF1 代表外網卡設備1 OUTIF2 代表外網卡設備2 GW1 代表外網線路1(OUTIF1)的網關 GW2 代表外網線路2(OUTIF2)的網關 IP1 代表外網網卡1的IP地址 IP2 代表外網網卡2的IP地址 5288 NETMASK1 代表外網網卡1的掩碼 NETMASK2 代表外網網卡2的掩碼 你僅僅需要修改 引號 「」 裡面的對應內容即可 注意 請保證文件的格式 可用 windows的記事本打開, 但是可能將文件 內容表示成連續的段 中間會用 隔開,請不要刪除這個空字元 所有文件更改成功以後, 在當前目錄下 執行 命令 sh go 等待一分鍾左右 系統將重啟,在重啟後, 所有的設置將生效
6. linux系統中如何限制網路流量
限制網路流量速率的一種方法是通過一個名為trickle的命令行工具。通過在程序運行時,預先載入一個速率限制 socket 庫 的方法,trickle 命令允許你改變任意一個特定程序的流量。 trickle 命令有一個很好的特性是它僅在用戶空間中運行,這意味著,你不必需要 root 許可權就可以限制一個程序的帶寬使用。要能使用 trickle 程序控製程序的帶寬,這個程序就必須使用非靜態鏈接庫的套接字介面。
將你的 scp 會話的最大上傳帶寬設定為 100 KB/s:
$ trickle -u 100 scp backup.tgz alice@remote_host.com:
另一種控制你的帶寬資源的方式是在每一個介面上限制帶寬。這在你與其他人分享你的網路連接的上行帶寬時尤為實用。同其他一樣,Linux 有一個工具來為你做這件事。wondershaper就是干這個的。
wondershaper 實際上是一個 shell 腳本,它使用 tc 來定義流量調整命令,使用 QoS 來處理特定的網路介面。外發流量通過放在不同優先順序的隊列中,達到限制傳出流量速率的目的;而傳入流量通過丟包的方式來達到速率限制的目的。
舉個例子, 將 eth0 的最大下載/上傳帶寬分別設定為 1000Kbit/s 和 500Kbit/s:
$ sudo wondershaper <interface> <download-rate> <upload-rate>
7. 聽說用Linux系統可以控制流量
用ulimit 這個命令。
ulimit:顯示(或設置)用戶可以使用的資源的限制(limit),這限制分為軟限制(當前限制)和硬限制(上限),其中硬限制是軟限制的上限值,應用程序在運行過程中使用的系統資源不超過相應的軟限制,任何的超越都導致進程的終止。
ulimited 不限制用戶可以使用的資源,但本設置對可打開的最大文件數(max open files)
和可同時運行的最大進程數(max user processes)無效
-a 列出所有當前資源極限
-c 設置core文件的最大值.單位:blocks
-d 設置一個進程的數據段的最大值.單位:kbytes
-f Shell 創建文件的文件大小的最大值,單位:blocks
-h 指定設置某個給定資源的硬極限。如果用戶擁有 root 用戶許可權,可以增大硬極限。任何用戶均可減少硬極限
-l 可以鎖住的物理內存的最大值
-m 可以使用的常駐內存的最大值,單位:kbytes
-n 每個進程可以同時打開的最大文件數
-p 設置管道的最大值,單位為block,1block=512bytes
-s 指定堆棧的最大值:單位:kbytes
-S 指定為給定的資源設置軟極限。軟極限可增大到硬極限的值。如果 -H 和 -S 標志均未指定,極限適用於以上二者
-t 指定每個進程所使用的秒數,單位:seconds
-u 可以運行的最大並發進程數
-v Shell可使用的最大的虛擬內存,單位:kbytes
eg: ulimit -c 1000(可以先通過ulimit -c 查看原來的值)
8. linux中如何控制埠流量
配置網卡
建立一台虛擬機,並安裝完成後以橋接的方式在虛擬機上面添加兩張網卡。分別為eth0和eth1。
eth0: a.b.c.d(外網的上網地址)
eth1: 172.16.44.1(做為內網的網關)
Tip
原先我使用eth0:0的這種虛擬網卡的形式去配置一直不成功,後來使用雙網卡的時候一直忘了把eth0:0這張虛擬網卡刪掉導致了限速配置一直不成功,浪費了大把的青蔥。
配置iptables nat
#開啟ip_forward
echo "1">/proc/sys/net/ipv4/ip_forward
#清除原來的防火牆規則
iptables -F
iptables -t nat -F
iptables -t mangle -F
#添加nat轉發
iptables -t nat -A POSTROUTING -s 172.16.44.0/24 -o eth0 -j MASQUERADE
通過執行上面的代碼後,區域網內的電腦就可以上網了。
埠轉發
由於我的內網還掛了網站,所以要開啟80埠的轉發。
iptables -t nat -I PREROUTING -p tcp -d a.b.c.d --dport 80 -j DNAT --to 172.16.44.210:80
iptables -t nat -I POSTROUTING -p tcp -d 172.16.44.210 --dport 80 -j SNAT --to 172.16.44.1
這條命令指定外網地址a.b.c.d的80埠轉發到172.16.44.210:80上。由於是雙網卡,所以需要做一下迴路。
下載限速
下載限速要在eth1上面做,判斷數據包的目的地址來做限制。tc包括三部分:隊列、類、過濾器。我使用了htb方式去限制速度,也可以使用cbq,但cbq配置比較復雜一點,而且據說性能沒htb好。
#刪除原來的tc規則隊列
tc qdisc del dev eth1 root
#添加tc規則隊列
tc qdisc add dev eth1 root handle 10: htb default 256
#生成根類
tc class add dev eth1 parent 10: classid 10:1 htb rate 100mbit ceil 100mbit
#支類列表用於限制速度
#這里的rate指的是保證帶寬,ceil是最大帶寬。
tc class add dev eth1 parent 10:1 classid 10:10 htb rate 400kbps ceil 400kbps prio 1
#添加支類規則隊列
#採用sfq偽隨機隊列,並且10秒重置一次散列函數。
tc qdisc add dev eth1 parent 10:10 handle 101: sfq perturb 10
#建立網路包過濾器,設置fw。
tc filter add dev eth1 parent 10: protocol ip prio 10 handle 1 fw classid 10:10
#在iptables裡面設定mark值,與上面的handle值對應。
iptables -t mangle -A POSTROUTING -d 172.16.44.130 -j MARK --set-mark 1
通過上面的代碼就可以限制172.16.44.130這台機子的下載速度到400kbps。
Tip
經過實際測試這里的kbps實際上就是KB/S每秒千位元組。另一個單位是kbit,這個才是每秒千比特。這里的172.16.44.130也可以寫成一個網段,比如:172.16.44.0/24
上傳限速
上傳限速的原理其實跟下載的差不多,只不過限制的網卡不同,要在eth0上過濾來源地址去限制。
#刪除原來的tc規則隊列
tc qdisc del dev eth0 root
#添加tc規則隊列
tc qdisc add dev eth0 root handle 20: htb default 256
#生成根類
tc class add dev eth0 parent 20: classid 20:1 htb rate 100mbit ceil 100mbit
#支類列表用於限制速度
tc class add dev eth0 parent 20:1 classid 20:10 htb rate 40kbps ceil 40kbps prio 1
#添加支類規則隊列
tc qdisc add dev eth0 parent 20:10 handle 201: sfq perturb 10
#建立網路包過濾器
tc filter add dev eth0 parent 20: protocol ip prio 100 handle 2 fw classid 20:10
iptables -t mangle -A PREROUTING -s 172.16.44.130 -j MARK --set-mark 2
Tip
跟下載不同的是POSTROUTING要改成PREROUTING,-d改成-s。
觀察連接數
通過iptables的nat連接可以通過下面的代碼查看。至於統計連接數可以寫代碼實現,也可以利用awk,grep等工具。反正裡面的內容就是文本,處理起來也比較簡單。
cat /proc/net/ip_conntrack
寫在結尾
到此上網、埠轉發和流量限制都已經實現。下次再考慮配置個dhcp server和dnsmasq。至於一些路由器其它諸如mac地址綁定,限制上網等用到的時候再去研究研究。
9. 在Linux下 路由表項中有兩條到相同目的IP的路由,如何控制IP包走那一條路由,即可否控制IP包下一跳地址。
很遺憾,不可以這樣均衡分配的,linux下包發送原理是先找路由規則,沒有配置高級路由的就是main這個規則,
也就是route -n或ip route show看到的結果都是main規則下的。
然後找路由,路由是有優先順序的,同等優先順序下,按ip route show顯示順序匹配發送,一旦匹配,後面的就不會
再去看了。
所以根據路由不可以這樣均衡分配的,永遠都辦不到。
但是其它一些情況,比如你這台linux是伺服器,你只是希望上面的網站流量分布在不同網卡,那很容易辦到,為什麼上
面那情況不可以,而現在又可以了呢,因為網站訪問對這台linux來講是被動發送數據的,從哪兒進來就會從哪兒回復出去。
通過DNS或負載均衡器很容易實現。
但你linux做為客戶端僅僅是去上別的網路,是主動發包的,會去找你本機的路由,況且你目的IP相同,那連分類走路由的機會都沒有了。
除非從時間上錯開,定期自動換網關。哈哈