用linux構建路由器

linux構建路由器

網絡結構如圖,Linux路由器這臺計算機標識爲A,它與三個網段相連,192.168.2.0/24192.168.3.0./24192.168.1.0/24

A計算機必須擁有三塊網卡,分別與三個網段相連。
 
假設:
eth0192.168.1.0相連,
eth1192.168.2.0相連,
eth2192.168.3.0相連。
備註:
由於這臺PC機的網絡接口比較多,所以在連接每個段的網絡時,注意使用#route命令。
這樣可以判斷哪個網絡接口是對外的。
首先來配置eth0。給這個網絡接口分配地址192.168.1.15,運行下列命令:
# ifconfig eth0 192.168.1.15 netmask 255.255.255.0
#ifconfig  eth0  192.168.1.15  broadcast  192.168.1.255  netmask  255.255.255.0
爲了使這個地址不再計算機重新啓動後消失,編輯/etc/sysconfig/network-scripts/ifcfg-eth0文件
增加一條靜態路由:
# route   add   -net   192.168.1.0   netmask  255.255.255.0  dev   eth1
服務器端核心的兩句:
打開LINUX的路由功能:
#echo   1   >/proc/sys/net/ipv4/ip_forward

②將局域網中所有機器的數據包都通過eth1所做的透明網關送出去,不做任何限制
或者說:IP僞裝,使內部網路的封包經過僞裝之後,使用對外的 eth1 網卡當作代表號,對外連線(啓動內部對外轉址)
#iptables  -t  nat  -A   POSTROUTING  -o  eth1  -s  192.168.2.0/24   -j  SNAT
   --to   192.168.1.15
# ptables  -t  nat  -A   POSTROUTING  -o  eth1  -s  192.168.2.0/24   -j  SNAT
   --to   192.168.1.15
③設置防火牆,增加規則
將會阻止來自某一特定IP範圍內(92.168.2.0/24)數據包,因爲該IP地址範圍被管理員懷疑有大量惡意***者在活動:
#iptables  -t   filter   -A   INPUT   -s   192.168.2.0/24   -j   DROP
若想要取消的話,則刪除規則
#iptables  -t   filter   -D  INPUT   -s   192.168.2.0/24   -j   DROP

④缺省的策略(一般不要設,會導致網絡不通),最基本的原則是“先拒絕所有的數據包,然後再允許需要的”。下面來爲每一個鏈設置缺省的規則:
# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT ACCEPT
這樣會導致客戶端不能訪問服務器,服務器也不能上網
或者預設全部接受∶
#iptables -P INPUT ACCEPT
#iptables -P OUTPUT ACCEPT
#iptables -P FORWARD ACCEPT

⑤如果我們的Linux機器配置有防火牆,爲防止防火牆將通過177端口(即xdmcp服務)的數據過慮,我們必須加上如下的規則:
#iptables  -A  INPUT  -p  udp  -s 0/0  -d 0/0   --dport   177   -j   ACCEPT
這個命令使iptables增加一條規則到INPUT,用以接受從所有的源(-s 0/0)到所有的目標(-d 0/0)通過端口177的數據包
或者用
#iptables  -I   INPUT   -i   eth0    -p  udp   192.168.2.155   --dport   177   -j  DROP(關閉177端口)
#iptables  -I   INPUT   -i   eth0    -p  udp   192.168.2.155   --dport   177   -j 
ACCEPT(打開177端口)
說明 插入一條規則,原本該位置上的規則將會往後移動一個順位。
⑥一般被保護的內部網絡可分成兩部分,一部分是內部通訊區,只允許內部用戶訪問,絕對禁止外部用戶訪問,另一部分是停火區DMZ,對外提供有條件的服務。前者是系統的核心子網,後者易受到外部的***,是一個比較危險的子網環境。一方面要求嚴格保護內部子網,另一方面又要滿足DMZ對外提供服務的需要,因此,必須採用分別保護的策略,對上述兩個區域進行保護。兩個區域要儘量獨立,即使DMZ受到外部***,內部子網仍處於防火牆的保護之下。
⑦防火牆規則
#iptables -A INPUT -i eth1 -s 0.0.0.0/0 -p ICMP -j DROP(將所有從外網進來的ping包都統統丟棄,不允許從外網向內網發ping)
#iptables –A INPUT –i eth1 –s 0.0.0.0/0 –p TCP –port ! 80 –j DROP(將所有由外網發起的非80端口的請求都統統丟棄, 只允許外網訪問內網的HTTP服務)

 

補充說明:

⑴添加廣播路由
#route   add  -host   255.255.255.255   -dev   eth1(內網機器連在eth1網卡上)
若要系統啓動後自動添加路由,需要修改/etc/rc.local

⑵配置iptables,設置DNAT功能
# iptables –A PREROUTING  -t  nat   -p   tcp   -s ! 192.168.0.0/24  --dport  4899   -j DNAT  --to   192.168.0.2:4899
此功能是將訪問LINUX機器TCP協議4899端口(內網除外)的所有連接轉到內網的192.168.0.24899端口上
filter是最常用的表,在filter表中最常用的三個目標是ACCEPTDROPREJECTDROP會丟棄數據包,不再對其進行任何處理。REJECT會把出錯信息傳送至發送數據包的主機。

⑷增加規則
將會阻止來自某一特定IP範圍內的數據包,因爲該IP地址範圍被管理員懷疑有大量惡意***者在活動:
# iptables -t filter -A INPUT -s 123.456.789.0/24 -j DROP
也可以很輕易地阻止所有流向***者IP地址的數據包,該命令稍有不同:
# iptables -t filter -A OUTPUT -d 123.456.789.0/24 -j DROP
注意這裏的A選項,使用它說明是給現有的鏈添加規則。

⑸刪除規則
網絡上的惡意***者總是在變化的,因此需要不斷改變IP。假設一個網上***者轉移到新的IP地址,而其老的IP地址被分配給一些清白的用戶,那麼這時這些用戶的數據包將無法通過你的網絡。這種情況下,可以使用帶-D選項的命令來刪除現有的規則:
# iptables -t filter -D OUTPUT -d 123.456.789.0/24 -j DROP

⑹缺省的策略
創建一個具有很好靈活性、可以抵禦各種意外事件的規則需要大量的時間。對於那些沒有時間這樣做的人,最基本的原則是“先拒絕所有的數據包,然後再允許需要的”。下面來爲每一個鏈設置缺省的規則:
# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT ACCEPT
這裏選項-P用於設置鏈的策略,只有三個內建的鏈纔有策略。這些策略可以讓信息毫無限制地流出,但不允許信息流入。很多時候需要接收外部信息,則可使用以下命令:
# iptables -t filter -A INPUT -s 123.456.789.0/24 -j ACCEPT

⑺清除所有的規則
#iptables –F(清除預設表 filter 中,所有規則鏈中的規則)
#iptables -F -t nat(清除nat表中,所有規則鏈中的規則)
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章