Enterprise Network QoS
10/16/2005, 17:52 - Network
企業網路的 QoS,因為有很多的 Application 需要大量的頻寬,但是因為企業內部網路是用來作為生財工具,所以要如何保證每一種 application 都可以公平的分配到應有的頻寬是一個很重的課題,而若是頻寬非常足够,那都沒有問題,因為在傳輸資料上不會有不公平或是 delay 產生,但是若是己經用得差不多了,而且常會發生 delay ,這時就一定要先作 QoS 的規劃,先讓應該要傳送的資料先送,而且對公司的生財工具的 application 及比較需要注重 delay 的一定要優先,而一些奇怪的應用或是可以取代的就要放在比較低的優先權,而加大頻寬是最後的選擇。不過在企業網路上最大的問題,因為大都是使用 LAN ,所以資料大都是在同一個 broadcast domain 上,這時就應該使用 VLAN 來將網路作分割邏輯上的分割,並且可以利用 802.1p 的 CoS 作為 QoS 時的 mark。但是也因為很多的企業在 access layer 上大都使用 layer 2 switch,而且不 support VLAN (或是局部 support) 這樣使用得 QoS 的規劃相對因難。而且大都會遇到不同廠家的 switch 串連的問題。若是同一定的設備,那也還好,可以比較簡單的規劃及設定,而不同家作出來的設備,雖然有 follow standard 但總是會遇到有些功能是和別人不同,這樣就加重了在規劃時的困難。

發表回應 發表回應 ( 654預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3 / 1759 )

由 Metro Ethernet 看網路未來
10/13/2005, 23:04 - 今天
今天的課程談到 Metro Ethernet 也可以說是長距離的 Ethernet ,將 ADSL/ADSL2/ADSL+/VDSL A-PON/E-PON 等等全部算進去. 這些在使用上最重要的課題就是 QoS 的實現.因為使用原本的 Ethernet frame 是無法管理頻寬的使用,不過現在可經由加上 802.1p 而取得 3 bit 8 level 的 CoS 欄位,還可以和 IP TOS 或者是 IP DSCP 等配合,而且也可以和 MPLS EXP 配合,而且可以互相 mapping.如果這些開始大量的佈建,看來我們的 bandwidth 又要再向上升,而價格會和現在一樣(可能會由 5Mb 開始向上算).到時要煩的是找什麼東西來用這些頻寬, M$ Media Center ?呿!

我比較想用新 iMac G5 的搖控器試試看放音樂及看 DVD,以及直接由這個搖控器加上耳機聽音樂或撥打網路電話或者有bluetooth 可以和我的手機連接,這樣子的搖控器才是棒,但不知道會不會有人作出來.

還有就是線上 Game 不需要再用安裝的,而是直接線上 download 直接玩(好像用 windows 是免不了一定要經過安裝的手續,除了少數不用).

還有呢? 可能是線上電影院或第四台(也許該叫作第五台)吧!

如果您有 100Mb 的 Internet 連線,您要作什麼?


發表回應 發表回應 ( 706預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3 / 1830 )

精采的 TWNIC 教育訓練課程
10/13/2005, 01:12 - Network
最近報名了 TWNIC 2005 年 IP 教育訓練課程 中的 IP 位址申請規劃與資管理(6小時)及 QoS Workshop(18小時)兩個課程,內容還不錯。在二年前有參加過IPv6 的課程,免費送參加者一人一本中文的 IPv6 的書IPv6理論與實務,定價大約 600元。當然不是說有東西拿是好事,而是 TWNIC 在主要的工作業務之外,對於教育訓練推廣也是很用心的。

IP 位址申請規劃與資管理主要是談有關 ISP 的 IP 位址的規劃,及如何申請新的 IP address。
其中有段是介紹 Internet 的管理組職架構,從 IANAAPNIC、TWNIC 至 ISP。不過在有關於 Portable IP address 及 AS number 申請,因為主要是給 ISP 或超大型企業用的,所以在收費及一次申請的數量上都非常的大,一次至少要申請 8 個 class C IP address (CIDR preifx /21),收費是以每年每個 IP address 1美金計。這對於我這種在公司有 Multi-Homeing 要求,但並不需要這麼大的網路架構的人來說是有需要,可是實在沒有法子說出口去申請這種服務。而若是選擇用 IPv6 則是還要看 ISP 的臉色,而且 IPv6 一次就給 preifx /48 也有點大吧,不然就只有用 Tunnel broker了。

