【問題】如何使用Linux架Router



贊助商連結


jacky425
2006-07-21, 03:21 PM
有看到FYI大大的"[教學] 架設 2 ~ 5 台 Win9x 電腦 , (免集線器) , 分享檔案 & 網路連線"覺得對於小型區網很有用,裡頭是使用win當Server ,那如果使用linux來架要如何做呢?:confused: 就是使用liunxx來當作Router.

贊助商連結


RouterOS
2006-07-21, 05:35 PM
不用集線器要將五台PC串起來?
這樣搞會不會太累了?

jacky425
2006-07-21, 07:24 PM
是這樣說沒錯,但像FYI這樣架網很酷!也可以對於Router有更深的了解,上網找了一下是乎用"iproute2"可以達到,但好像蠻複雜的,不知道有沒有大大做過類是的架構,交流一下吧!

apage
2006-07-21, 10:09 PM
請執行:

$rpm -qa|grep iproute


只要出現

iproute-2.x.x-x


就是有裝了。

確認之後,首先要新增規則,
先開啟/etc/iproute2/rt_tables
設定要新增的 table:

100 hinet
150 seednet
200 isp


然後就可以開始進行各個 table 的設定,
這裡我是參考原本預設的路由表進行設定,

[root@dhcp ~]# route
estination Gateway Genmask Flags Metric Ref Use Iface
0.0.2.0 * 255.255.255.0 U 0 0 0 eth3
0.0.3.0 * 255.255.255.0 U 0 0 0 eth4
0.0.1.0 * 255.255.255.0 U 0 0 0 eth0
192.168.0.0 * 255.255.255.0 U 0 0 0 eth2
192.168.168.0 * 255.255.255.0 U 0 0 0 eth1
default 0.0.1.254 0.0.0.0 UG 0 0 0 eth0


上面可看到,default gateway 是使用 hinet 的,
就照樣的把這個路由表輸入到 hinet 的 table 中:

ip route replace 0.0.3.0/24 dev eth4 table hinet
ip route replace 0.0.2.0/24 dev eth3 table hinet
ip route replace 0.0.1.0/24 dev eth0 table hinet
ip route replace 192.168.0.0/24 dev eth2 table hinet
ip route replace 192.168.168.0/24 dev eth1 table hinet
ip route replace default via 0.0.1.254 table hinet


接下來就以此類推,只需要把 default gateway 改成另一條線路的 Gateway 來製作就可以了:
EX:seednet:

ip route replace 0.0.3.0/24 dev eth4 table seednet
ip route replace 0.0.2.0/24 dev eth3 table seednet
ip route replace 0.0.1.0/24 dev eth0 table seednet
ip route replace 192.168.0.0/24 dev eth2 table seednet
ip route replace 192.168.168.0/24 dev eth1 table seednet
ip route replace default via 0.0.3.254 table seednet



EX:專案專用線路

ip route replace 0.0.3.0/24 dev eth4 table isp
ip route replace 0.0.2.0/24 dev eth3 table isp
ip route replace 0.0.1.0/24 dev eth0 table isp
ip route replace 192.168.0.0/24 dev eth2 table isp
ip route replace 192.168.168.0/24 dev eth1 table isp
ip route replace default via 0.0.2.254 table isp



都製作好了之後,便可設定 rule 指定哪些範圍內的 IP 要用哪個路由表:


#add rule for each table
ip rule add from 192.168.168.0/24 table hinet
ip rule add from 192.168.0.11 table seednet
ip rule add from 192.168.0.14 table seednet
ip rule add from 192.168.0.15 table seednet
ip rule add from 192.168.0.10 table hinet
ip rule add from 192.168.0.20 table isp

再使路由馬上生效:

ip route flush cache

如此一來,這台主機就變成可以控管 3wan 的超級 NAT 主機了。

twu2
2006-07-21, 10:44 PM
http://lartc.org/
這個地方的文件看通就都懂了.

jacky425
2006-07-25, 07:17 PM
我的架構圖...
http://140.135.13.132/network.vsd
目的是要讓PC1-3的資料能夠互相傳送!
Router使用linux架...

#!/bin/bash

eth_lan_0="eth0"
eth_lan_1="eth1"
eth_lan_2="eth2"

export PATH eth_lan_0 eth_lan_1 eth_lan_2

/usr/local/sbin/iptables -F
/usr/local/sbin/iptables -X
/usr/local/sbin/iptables -Z
/usr/local/sbin/iptables -F -t nat
/usr/local/sbin/iptables -X -t nat
/usr/local/sbin/iptables -Z -t nat
/usr/local/sbin/iptables -P INPUT DROP
/usr/local/sbin/iptables -P OUTPUT ACCEPT
/usr/local/sbin/iptables -P FORWARD ACCEPT

/usr/local/sbin/iptables -A INPUT -i lo -j ACCEPT
/usr/local/sbin/iptables -A INPUT -i $eth_lan_0 -j ACCEPT
/usr/local/sbin/iptables -A INPUT -i $eth_lan_1 -j ACCEPT
/usr/local/sbin/iptables -A INPUT -i $eth_lan_2 -j ACCEPT

/usr/local/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

由"apage大大"提供....是個很好的人
目前可以連線,但是linux ping 不到PC...
不知道有沒有大大能夠看出哪裡有問題?
煩請指教!感激不盡!

jacky425
2006-07-25, 08:15 PM
補充一下當在linux ping PC時,在PC端可以看到接收封包,但不會回送ACK封包:confused:

jacky425
2006-07-25, 09:15 PM
...sorry:|||: ,剛剛用別台PC測的結果是 :eye:
PC1-linux linux-PC1 PC2-linux ... OK!
PC1-PC2 ... ERROR!
PS."-" => ping
所以應該是那台的網卡壞了~
現在的問題是PC間不能 Ping 有大大知道如何解決嗎?:confused:

twu2
2006-07-25, 10:38 PM
1. firewall/iptables 先關掉不要用, 這與 routing 運作無關. 先確定不是 firewall 的問題.
2. /proc/sys/net/ipv4/ip_forward 的值不可以為 0.
3. 既然是 router, 兩邊的機器不可以是同一個網路或 subnet.
4. 兩邊的 default gateway 都必須要是你那台 "router" 的機器. 或者兩邊的機器的 routing table 設定必須知道往另一個網路或 subnet, 是要把封包送到你的 router 才可以.
5. 善用 traceroute 與 tcpdump 指令來確定封包有到你想的那一個點.

http://lartc.org/
這兒的文件先看過一次吧.