-p 47 是 GRE 封包,VPN 會用到作者:CJbalance
那四行是參考《Linux iptables 技術實務》一書裡頭的內容
這本書對於 iptables 一些奇奇怪怪的應用,諸如:QoS、VPN、多WAN
是一本很有用的參考書籍
-p 47 是 GRE 封包,VPN 會用到作者:CJbalance
那四行是參考《Linux iptables 技術實務》一書裡頭的內容
這本書對於 iptables 一些奇奇怪怪的應用,諸如:QoS、VPN、多WAN
是一本很有用的參考書籍
作者:linux_xp
我看了一下 iptables 裡面的設定:
Chain FORWARD (policy ACCEPT)
target prot opt source destination
access-acl all -- anywhere anywhere
autofw-acl all -- anywhere anywhere
portfw-acl all -- anywhere anywhere
user-filter all -- anywhere anywhere
port-filter all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTAB
LISHED
DROP all -- anywhere anywhere state INVALID
DROP all -- anywhere anywhere state NEW
ACCEPT tcp -- anywhere anywhere tcp
flags:SYN,RST,ACK/SYN limit: avg 1/sec burst 5
ACCEPT tcp -- anywhere anywhere tcp
flags:FIN,SYN,RST,ACK/RST limit: avg 1/sec burst 5
DROP tcp -- anywhere anywhere tcp
flags:FIN,SYN,RST,PSH,ACK,URG/SYN,ACK
ACCEPT tcp -- anywhere <my VPN server ip> tcp
dpt:1723
ACCEPT tcp -- anywhere <my VPN server ip> tcp
dpt:1512
ACCEPT 47 -- anywhere anywhere state NEW,RELATED,ESTABLISHED
=========================================
上面那一行 "DROP all -- anywhere anywhere state NEW"
把所有想要建立新連線的封包都擋住. 這樣要建 VPN 的封包應該也過不了吧 ??
這是 coyote 的 default 設定, 我應該有什麼地方沒注意到吧! 感覺在 coyote 後面架 server 應該不是這麼複雜的事.....
首先 要先感謝linux_xp 大大 無私的分享 造福廣大的網友
小弟也是受益的網友之一 看完這篇coyote軟體Qos 也實作成功了
不過中間發生過一段小插曲
coyote2.22版 如果用腳本檔 來做QoS 好像會怪怪的一直到換成2.24版
才一切都順利的完成
現在才發現linux這東東 利用過年這假期 好好的來研究一番
很感謝linux_xp大大
首先感謝linux_xp大大的文章,照著你的步驟做真的很容易架設完成一台很棒的router,
但qos的部份還是不知如何下手,可否請問一下,如果我只想限制emule及bt的上傳最大只有10k,該如何做?
如果要深入了解 Linux QoS 的設定,可以參考這篇文章:作者:hueikai
【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
以下提供一個範例:
--------------------------------------------------------
1.將這一段貼到 /etc/rc.local
[編輯任意檔]
編輯檔案輸入:/etc/rc.local
首先刪除裡面所有內容,貼入以下內容:
#!/bin/sh
# qos 指令稿 (腳本)範例:限制emule及bt
# qos 的設定需要兩個步驟:tc 指令、iptables 指令
# 以下範例為 tc 指令部份
# 請更改變數區的值,以符合您的網路環境
# ==============================================================================
# 變數設定區 (請依照網路環境,更改變數值)
# ==============================================================================
# 設定對外網卡介面名稱 (連接網際網路的)
EXT_IF="eth0"
# 對內網卡介面名稱 (連接區域網路的)
LAN_IF="eth1"
# 最大上傳速率 (單位:KByte/s)
MAX_UPLOAD="64"
# 最大下載速率 (單位:KByte/s)
MAX_DOWNLOAD="256"
# 要限制 P2P 上傳最大多少 (BT、電驢,兩者合計,單位:KByte/s)
P2P_UPLOAD_RATE="10"
# 要限制 P2P 下載最大多少 (BT、電驢,兩者合計,單位:KByte/s)
P2P_DWONLOAD_RATE="128"
# 以下開始為 sell script 指令稿,建議您若不熟悉請勿隨意更改
# ================================================================================
# 處理字串
# ================================================================================
MAX_UP=`echo $MAX_UPLOAD"kbps"`
MAX_DOWN=`echo $MAX_DOWNLOAD"kbps"`
P2P_UP_RATE=`echo $P2P_UPLOAD_RATE"kbps"`
P2P_DOWN_RATE=`echo $P2P_UPLOAD_RATE"kbps"`
# ==============================================================================
# 上傳方向
# ==============================================================================
# 清除對外網卡所有佇列規則
tc qdisc del dev $EXT_IF root 2>/dev/null
# 定義最頂層的佇列規則
tc qdisc add dev $EXT_IF root handle 10: htb default 20
# 定義第一層根部類別
tc class add dev $EXT_IF parent 10: classid 10:1 htb rate $MAX_UP ceil $MAX_UP
# 定義第二層葉類別
tc class add dev $EXT_IF parent 10:1 classid 10:10 htb rate 1kbps ceil $P2P_UP_RATE prio 1
tc class add dev $EXT_IF parent 10:1 classid 10:20 htb rate 1kbps ceil $MAX_UP prio 0
# 定義各葉類別的佇列規則
tc qdisc add dev $EXT_IF parent 10:10 handle 101: pfifo
tc qdisc add dev $EXT_IF parent 10:20 handle 102: pfifo
# 設定過濾器
tc filter add dev $EXT_IF parent 10: protocol ip prio 100 handle 10 fw classid 10:10
tc filter add dev $EXT_IF parent 10: protocol ip prio 100 handle 20 fw classid 10:20
# ==============================================================================
# 下載方向
# ==============================================================================
# 清除對內網卡所有佇列規則
tc qdisc del dev $LAN_IF root 2>/dev/null
# 定義最頂層的佇列規則
tc qdisc add dev $LAN_IF root handle 20: htb default 20
# 定義第一層根部類別
tc class add dev $LAN_IF parent 20: classid 20:1 htb rate $MAX_DOWN ceil $MAX_DOWN
# 定義第二層葉類別
tc class add dev $LAN_IF parent 20:1 classid 20:10 htb rate 1kbps ceil $P2P_DOWN_RATE prio 1
tc class add dev $LAN_IF parent 20:1 classid 20:20 htb rate 1kbps ceil $MAX_DOWN prio 0
# 定義各葉類別的佇列規則
tc qdisc add dev $LAN_IF parent 20:10 handle 201: pfifo
tc qdisc add dev $LAN_IF parent 20:20 handle 202: pfifo
# 設定過濾器
tc filter add dev $LAN_IF parent 20: protocol ip prio 100 handle 10 fw classid 20:10
tc filter add dev $LAN_IF parent 20: protocol ip prio 100 handle 20 fw classid 20:20
2.將這一段貼到「防火牆自訂義檔」
[防火牆] - [編輯自訂義檔]
將以下內容,貼到該檔案的最末尾,注意前面的內容不可清空
3.Coyote 主機,重開機生效# ==============================================================================
# iptables 貼標籤 (qos)
# ==============================================================================
# 清除 mangle 表格
iptables -F -t mangle
# upload
# 將bittorrent 和 edonkey 封包,歸類為 class 10
iptables -t mangle -A PREROUTING -m layer7 --l7proto bittorrent -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -m layer7 --l7proto edonkey -j MARK --set-mark 10
# download
iptables -t mangle -A POSTROUTING -m layer7 --l7proto bittorrent -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -m layer7 --l7proto edonkey -j MARK --set-mark 10
---------------------------------------------------------------------------------------------------
說明:
此範例,設定 qos 兩個 class (類別)
凡 bt、電驢封包,過濾後都歸類到第一個類別
其餘非 P2P的封包,都歸類到第二個類別
類別1,也就是 P2P,有最大速率限制
類別2,非 P2P 的連線,沒有最大速率限制
優先權方面,類別2 優先於 類別1
也就是說,P2P 會搶輸一般應用,以確保一般應用的連線品質
第一段內容,tc 指令部份,已經考慮過這種限制 P2P 應用可能的情況
理論上直接貼上去,就可以使用了
但有些數值仍需要修改
當然的,每個人的網路環境,並不一定都跟假設的一樣# ==============================================================================
# 變數設定區 (請依照網路環境,更改變數值)
# ==============================================================================
# 設定對外網卡介面名稱 (連接網際網路的)
EXT_IF="eth0"
# 對內網卡介面名稱 (連接區域網路的)
LAN_IF="eth1"
# 最大上傳速率 (單位:KByte/s)
MAX_UPLOAD="64"
# 最大下載速率 (單位:KByte/s)
MAX_DOWNLOAD="256"
# 要限制 P2P 上傳最大多少 (BT、電驢,兩者合計,單位:KByte/s)
P2P_UPLOAD_RATE="10"
# 要限制 P2P 下載最大多少 (BT、電驢,兩者合計,單位:KByte/s)
P2P_DWONLOAD_RATE="128"
所以需要適當的修改
把這些變數的值 (雙引號包住的內容)
修改一下就可以用了
# 字號開頭的是注解,註解是程式的說明,程式執行時會自動略過,不用刻意刪除
Linux 針對每個網路卡,都會給它一個編號
例如:eth0、eth1...........
這個編號,可在 coyote web 管理介面,資訊那邊看到
由網卡的 IP,可判斷它是「對外」,還是「對內」
單位的地方要注意一下,這邊都是採用 KB/s:
例如範例中的:ADSL 2M/512K
除以8,換算後是:上傳 64KB/s,下載 256KB/s
太感謝你了,為了我打了這麼多字,真是不好意思....作者:linux_xp
雖然很多都看不懂,只能照抄,但只要能這樣限制p2p,我就非常滿足了
最後,再次感謝你....
已經將程式下載並且可以開機 真好
1.請問p2p會慢是否為連線數?
2.如果只要開http mail msn 其餘要禁止 請問語法要如何寫?
3.我的線路為2m/256 想要20個人同時上網 可以嗎?
謝謝
1.連線數,是指網卡晶片的封包處理能力,每秒能夠處理多少連線要求。一般來說,就是便宜如螃蟹卡(RTL8139系列) 這種的,也都有上萬的處理能力。作者:nsh1204
因此 P2P 會慢,不全然是網卡晶片的關係。牽涉到更多的東西。
a. ISP 是否有管制 P2P,如:so-net 確定就是有管制的。在 ISP 有管制的情況,設什麼都是沒用的.....
b. win-xp sp2,作業系統本身有限制連線數,預設好像只有幾百,這對 P2P 來講是不夠的,需要破解。搜尋可找到破解教學。
c. 要開放相對應的 port,或稱埠轉換。網路上可搜尋的 BT 加速教學文件,或者電驢也有所謂的高 ID,低 ID,若沒開放相對應的 port 則無法取得高 ID,就會很慢。
而 P2P 下載本身,又牽涉到傳輸原理,電驢是一定比BT 慢的,因為BT 是多點傳輸,電驢不是。而BT下載又牽涉到種子數目,種子是國內還是國外,軟體是哪一個,有無優化.....等等很多因素,,這部份屬於軟體的使用技巧,和路由器無太大關係。
-----------------------------------------------------------------------------
2.網路上常見的服務,都有約定俗成的 port (埠號)
http 80
smtp 21
pop3 110
msn...... msn 有很多 port,要查資料
最簡單的作法,設定防火牆規則,開放這些 port 通過,最後一條禁止全部 (all),即可。
複雜一點,可以用 l7-filter 來設定防火牆規則。尤其像 msn 這種有很多 port 的,用 l7-filter 反而會比較省事。
再來會考慮到現在電腦使用者都變聰明了。即使封到剩 port 80,還是有人會鑽漏洞,讓 P2P 或其它服務的封包出去。所以 l7-filter 是較好的解決方案。
------------------------------------------------------------------------
3.機器的處理能力是沒問題的,但頻寬有限。
所謂的 2M,其實是 2Mbit
換句話說,就是 256Kb/s
除以 20,每人每秒只能使用 25 KB/s
但實際上不是這樣,ISP 號稱 2M,其實都達不到
每秒有 200KB/s 就要偷笑了
這就好像一條大水管,分接的小水管愈多,水流量必定會愈小
有一台很強的大電鍋,每秒能煮一百人份的飯
但材料米不夠,連要煮20人份都有困難,那怎麼半呢?加水煮稀飯囉....
巧婦難為無米之炊就是這個道理
這種情況,建議使用含 proxy 網頁快取伺服器功能,例如:IPCOP,上網效率會比較好。
經過 porxy 快取上網,凡是使用者瀏覽過的網站資料,都會快取一份在硬碟裡,當下次使用者再瀏覽該網站時,會直接從硬碟讀取,而非該網站,因此速度就會很快。
舉個例子:
A 使用者上了 yahoo 或 yahoo 拍賣,瀏覽了一大堆圖片,等了老半天,此時 proxy 皆已把資料都快取到硬碟了。
當 B 使用者再上 yahoo 時,此時就不必再去 yahoo.com 下載圖片或資料,proxy 會直接調資料給他,B使用者看到的會是網頁瞬間開啟,不會超過2秒。
接著,C,D,E,F ......使用者,連上 yahoo,開啟網頁都是2秒左右,瞬間開啟。
也就是說,會慢的只有第一位瀏覽者而已,只要 porxy 快取到資料了,以後不管誰去瀏覽,都會瞬間開啟,讚!
當然,網站是會更新的,proxy 本身也會自動檢查資料,若資料較舊就會重新下載,所以這點不用擔心。
謝謝你詳細的回答 再請問一下 現我以安裝了 請問要如何才能遠端監控 有web?作者:linux_xp
Polipo.tgz作者:linux_xp
Proxy with cache.
這一個我copy檔案到cf後重開機
然後我就再也無法用web登入了…= ="
squid.tgz
Squid proxy
我有裝上去…不過不會用…
設定埵陰N記憶體設為cache的功能
但又有hd的設定…= ="
完全不會做用…
書籤