QoS Workshop 主講人是 Cisco Taiwan資深顧問-錢小山先生,我記得有在某 Cisco 課程中見過一面,不過有二三年了吧。

課程講得很精采,很值得一聽。內容是有關於 IP/MPLS 在 QoS 的規劃及設計。並以現在的網路面對到 real-time traffic (主要是 Voice over IP)的要求,要如何調整網路設定來符合 Voice packet 對時間非常 sensitive 要求,以及如何使用 QoS 為工具來調整並增加網路的可用度。並區分為 Customer/ISP/Enterpries 等分別分析。當然了,講師來自 Cisco 自然是以 Cisco Router 為主要說明對象。

這種進階課程一般可是要收費的,而且不會太便宜,三十張小朋友是一定要的,不過這次是 TWNIC 免費大方送的,有興趣的人都可以報名,後面還有一次課程。當然了,因為是進階的,您最好要相當了解 Cisco Router/Switch 及 MPLSRED、PQ、CQ、WRR、DiffServ、IP DSCP、IP ToS、Layer 2 CoS等等的運作模式相關知識,不然可能會像今天有位小姐,一到課堂上不一會兒就昏倒了,而且不只上午,下午也一樣,而她身旁的人顯然是好朋友,一看到她倒了,不一會也就加入了,真不知道這兩個人睡這麼多,晚上要作什麼,還有明天會不會又來課堂上睡。相關的課程還有Domain Name 管理DNS 的管理及設定 兩種課程,是給比較面向公司內的網路管理人員上的課。

其中談到 ISP 和客戶間的 SLA (Service Level Aggregment)簽訂,台灣的 ISP 好像不來這套,ISP 對於頻寬的保證,及維修維護的 MTBF - Mean-Time-Between-FailureMTTR - Mean-Time-To-Recovery 都是不管的,這樣子的不保證服務我們這些客戶來說好像不太值得。不過雖然沒有 SLA/SAA(Stabilization and Association Agreement) 作為規範,但在收費上倒是規範得很詳細,一點也不輪國外的收費標準。
發表回應 發表回應 ( 737預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3 / 1691 )

原來Hacker 也對 Blog 很有興趣
10/11/2005, 22:23 - 今天
很久沒有更新了,今天看了看發現有人在站上留言要我更新 Simple PHP Blog 因為有安全性問題,真是謝謝了。而且台灣也有些人也用 Simple PHP Blog 而且還有討論區

對了我更新到 Simple PHP Blog 0.4.5 了。
發表回應 發表回應 ( 577預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3 / 1763 )

Linux gateway with Traffic QoS
10/11/2005, 13:24 - Network
Linux gateway with Traffic QoS

Must install linux package "tc" and "ip2", and need make sure the linux kernel are support the IP traffic shape, and QoS, also Queueing method are enabled.

Here are a Linux with an ADSL line, 2 ethernet interfaces, but because ADSL line traffic is asyncmatic, so the download bandwidth is far more than upload, when upload traffic in full loading, then you can not download even you still got download bandwidth, because the download requirement packets can not be send to destenation because upload bandwidth full loading.

But if we can control the bandwidth with IP QoS, then we can control the bandwidth usage, which type of traffic is more important then others, also reserved some bandwidth for requirement packet go out, so it must go out
first, this is more detail in traffic control.

First we will create some queues for different type traffic queue, then mark the traffic to different type with TCP/UDP and port to identify the traffice type. Also we add more txqueue for interface to get more queue length to keep traffic packets when congestion occur.

This script can work with iptables, and get more control, because you can mark traffic via iptables ( change IP TOS bit ) then move the traffic into different queue, also you can change to different queueing method (Weight Fair Queueing, Weight Round Robin etc ) to get more flatable traffic shapeing.

The most important note is make the bandwidth eater to lower priority
queue, and less bandwidth reserved for that type of traffic packets.


