作者 主題: 整合兩條線路  (閱讀 14731 次)

0 會員 與 1 訪客 正在閱讀本文。

Rachel

  • 懷疑的國中生
  • **
  • 文章數: 67
    • 檢視個人資料
整合兩條線路
« 於: 2002-09-20 11:29 »
各位學長:
小弟接兩條線路,一條ISnet專線,一條台固雙向512K-DSL,我架設了一部NAT主機,接了三張網卡,eth0接ISnet,eth1接台固,eth2接內部,在iptables內設定eth0及eth1的IP都對應到內部網路的一部主機,不好意思,設定都是抄Netman學長的.
for PORT in $TRUSTED_TCP_PORT; do
   iptables -t nat -A PREROUTING -i $T_IF -p tcp -d $IS_IP \
      --dport $PORT -j DNAT --to-destination $WWW
done
for PORT in $TRUSTED_TCP_PORT; do
   iptables -t nat -A PREROUTING -i $T_IF -p tcp -d $T_IP \
      --dport $PORT -j DNAT --to-destination $WWW
done
從eth0的IP進去都可以看到內部主機提供的網頁,從eth1就不行,我想是不是這樣會衝突到,從eth0進來的封包知道要經過eth2跑到內部主機,回應的封包知道要從eth0出去,從eth1進來的也可以跑到內部,但是回應不知道要從哪裡走,所以無法從台固IP看到網頁.
所以我就加了下面這一段
iptables -t nat -A POSTROUTING -p tcp -d $WWW --sport 80 -j SNAT --to $T_IP
想當然爾,結果一樣看不到.
是不是應該配合iproute2的功能還是只要用iptables就可以了?
謝謝

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5396
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
整合兩條線路
« 回覆 #1 於: 2002-09-20 11:47 »
先簡化一下吧.
將線路分開處理, 分別只處理一條線路時, 你的 NAT 指令是什麼 ?
一起用的時候, 就是把那些 PREROUTING, POSTROUTING 的指令都寫出來就可以了.

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17466
    • 檢視個人資料
    • http://www.study-area.org
整合兩條線路
« 回覆 #2 於: 2002-09-20 12:32 »
難點在 routing 上吧?

用這裡的"搜尋"功能:


輸入 multi path 找找吧。

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5396
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
整合兩條線路
« 回覆 #3 於: 2002-09-20 13:13 »
看內容的說明, 比較像是 multi-home 的問題.

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17466
    • 檢視個人資料
    • http://www.study-area.org
整合兩條線路
« 回覆 #4 於: 2002-09-20 13:20 »
嗯,多謝 tim 兄提醒~~~

不過,routing 是雙向的,我不清楚在單一 default gw 的情況下,NAT 會否修改 outbound 的 sourc socket ,而導至 reset 。

啊,個人猜測啦...

kuolung

  • 俺是博士!
  • *****
  • 文章數: 1031
    • 檢視個人資料
    • http://www.kuolung.net
整合兩條線路
« 回覆 #5 於: 2002-09-20 14:25 »
引述: "netman"
嗯,多謝 tim 兄提醒~~~

不過,routing 是雙向的,我不清楚在單一 default gw 的情況下,NAT 會否修改 outbound 的 sourc socket ,而導至 reset 。

啊,個人猜測啦...


netman 兄,您這個 "reset" 是什麼意思,看不懂

不過 他可以試試 把第二個 default gateway 加上去看看
=========================
http://www.kuolung.net
==========================

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17466
    • 檢視個人資料
    • http://www.study-area.org
整合兩條線路
« 回覆 #6 於: 2002-09-20 14:32 »
引述: "kuolung"
netman 兄,您這個 "reset" 是什麼意思,看不懂

不過 他可以試試 把第二個 default gateway 加上去看看


tcp header 中有  6 個 FLAG:
UGR ACK PSH RST SYN FIN

在建立連線的過程中,若一方發現對方傳回的資訊不符(如 sequence/acknowledge、socket 等),就有可能 reset 連線,導至終斷。

加兩個 default gw 是可以的,但單一時間內只參考 route table 內的一條規則而以。若是 linux 中,則是排在前面的,也就是最晚加入的規則。

請抽空看看:
http://www.study-area.org/tips/iproute.htm

kuolung

  • 俺是博士!
  • *****
  • 文章數: 1031
    • 檢視個人資料
    • http://www.kuolung.net
整合兩條線路
« 回覆 #7 於: 2002-09-20 15:11 »
引述: "netman"
引述: "kuolung"
netman 兄,您這個 "reset" 是什麼意思,看不懂

不過 他可以試試 把第二個 default gateway 加上去看看


tcp header 中有  6 個 FLAG:
UGR ACK PSH RST SYN FIN

