前言
本次研習針對RedHat8.0 Psyche進行安裝操作說明,目的:
1.
網路位址轉換(NAT)伺服器建立.
2.IPTABLES
防火牆建立.

IP tables & NAT運作介紹

封包



IP Masquerade
What is IP Masquerading?
IP
偽裝是一種網路位址轉換形式,已經被許多router所支援.

IP Masquerade,
又稱為"IPMASQ"或是"MASQ".
可以讓您的虛擬ip位址透過一個有真實IP位址,且與internet連接的Linux機器作為GW(閘道器),而與internet連結.

這台Linux機器擁有一個真實的IP位址,並且處理內部網路與外部網路間封包的mapping.並且作出相對的回應.

透過這個功能,你可以讓許多的虛擬IP連上網路,而不用麻煩您的ISP進行特殊的網路設定.

MASQ
可靠嗎?
IP Masquerade
在很多年前就已經被實作了,Linux 2.2.x的時候已接近成熟.
Kernel
自從1.3.x,就已經內建了這個功能.

雖然有部分的使用者回報了一些bug,及並不是每一件事透過IP Masquerade都能夠順利執行.但是有更多的使用者(包含流量很大的使用者)IP Masquerade是很滿意的. IP Masquerade一個機會,嘗試看看..?

基本的網路功能像是瀏覽網頁,telnet, ssh, ping, traceroute,..透過IP MASQ可以運作的很正常,其他網路應用像是ftp, irc, and Real Audio之類的,再透過額外的IP MASQ模組安裝後同樣的也是運作的很正常的.
note:Internet Relay Chat (IRC)

NAT伺服器實務應用

系統安裝:
a.
採用Redhat Linux 8.0(Psyche)光碟片安裝.
b.
安裝時採用server安裝,不要安裝一些亂七八糟的有的沒的東西.

為了配合需求,我只用了2G的空間硬碟,其餘都不用.
以證明隨便一顆常見的硬碟應該都是ok.


網路環境說明:
在中華電信ATUR之後,透過網路縣直接連結Switch/Hub,
sw/hub又連接一個NAT伺服器,一些網路伺服器,及一些普通的pc.

PC
要把資料傳輸出去時,透過SW/Hub連結Nat server.
,
並透過NAT伺服器,將封包轉換,並再次透過SW/Hub,ATUR將資料傳輸到外界


基本上那些伺服器及PC都可以走真實的IP位址,舉凡只要是走真實IP位址,
GW
設在ATUR即可對外連線.
若是走虛擬IP位址,則要將GW設在NAT Server的對內點.

雖然我們採用同一張網卡來表示NAT的對內點及對外點,不過為了說明方便,
可以將其視為不同的兩張卡.相對來說,設定檔也就有2.


系統設定
netstat 列出目前已經接通的服務項目與名稱.

顯示全部 netstat -a
顯示全部並且用port number表示 netstat -an

ntsysv關閉不必要的服務後,重新啟動伺服器.
gpm ->
滑鼠
isdn ->
網路
kudzu ->
硬體偵測
lpd ->
列印
netfs ->
網路檔案系統
nfslock -> NFS
相關
pcmcia -> NB
xfs ->
字型

1.內部虛擬網段設定
Private Address Space
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255(
最常用!!)

Client
端設定:GW IP設在NAT的對內點.也就是eth0:0 IP位址.
IP
設定:192.168.0.1~253
子網路遮罩:255.255.255.0
通訊閘:192.168.0.254

2.NAT伺服器網卡設定
路徑:/etc/sysconfig/network-scripts/
確認檔案:eth0
內容為:
DEVICE=eth0
BOOTPROTO=static
BROADCAST=163.19.163.255
IPADDR=163.19.163.20
NETMASK=255.255.255.0
NETWORK=163.19.163.0
ONBOOT=yes


因為採用一張網卡,所以在同一路徑新增另外一個檔案.
可以透過複製eth0方式修改
cp ifcfg-eth0 ifcfg-eth0:0
檔案:eth0:0
內容為:
DEVICE=eth0:0
BOOTPROTO=static
BROADCAST=192.168.0.255
IPADDR=192.168.0.254
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes


啟動IP FORWRAD的功能.使伺服器有router的功能.
設定 /proc/sys/net/ipv4/ip_forward 1

所謂IP FORWARD就是當今天虛擬ip位址透過nat伺服器的真實ip位址
要把資料送出去時,因為不同網段,所以需要有一個"轉送"的功能.
假設今天pc的位址為 192.168.0.1 通訊閘設在 192.168.0.254 ,
nat的真實ip163.19.163.20,nat伺服器的通訊閘為163.19.163.254
:沒有啟動forward的功能,
192.168.0.1 只能連結到 192.168.0.254 163.19.163.20,
而無法連結163.19.163.254,也就是說,
若沒有啟動forward,內部虛擬的ip無法透過nat的真實ip轉送封包出去.

建立/usr/local/nat/資料夾.
cd /usr/local/ ; mkdir nat ; cd nat
檔案擷取:檔案下載 http://ohaha.ks.edu.tw/~panda/nat.sh


下載完後,變更nat.sh的執行權限為700
chmod 700 nat.sh

啟動nat服務.
/usr/local/nat/nat.sh

修改 /etc/rc.local 內容讓 nat 服務於開機時自動啟動.
在這個檔案中新增一行.
/usr/local/nat/nat.sh

3.NAT IPTABLES
5.IPTABLES
 常用規則:
 iptables -A INPUT -p TCP -s 163.19.163.123 --dport 23 -j DROP
 對於163.19.163.123流入TCP 23 port進行限制.
 
 對於某領域進行限制
 限制163.19.163.0/24進行telnet存取.
 iptables -A INPUT -p TCP -s 163.19.163.0/24 --dport 23 -j DROP
 
 允許信任網域存取22 port.其餘拒絕 
 iptables -A INPUT -p TCP -s 140.126.1.0/24 --dport 22 -j ACCEPT
 iptables -A INPUT -p TCP -s 140.126.10.0/24 --dport 22 -j ACCEPT
 iptables -A INPUT -p TCP -s 140.126.11.0/24 --dport 22 -j ACCEPT

iptables -A INPUT -p TCP -i eth0 --dport 22 -j DROP

 允許信任網域使用ICMP協定.其餘拒絕
 iptables -A INPUT -p ICMP -s 192.168.0.0/24 -j ACCEPT
 iptables -A INPUT -p ICMP -s 163.19.163.97 -j ACCEPT
 iptables -A INPUT -p ICMP -i eth0 -j DROP

 允許使用常用port
 iptables -A INPUT -p TCP --dport 22 -j ACCEPT
 iptables -A INPUT -p TCP --dport 25 -j ACCEPT
 iptables -A INPUT -p TCP --dport 53 -j ACCEPT
 iptables -A INPUT -p UDP --dport 53 -j ACCEPT
 iptables -A INPUT -p TCP --dport 80 -j ACCEPT
 iptables -A INPUT -p TCP --dport 110 -j ACCEPT

 允許已經建立的連線
 iptables -A INPUT -m state --state ESTABLISHED,RELATE -j ACCEPT

 拒絕其他服務
 iptables -A INPUT -m state --state NEW,INVALID -j DROP

 iptalbes規則為上到下,若符合則不繼續往下比對.
 

MASQ Client&Server測試
Client: ping server ip
位址(gateway.)
Server: ping client ip , server private ip & server real ip & gateway

參考資料:
http://www.e-infomax.com/ipmasq/
http://www.e-infomax.com/ipmasq/howto/c-html/index.html