#!/bin/sh
# Traffic controller by Tasuka
# Jan/26/2002
#
echo ""
echo "Traffic Controller V1.0"
echo ""
#
BINPATH=/sbin
TC=$BINPATH/tc
IFCONFIG=$BINPATH/ifconfig
#
#Limit whole IP address traffic selector
# if LIMIT_ALL=1 then limit the limited ip address all traffic
# else just limit select protocol
#
LIMIT_ALL="0"
#
INT_IF="eth0"
INT_IF1="eth1"
EXT_IF="ppp0"
QUEUE_DEPTH="500"
EXT_QUEUE_DEPTH=$QUEUE_DEPTH
INT_QUEUE_DEPTH=$QUEUE_DEPTH
#
TCP="0x06"
UDP="0x11"
EXT_BANDWIDTH="1024Kbit"
EXT_BURST="50Kbit"
#
BANDWIDTH="100Mbit"
AVGPKT="1000"
MAXBURST="20"
LIMITRATE1="128Kbit"
LIMITRATE2="1Kbit"
LIMITRATE3="384Kbit"
MTU="1514"
MPU="64"
LIMIT_IP_GROUP1="192.168.8.0/24 192.168.0.0/24 192.168.2.0/24 \
192.168.3.0/24 192.168.4.0/24 192.168.5.0/24 \
192.168.6.0/24 \
"
LIMIT_IP_GROUP2="192.168.255.255 192.168.1.255 192.168.2.255 \
192.168.3.255 192.168.4.255 192.168.5.255 \
192.168.9.255 192.168.10.255 \
10.255.255.255 10.1.255.255 10.1.1.255 \
10.255.255.255 \
192.168.7.255 192.168.6.255 192.168.8.255 \
172.16.255.255 172.16.100.255 172.16.200.255 \
"
LIMIT_IP_GROUP3="10.0.0.0/8 192.168.8.0/21 "
PASS_IP="172.16.0.0/12 192.168.1.0/24 192.168.7.0/24 \
192.168.9.0/24 192.168.10.0/24 \
"
MIN_SEC="1sec"
MAX_SEC="8sec"
LIMIT_TCP_PROTOCOL="135 136 137 138 139 1080 4661 4662 4663 4664 4665 6699
\
6881 6882 6883 6884 6885 6886 6887 6888 6889"
LIMIT_UDP_PROTOCOL="135 136 137 138 139 161 162 1080 4665 6699 \
6881 6882 6883 6884 6885 6886 6887 6888 6889"
NETBIOS="137 138 139"
#
# Clear a traffic control setting on $DEV
#
echo "Clear traffic control setting"
#
$TC qdisc del dev $EXT_IF root
$TC qdisc del dev $EXT_IF ingress
#
$TC qdisc del dev $INT_IF root
$TC qdisc del dev $INT_IF ingress
#
$TC qdisc del dev $INT_IF1 root
$TC qdisc del dev $INT_IF1 ingress
#
# change the interface's queue depth
echo "Change the interface queue depth"
#
$IFCONFIG $INT_IF txqueuelen $INT_QUEUE_DEPTH
$IFCONFIG $EXT_IF txqueuelen $EXT_QUEUE_DEPTH
$IFCONFIG $INT_IF1 txqueuelen $INT_QUEUE_DEPTH
#
#Create root handle for $EXT_IF
#$TC qdisc add dev $EXT_IF root handle 1: cbq \
# bandwidth $EXT_BANDWIDTH avpkt $AVGPKT mpu $MPU
#
echo "Internet Egress traffic with TBF"
#
$TC qdisc add dev $EXT_IF root tbf rate $EXT_BANDWIDTH latency 50ms \
burst $EXT_BURST
#
echo "Internet Ingress traffic with CBQ"
$TC qdisc add dev $EXT_IF ingress
#
# Create root handle for $INT_IF and $INT_IF1
#
$TC qdisc add dev $INT_IF root handle 1: cbq \
bandwidth $BANDWIDTH avpkt $AVGPKT mpu $MPU
#
$TC qdisc add dev $INT_IF1 root handle 2: cbq \
bandwidth $BANDWIDTH avpkt $AVGPKT mpu $MPU
#
$TC qdisc add dev $INT_IF ingress
$TC qdisc add dev $INT_IF1 ingress
#
echo "Create Traffic Classes"
#
$TC class add dev $INT_IF parent 1:0 classid 1:1 est $MIN_SEC $MAX_SEC cbq
\
bandwidth $BANDWIDTH rate $BANDWIDTH allot $MTU mpu $MPU \
maxburst $MAXBURST avpkt $AVGPKT
#
$TC class add dev $INT_IF1 parent 2:0 classid 2:1 est $MIN_SEC $MAX_SEC cbq
\
bandwidth $BANDWIDTH rate $BANDWIDTH allot $MTU mpu $MPU \
maxburst $MAXBURST avpkt $AVGPKT
#
$TC class add dev $INT_IF parent 1:1 classid 1:100 est $MIN_SEC $MAX_SEC
cbq \
bandwidth $BANDWIDTH rate 95Mbit allot $MTU mpu $MPU \
weight 1Mbit prio 5 maxburst $MAXBURST avpkt $AVGPKT \
# bounded isolated
#
$TC class add dev $INT_IF1 parent 2:1 classid 2:100 est $MIN_SEC $MAX_SEC
cbq \
bandwidth $BANDWIDTH rate 95Mbit allot $MTU mpu $MPU \
weight 1Mbit prio 5 maxburst $MAXBURST avpkt $AVGPKT \
# bounded isolated
#
$TC class add dev $INT_IF parent 1:1 classid 1:200 est $MIN_SEC $MAX_SEC
cbq \
bandwidth $BANDWIDTH rate $LIMITRATE1 allot $MTU mpu $MPU \
weight 1Kbit prio 7 maxburst $MAXBURST avpkt $AVGPKT \
bounded isolated
#
#
$TC class add dev $INT_IF1 parent 2:1 classid 2:200 est $MIN_SEC $MAX_SEC
cbq \
bandwidth $BANDWIDTH rate $LIMITRATE1 allot $MTU mpu $MPU \
weight 1Kbit prio 7 maxburst $MAXBURST avpkt $AVGPKT \
bounded isolated
#
#
$TC class add dev $INT_IF parent 1:1 classid 1:300 est $MIN_SEC $MAX_SEC
cbq \
bandwidth $BANDWIDTH rate $LIMITRATE2 allot $MTU mpu $MPU \
weight 1Kbit prio 7 maxburst $MAXBURST avpkt $AVGPKT \
bounded isolated
#
#
$TC class add dev $INT_IF1 parent 2:1 classid 2:300 est $MIN_SEC $MAX_SEC
cbq \
bandwidth $BANDWIDTH rate $LIMITRATE2 allot $MTU mpu $MPU \
weight 1Kbit prio 7 maxburst $MAXBURST avpkt $AVGPKT \
bounded isolated
#
#
$TC class add dev $INT_IF parent 1:1 classid 1:400 est $MIN_SEC $MAX_SEC
cbq \
bandwidth $BANDWIDTH rate $LIMITRATE3 allot $MTU mpu $MPU \
weight 1Kbit prio 6 maxburst $MAXBURST avpkt $AVGPKT \
# bounded isolated
#
$TC class add dev $INT_IF1 parent 2:1 classid 2:400 est $MIN_SEC $MAX_SEC
cbq \
bandwidth $BANDWIDTH rate $LIMITRATE3 allot $MTU mpu $MPU \
weight 1Kbit prio 6 maxburst $MAXBURST avpkt $AVGPKT \
# bounded isolated
#
$TC qdisc add dev $INT_IF parent 1:1 sfq quantum 1514b perturb 8
$TC qdisc add dev $INT_IF1 parent 2:1 sfq quantum 1514b perturb 8
#
$TC qdisc add dev $INT_IF parent 1:100 sfq quantum 1514b perturb 8
$TC qdisc add dev $INT_IF1 parent 2:100 sfq quantum 1514b perturb 8
#
$TC qdisc add dev $INT_IF parent 1:200 sfq quantum 1514b perturb 8
$TC qdisc add dev $INT_IF1 parent 2:200 sfq quantum 1514b perturb 8
#
$TC qdisc add dev $INT_IF parent 1:300 sfq quantum 1514b perturb 8
$TC qdisc add dev $INT_IF1 parent 2:300 sfq quantum 1514b perturb 8
#
$TC qdisc add dev $INT_IF parent 1:400 sfq quantum 1514b perturb 8
$TC qdisc add dev $INT_IF1 parent 2:400 sfq quantum 1514b perturb 8
#
# filter limited IP address traffic
#
echo " Classfily limited TCP protocol traffic"
#
for IP in $LIMIT_IP_GROUP1 ; do
for PROTOCOL in $LIMIT_TCP_PROTOCOL ; do
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 10 \
u32 match ip dst $IP \
match ip protocol $TCP 0xff \
match ip sport $PROTOCOL 0xffff \
flowid 1:200
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 10 \
u32 match ip dst $IP \
match ip protocol $TCP 0xff \
match ip sport $PROTOCOL 0xffff \
flowid 2:200
#
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 10 \
u32 match ip src $IP \
match ip protocol $TCP 0xff \
match ip sport $PROTOCOL 0xffff \
flowid 1:200
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 10 \
u32 match ip src $IP \
match ip protocol $TCP 0xff \
match ip sport $PROTOCOL 0xffff \
flowid 2:200
#
done
done
#
echo " Classfily by limited UDP protocol traffic"
#
for IP in $LIMIT_IP_GROUP1 ; do
for PROTOCOL in $LIMIT_UDP_PROTOCOL ; do
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 10 \
u32 match ip dst $IP \
match ip protocol $UDP 0xff \
match ip sport $PROTOCOL 0xffff \
flowid 1:200
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 10 \
u32 match ip dst $IP \
match ip protocol $UDP 0xff \
match ip sport $PROTOCOL 0xffff \
flowid 2:200
#
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 10 \
u32 match ip src $IP \
match ip protocol $UDP 0xff \
match ip sport $PROTOCOL 0xffff \
flowid 1:200
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 10 \
u32 match ip src $IP \
match ip protocol $UDP 0xff \
match ip sport $PROTOCOL 0xffff \
flowid 2:200
#
done
done
#
echo " Classfily NETBIOS over IP traffic"
#
for IP in $PASS_IP ; do
for PROTOCOL in $NETBIOS ; do
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 11 \
u32 match ip src $IP \
match ip protocol $UDP 0xff \
match ip sport $PROTOCOL 0xffff \
flowid 1:300
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 11 \
u32 match ip src $IP \
match ip protocol $UDP 0xff \
match ip sport $PROTOCOL 0xffff \
flowid 2:300
#
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 11 \
u32 match ip dst $IP \
match ip protocol $UDP 0xff \
match ip dport $PROTOCOL 0xffff \
flowid 1:300
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 11 \
u32 match ip src $IP \
match ip protocol $UDP 0xff \
match ip dport $PROTOCOL 0xffff \
flowid 2:300
#
done
done
#
if [ $LIMIT_ALL == 1 ] ; then
echo " Classfily limited whole IP address traffic"
#
for IP in $LIMIT_IP_GROUP1 ; do
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 20 \
u32 match ip src $IP \
flowid 1:200
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 20 \
u32 match ip src $IP \
flowid 2:200
#
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 20 \
u32 match ip dst $IP \
flowid 1:200
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 20 \
u32 match ip src $IP \
flowid 2:200
#
done
fi
#
for IP in $LIMIT_IP_GROUP2 ; do
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 5 \
u32 match ip src $IP \
flowid 1:400
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 5 \
u32 match ip src $IP \
flowid 2:400
#
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 5 \
u32 match ip dst $IP \
flowid 1:400
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 5 \
u32 match ip dst $IP \
flowid 2:400
#
done
#
# Limit all broadcast traffic
echo " Classfily limited IP broadcast traffic"
#
for IP in $LIMIT_IP_GROUP3 ; do
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 15 \
u32 match ip dst $IP \
flowid 1:300
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 15 \
u32 match ip dst $IP \
flowid 2:300
#
done
#
# filter none limited IP address traffic
#
echo " Classfily none limit ip address traffic"
#
for IP in $PASS_IP ; do
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 1 \
u32 match ip dst $IP flowid 1:100
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 1 \
u32 match ip dst $IP flowid 2:100
#
$TC filter add dev $INT_IF parent 1:0 protocol ip prio 1 \
u32 match ip src $IP flowid 1:100
#
$TC filter add dev $INT_IF1 parent 2:0 protocol ip prio 1 \
u32 match ip src $IP flowid 2:100
#
done
#
echo "Done"
echo ""
#
發表回應 發表回應 ( 1114預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3 / 1574 )