在建立連線的過程中,若一方發現對方傳回的資訊不符(如 sequence/acknowledge、socket 等),就有可能 reset 連線,導至終斷。

加兩個 default gw 是可以的,但單一時間內只參考 route table 內的一條規則而以。若是 linux 中,則是排在前面的,也就是最晚加入的規則。

請抽空看看:
http://www.study-area.org/tips/iproute.htm


對不起,剛太簡化了,我所謂的第二個 default gateway 是要用 multi-path 的方式加,不是單單加第二個  default gateway 那麼簡單

另,上篇文章我去看過了,沒有 UGR ACK PSH RST SYN FIN
這六個 flag 的說明,沒辦法以前沒有認真念書,只好麻煩您了
=========================
http://www.kuolung.net
==========================

Rachel

  • 懷疑的國中生
  • **
  • 文章數: 67
    • 檢視個人資料
整合兩條線路
« 回覆 #8 於: 2002-09-20 17:31 »
引述: "twu2"
先簡化一下吧.
將線路分開處理, 分別只處理一條線路時, 你的 NAT 指令是什麼 ?
一起用的時候, 就是把那些 PREROUTING, POSTROUTING 的指令都寫出來就可以了.


謝謝學長
但恕小弟愚蠢,怎樣是將線路分開處理?
單獨一條線路時,指令都一樣,只不過有關台固IP的指令只加上#
-SNAT的指令也沒加上去

ZMAN

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 6247
  • 性別: 男
    • 檢視個人資料
    • 魔力門部落格
整合兩條線路
« 回覆 #9 於: 2002-09-20 17:45 »
I think you need Multi-Homing.
I just see some article talk about Multi-Path in Linux system.
Try to survey hardware solution.
If use linux,maybe DNS cheating is a way of thinking.
佈線深似海!
網路高如天!

Rachel

  • 懷疑的國中生
  • **
  • 文章數: 67
    • 檢視個人資料
整合兩條線路
« 回覆 #10 於: 2002-09-20 18:00 »
引述: "ZMAN"
I think you need Multi-Homing.
I just see some article talk about Multi-Path in Linux system.
Try to survey hardware solution.
If use linux,maybe DNS cheating is a way of thinking.


謝謝學長
這的確是Multi-Homing的東西
可不可以請學長告知可於何處找到相關文章,我找了一些網站都沒找到.
我有問過一家資訊公司,他們說可以用iproute做到,所以我也想做做看
謝謝

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17466
    • 檢視個人資料
    • http://www.study-area.org
整合兩條線路
« 回覆 #11 於: 2002-09-20 18:10 »
引述: "kuolung"
另,上篇文章我去看過了,沒有 UGR ACK PSH RST SYN FIN
這六個 flag 的說明,沒辦法以前沒有認真念書,只好麻煩您了


sorry,我不可能(也沒本事)將全部 tcp/ip 的知識塞進一篇文章中。

我想,沒看完兩三本上千頁的書,還談不上認識 tcp/ip 吧?

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5396
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
整合兩條線路
« 回覆 #12 於: 2002-09-20 18:50 »
引述: "Rachel"
引述: "twu2"
先簡化一下吧.
將線路分開處理, 分別只處理一條線路時, 你的 NAT 指令是什麼 ?
一起用的時候, 就是把那些 PREROUTING, POSTROUTING 的指令都寫出來就可以了.


謝謝學長
但恕小弟愚蠢,怎樣是將線路分開處理?
單獨一條線路時,指令都一樣,只不過有關台固IP的指令只加上#
-SNAT的指令也沒加上去


如果內部的 www ip 只有一個, 可能在 NAT 回去的封包會有問題吧.
可以試著那台 www 設定兩個內部的 ip, 每一個外面的線路進來之後, 對應一個 ip, 這樣應該可以解決.

ZMAN

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 6247
  • 性別: 男
    • 檢視個人資料
    • 魔力門部落格
整合兩條線路
« 回覆 #13 於: 2002-09-20 20:19 »
引述: "Rachel"
引述: "ZMAN"
I think you need Multi-Homing.
I just see some article talk about Multi-Path in Linux system.
Try to survey hardware solution.
If use linux,maybe DNS cheating is a way of thinking.


謝謝學長
這的確是Multi-Homing的東西
可不可以請學長告知可於何處找到相關文章,我找了一些網站都沒找到.
我有問過一家資訊公司,他們說可以用iproute做到,所以我也想做做看
謝謝


HARDWARE

F5-LINKCONTROLLER
REDWARE-LINKPROOF
ASCENVISION-ASCENLINK
QBALANCER,SPIDERLINK,什麼什麼RX,什麼什麼eye......