Active FTP 及 Passive FTP
10/11/2005, 13:20 - 原來如此
Active FTP 及 Passive FTP

在大部份的防火牆設定中,使用 FTP 傳輸檔案時經常會遇到需要設定使用 passive mode 的 FTP.但大部份的 FTP client 軟體,default 大都是 active mode FTP,這二種 FTP 模式在傳輸上有何不同?先了解 FTP 的工作方式,有助於了解 active FTP 及 passive FTP 的不同.

一般的 FTP 使用 TCP port 20 及 21 二個 port. 正常來說, port 20 是傳輸資料用,而 port 21 傳輸命令.但事實上並不是一直使用 port 20 來傳輸資料.

Active mode FTP (主動模式 FTP)
在 Active 模式的 FTP client 一開始時會先使用一個大於 1024(N) 的 TCP port 連結至 FTP server 的port 21. 然後 FTP client 會打開該 port 的下一個數字的 port (N+1) 並送至 FTPserver 說期望下次的溝通可以經由新的 port (N+1),這樣比較不會占用到 FTP server 的 port 21 而影響別的 FTP sessions.同時 FTP server 會使用 port 20 連結至 FTP client 新送過來的 port 號來傳資料.
所以在防火牆上需要打開:

FTP server port 21 from anywhere # 給 FTP client 開始連接
FTP server port 21 to port > 1024 # 給 FTP server 回應 client 命令
FTP server port 20 to port > 1024 # 給 FTP server 開始資料傳輸
FTP server port 20 from port > 1024 # 給 FTP cleint 傳送 data ACK 給 server