我也很想知道在linux/bsd下要如何做multi-homing
佈線深似海!
網路高如天!

duncanlo

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 7312
    • 檢視個人資料
整合兩條線路
« 回覆 #14 於: 2002-09-23 02:36 »
引述: "ZMAN"
我也很想知道在linux/bsd下要如何做multi-homing


有些AP要改Code,
不讓要多弄個proxy或中繼程式處理.

很可惜,
那位仁兄點到為止!

kuolung

  • 俺是博士!
  • *****
  • 文章數: 1031
    • 檢視個人資料
    • http://www.kuolung.net
整合兩條線路
« 回覆 #15 於: 2002-09-23 09:39 »
引述: "twu2"
如果內部的 www ip 只有一個, 可能在 NAT 回去的封包會有問題吧.可以試著那台 www 設定兩個內部的 ip, 每一個外面的線路進來之後, 對應一個 ip, 這樣應該可以解決.


這倒是不錯的建議 : 詳細的做法如下 ( 以 RH 7.3 為例 ) : 如有不對請各位兄台指正 :

Web Server 定兩個內部 ip : 192.168.1.10 192.168.1.11
 defautl gateway : 192.168.1.1
 其他無相關的略

Linux 的 設定
eth0 : 對內 :  192.168.1.1
eth1 : 對外1: a.a.a.a  gateway: $GATE1 netmask 255.255.255.248
eth2 : 對外2: b.b.b.b  gateway: $GATE2 netmask 255.255.255.248

1. 定 if :
ifconfig eth0 down
ifconfig eth1 down
ifconfig eth2 down

ifconfig eth0 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255
ifconfig eth1 a.a.a.a netmask 255.255.255.248
ifconfig eth2 b.b.b.b netmask 255.255.255.248

2. 定 route table name
/etc/iproute2/rt_tables 檔內加入這兩行

200  aaa
210  bbb

3. 定 ip forward enable
echo "1" > /proc/sys/net/ipv4/ip_forward

4. 設 ip route table
ip route replace default via $GATE1 dev eth1 table aaa
ip route replace default via $GATE2 dev eth2 table bbb
ip route replace default nexthop via $GATE1 dev eth1 \
  nexthop via $GATE2 dev eth2

5. 設 nat
/sbin/iptables -t nat -F
/sbin/iptables -t nat -X
#
/sbin/iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/16 \
  -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -o eth2 -s 192.168.1.0/16 \
  -j MASQUERADE
/sbin/iptables -A PREROUTING -t nat -p tcp -d a.a.a.a --dport 80 \
    -j DNAT --to 192.168.1.10:80
/sbin/iptables -A PREROUTING -t nat -p tcp -d b.b.b.b --dport 80 \
    -j DNAT --to 192.168.1.11:80

6. 設 ip rule
ip rule add pref 200 from 192.168.1.11 table aaa
ip rule add pref 210 from 192.168.1.12 table bbb


好了,請試試看吧
其他我也沒有多加什麼東西在裡面
=========================
http://www.kuolung.net
==========================

Rachel

  • 懷疑的國中生
  • **
  • 文章數: 67
    • 檢視個人資料
整合兩條線路
« 回覆 #16 於: 2002-09-23 11:39 »
引述: "kuolung"
引述: "twu2"
如果內部的 www ip 只有一個, 可能在 NAT 回去的封包會有問題吧.可以試著那台 www 設定兩個內部的 ip, 每一個外面的線路進來之後, 對應一個 ip, 這樣應該可以解決.


這倒是不錯的建議 : 詳細的做法如下 ( 以 RH 7.3 為例 ) : 如有不對請各位兄台指正 :

Web Server 定兩個內部 ip : 192.168.1.10 192.168.1.11
 defautl gateway : 192.168.1.1
 其他無相關的略

Linux 的 設定
eth0 : 對內 :  192.168.1.1
eth1 : 對外1: a.a.a.a  gateway: $GATE1 netmask 255.255.255.248
eth2 : 對外2: b.b.b.b  gateway: $GATE2 netmask 255.255.255.248

1. 定 if :
ifconfig eth0 down
ifconfig eth1 down
ifconfig eth2 down

ifconfig eth0 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255
ifconfig eth1 a.a.a.a netmask 255.255.255.248
ifconfig eth2 b.b.b.b netmask 255.255.255.248

2. 定 route table name
/etc/iproute2/rt_tables 檔內加入這兩行

200  aaa
210  bbb

3. 定 ip forward enable
echo "1" > /proc/sys/net/ipv4/ip_forward