所以連接順序為:
1. FTP client use TCP port 1026 for command to FTP server command port 21
2. FTP server use TCP port 21 responed to FTP client command port 1026
3. FTP server use TCP port 20 for sending data to FTP client data port 1027 (1026 + 1)
4. FTP client use TCP port 1027 ( 1026 + 1) for data ACK to FTP server port 20

問題在於使用 active mode FTP 時主控權在 FTP client, FTP client 並不是真正的連至 FTP server 的data port (TCP port 20),它只是告訴 FTP server 它準備在那個 port 接收資料及port+1 傳送 ACK.並期望 FTP server 可以主動連接至 FTP client 所期望的 port.這在使用防火牆的環境中就會造成問題.


Passive mode FTP (被動模式 FTP)
解決主動模式在防火牆外面時所發生無法連接的問題,可以用被動模式 FTP. 在Passive mode FTP 下,FTP client一開始和 active mode FTP 一樣,打開二個 port (N > 1024 及 N+1), 使用第一個port 連接至 FTP server的 port 21,並送出命令 PORT 讓 server 連至 N port 再送出 PASV 命令給 server,這樣會造成 server使用 一個大於 1024 的 port 連接至 client 並送出命令 PORT N ( N >1024 ) 給client. 樣 client 就會使用 N + 1 並開始傳輸資料.

這樣子在防火牆上需要設定

FTP server TCP port 21 from anywhere # FTP client 開始連接至 FTP server
FTP server TCP port 21 to port > 1024 # FTP server 回應 client 控制
FTP server TCP port > 1024 from anywhere # FTP client 資料傳輸
FTP server TCP port > 1024 to client port > 1024 # FTP server 回應資料 ACK至 client data port

連接順序為:
1. FTP client use TCP port 1026 to FTP server command port 21 via command PASV
2. FTP server use TCP port 21 to FTP client 1026 command port for reply data port 2024
3. FTP client use TCP port 1027 (N+1) to FTP server 2024 for data transmit and ACK
4. FTP server use TCP port 2024 to FTP client for data transmit and ACK


因為 passive mode FTP 是由 FTP server 發起一個大於 1024 的 port 至 client,在防火牆上的設定就相對簡單,而可以傳輸資料而不會被防火牆 block.


參考資料 RFC959

註:在 Windows 下原來的 ftp client 並沒有 passive 這個指令,但可以利用 literal 指今來下給 FTP server FTP session 為 passive mode

方法如下:

C:\>ftp 10.10.100.121
Connected to 10.10.100.121.
220 (vsFTPd 2.0.1)
User (10.10.100.121:(none)): ftp
331 Please specify the password.
Password:
230 Login successful.
ftp> literal pasv
227 Entering Passive Mode (10,10,100,121,242,172)
ftp>

可以看到進入 passive mode 了.使用的 port 號碼是 (242*256)+172= 62124

若是 UNIX 但 FTP client 不支援 passive mode 指令可以用 quote pasv

5 回應 5 回應 ( 2996預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3 / 376 )

PM6100 的 G3 加速卡好像掛了
08/14/2005, 23:19 - Apple
不管您知不知道的這個站是架在 Power Macintosh 6100 上的,我都要說---- G3 加速卡好像掛了,開不起來,而我沒時間詳細檢查,就先將 G3 enable extenation 關閉,所以現在這個站是用原本的 PowerPC 601 66MHz 在跑 Yellow Dog Linux 2.3,慢----這是正常的,請見諒!不過好像也還好耶。