4. 設 ip route table
ip route replace default via $GATE1 dev eth1 table aaa
ip route replace default via $GATE2 dev eth2 table bbb
ip route replace default nexthop via $GATE1 dev eth1 \
  nexthop via $GATE2 dev eth2

5. 設 nat
/sbin/iptables -t nat -F
/sbin/iptables -t nat -X
#
/sbin/iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/16 \
  -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -o eth2 -s 192.168.1.0/16 \
  -j MASQUERADE
/sbin/iptables -A PREROUTING -t nat -p tcp -d a.a.a.a --dport 80 \
    -j DNAT --to 192.168.1.10:80
/sbin/iptables -A PREROUTING -t nat -p tcp -d b.b.b.b --dport 80 \
    -j DNAT --to 192.168.1.11:80

6. 設 ip rule
ip rule add pref 200 from 192.168.1.11 table aaa
ip rule add pref 210 from 192.168.1.12 table bbb


好了,請試試看吧
其他我也沒有多加什麼東西在裡面



感謝Kuolung學長
剛剛測試了一下,可以運作了,不過第六項我並沒有加下去.
繼續努力測試多個IP看看.
另外馬後砲一下
我剛看到Twu2學長的提示,就想先做一對一的做法,看能不能成功,而之前也有在弄iproute測試,只不過弄得很奇怪沒有成功,剛好Kuolung學長給了更大的提示,小弟不才,照抄之後現在已經可以看到兩個IP的網頁對應了,感激不盡,謝謝.
現在要做多個IP對應測試.

kuolung

  • 俺是博士!
  • *****
  • 文章數: 1031
    • 檢視個人資料
    • http://www.kuolung.net
整合兩條線路
« 回覆 #17 於: 2002-09-23 13:44 »
引述: "Rachel"

感謝Kuolung學長
剛剛測試了一下,可以運作了,不過第六項我並沒有加下去.
繼續努力測試多個IP看看.
另外馬後砲一下
我剛看到Twu2學長的提示,就想先做一對一的做法,看能不能成功,而之前也有在弄iproute測試,只不過弄得很奇怪沒有成功,剛好Kuolung學長給了更大的提示,小弟不才,照抄之後現在已經可以看到兩個IP的網頁對應了,感激不盡,謝謝.
現在要做多個IP對應測試.


看到有人學到了真好,我也和其他學長們學的,記得如果有其他人問,也要教下去,別學到了,就以為是自已的寶,暗槓起來,就好,

回到正題,如果您的第六條沒有加,當然是可以連,但是您要看一下,封包的走法,理論上,如果 ip rule 沒有加,可能對方從 aaa 連進來的client ,會從 bbb的ip 回回去,也就是

Client -> a.a.a.a -> 192.168.1.11 收到 web request 結果是
192.168.11 -> 192.168.1.1 -> b.b.b.b -> Client  回答路徑

大部份的情況是沒有問題,但總是有可能發生問題就是了
=========================
http://www.kuolung.net
==========================

kuolung

  • 俺是博士!
  • *****
  • 文章數: 1031
    • 檢視個人資料
    • http://www.kuolung.net
整合兩條線路
« 回覆 #18 於: 2002-09-23 13:53 »
引述: "kuolung"
引述: "Rachel"

感謝Kuolung學長
剛剛測試了一下,可以運作了,不過第六項我並沒有加下去.
繼續努力測試多個IP看看.
另外馬後砲一下
我剛看到Twu2學長的提示,就想先做一對一的做法,看能不能成功,而之前也有在弄iproute測試,只不過弄得很奇怪沒有成功,剛好Kuolung學長給了更大的提示,小弟不才,照抄之後現在已經可以看到兩個IP的網頁對應了,感激不盡,謝謝.
現在要做多個IP對應測試.


看到有人學到了真好,我也和其他學長們學的,記得如果有其他人問,也要教下去,別學到了,就以為是自已的寶,暗槓起來,就好,

回到正題,如果您的第六條沒有加,當然是可以連,但是您要看一下,封包的走法,理論上,如果 ip rule 沒有加,可能對方從 aaa 連進來的client ,會從 bbb的ip 回回去,也就是

Client -> a.a.a.a -> 192.168.1.11 收到 web request 結果是
192.168.11 -> 192.168.1.1 -> b.b.b.b -> Client  回答路徑

大部份的情況是沒有問題,但總是有可能發生問題就是了


對不起,更正一下,我的意思是,有可能會從另一個  ip 傳封包回去,不是一定會
從另一個 ip 走,就是

Client -> a.a.a.a -> 192.168.1.11

192.168.1.11 -> 192.168.1.1 -> a.a.a.a -> Client
192.168.1.11 -> 192.168.1.1 -> b.b.b.b -> Client

都有可能就是了
=========================
http://www.kuolung.net
==========================