可能的話會更換一部 iMac 400,更換機器的原因,不是因為 PM6100太慢,而是因為自 1994 年至今,己過十年,一部電腦用了十年,而在後面的五年是一天二十四小時,一年三百六十五日,不休息的(除了停電或維修等)所有的元件大都年限己至,而且我比較擔心電源及電容等元件的問題,為了全家的安全,所以還是換吧,而軟體系統就要等我試過 YDL 4.0 Gentoo Linux for PowerPC 之後再看了,不排除 OS X 也是一個選項。

而老機器呢?嘿嘿....(To be Continue)
1 回應 1 回應 ( 5495預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3 / 2069 )

VoIP 大戰開打了嗎?
07/17/2005, 00:36 - 想到的
SkypeGizmo Project 二者都是可以直接使用電腦傳送語音,也就是打電話,不過看來 Gizmo 還多了一些功能,像是會議室可以給使用一般電話的人也可以加入,以及 voice mail 或是電話留言等等功能,而且還可以有一個電話號碼讓別人撥進來。而相同部份則是二者都是免費軟體。

看來這種語音電話的需求己經出現了,而且廠商也看到了商機了。不過作為一個使用者,比較好奇的是這種不同網路之間的電話要何時才可以互通呢?如何收費?

對了,M$何時會有這類軟體出現呢?就像Internet ExplorerNetscapeMSN messengerICQ 一樣。會不會有相容的 open source 軟體出現呢?
發表回應 發表回應 ( 558預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3 / 1837 )

OSX with PearPC in Linux with network enable
07/05/2005, 01:06 - Apple
將 PearPC 的網路設定好了,可以連上網路並作 software update。
試過 PearPC 0.4 Prerelease 會很容易當機,然後就再也起不來了,所以換回 0.3.1 就 OK。在 0.4pre 版中使用 3Com 3C59x 的網路卡 driver 會有問題,而 RelTek 8139 會當機。在 0.3.1 版中無法使用 3C59x driver (會說 driver extenation can not load),但可以用系統內建的 Reltek 8139 的 driver。

而在網路設定方面,我修改了 scripts/ifppc_up 內的設定,加上 PPC_BROADCAST_IP 因為不是用 default 的 IP address 192.168.1.80/24 而是
PPC_NETWORK_IP = 172.31.254.8
PPC_HOST_IP = 172.31.254.10/29
PPC_CLIENT_IP = 172.31.254.11/29
PPC_BROADCAST_IP = 172.31.254.15

若沒有加 broadcast IP address,Linux 會用 classful 也就是 B class broadcast 172.31.255.255 。

現在還是只有 384MB RAM total inside Linux 所以還是不太够,而且若是用 swap memory 則跑起來會很慢(VMWare 用了 swap 也一樣會變慢)。

不方便的地方有無法 sleep 及 reboot 以及所有的硬體功能都變得不太好用了(因為硬體還是 PC)
而 Linux kernel 用的是 2.6.11.12 還算穩定,下次會換 Linux-2.6.12.2 試試。
對了,會先將 iMovie/iPhoto 可能連 iTune 也會拿掉,因為看來在模擬器上還真是用不到這些東西。
反正先將就著用吧,至少可以用 OpenVanilla 了,不必用 M$ 的輸入法!
發表回應 發表回應 ( 641預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3 / 1872 )

PearPC 安裝網路卡後續
06/27/2005, 21:55 - Apple
若使用 RelTek 的 driver,OS X 10.3 有內含,可是好像不能用(會在 console 上看到有資料進到 driver 可是有問題),而要利用一點小技巧才可以將 3Com 3C9x driver.ext 放到 OS X 中,裝了之後,則是會在開機時當機,還得多試試。

原來的 3Com3C9x driver 的 iso 無法在 OS X 下安裝(看不到安裝畫面),改用 compile 好的 extention file,但因還沒有網路,所以只可以用 CD ISO 安裝,這時利用 Linux 的 mkisofs 建立一個內含 driver 的iso 檔案給 PearPC mount 進去(mkisofs -o driver.iso Apple3Com3c9x.ext.tgz),就可以自己 copy extention 到 /System/Library/Extentions 目錄下了。

可以用 mount -o loop driver.iso /mnt 來檢查是否成功建立 iso image file。
發表回應 發表回應 ( 601預覽 )   |  [ 0 引用 ]   |  permalink   |   ( 3 / 1881 )


<<開始 <前一頁 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 下一頁> 最後>>