聲明:任何形式的摘抄必須保留上述作者和http地址
Solaris 10 OS ( IPFilter and NAT ) 設定
- 前言
- 相關網站
- 硬件要求
- 安裝 IP Filter
- 在 Solaris 10 上設定 IP Filter
- 啟動 IP Filter 服務
- 測試
- 其它 IP Filter 深入設定技巧
- 使用 PHP 和 MySQL 來管理 IP Filter
前言:
NAT 和 IPFilter ,相信很多人都知道是什麼來的。
如果你不太清楚這是什麼?
這個連結的前言,應該可以理解是什麼來的。http://solaris.tophk.net/nat/index.htm
簡單點說,就是可以利用它們來把 Solaris 當成 NAT Router 使用,而且還可的使用 Firewall 、 Port Forward 和 封鎖 Port 的功能,並且還可以限制那些本地 IP 的上網權限和指定那些網站不能通訊。
總括來說,就是對外和對內都可以受到 IPFilter 來管理限制。 但同時,也會影響 Solaris 本身對外的功能。 E-mail 、 NFS 、 DNS 、 Apache 和 Ftp server 也不例外。
試想想,如果你有一個網站,只想給全世界的分公司看,但又不想對外開放,這個時候,IPFilter 可說是一個又簡單,又好用的方法。
當然,還有很多不同的應用方法。
Solaris 10 OS 版本中,已經內置了 IPFilter。所以,本文的主要目標是介紹,如何在 Solaris 10 OS 中啟動和使用 IPFilter和 NAT 的基本功能。
到最後,文中會有一些在不同要求下的設定技巧。
P.S. NAT = Network Address Translation
相關網站:
IP Filter
for Network Address Translation. http://coombs.anu.edu.au/~avalon
Setting Up NAT on Solaris Using IP Filter
http://www.rite-group.com/rich/solaris_nat.html
硬件要求:
跟據經驗,NAT需要使用兩張網卡才能正常使用 ( 使用虛擬網卡是不能正常操作的,例如:hme0 和 hme0:1 的情況。)
但是,還有例外的情況。例如把網卡接到 Hub 上,然後再用 pppoe 撥接功能,這樣,你使用 ifconfig -a 來查看網卡的時候,你便會發現多了一個 ppp0的網卡。這樣把 hme0 和 ppp0來當成兩張網卡都免強以。
我是使用 hme1 接到 Router 或 Cable Modem 上,hme0 就接到 Local Network 上。 hme0 的 IP address 已經定址好(192.168.10.1)可跟 Local Network 通訊。hme1 定址成真實 IP adderess ( 202.134.116.34 )
目標是 hme1 用來對外的,而 hme0 用來對內。當然,你不一定像我這樣設定,只不過在說明起來時簡單一點。因為這樣 hme1 在設定上一開始可以上網。我不想給 pppoe 或其它上網連接方法攪亂本文章。
備注:在系統中使用不同的網卡,網卡的名稱都會不相同。
我的例子是 hme,但還有很多種類的。
例如: iprb、elxl、e1000g、bge、nf、fa、ci、el、ipdptp、lane、dnet、pcelx、spwr和pcn 等。
所以,跟本就不可能在本文中說明不同網卡安裝在 Solaris 後會使用什麼網卡名稱,所以你必須要對 Solaris 的基本設定有了解才能明白現在做什麼。
本文的例子中,會使用 hme 的網卡名稱來作為舉例。
安裝 IP Filter:
在 Solaris 10 OS 上,不需要再安裝 IP Filter 了,Solaris 10 已經內建了 IP Filter,所以,只要做一些設定就可以使用。
在舊版本的 Solaris 10 系統上是需要自行下載和安裝 IP Filter 的。
在 Solaris 10 上設定 IP Filter :
本文的例子會使用 hme1 作為對外, hme0 作為對內。所以你一定要肯定你的 Solaris 系統能透過 hme1 上網及對外通訊。如果可以的話, hme1 連接的網絡上不要有任何 Firewall 或 安全性封鎖,被免因為這些問題而出現測試錯誤的情況出現。
檢查 IP forwarding 功能是否打開:
SHELL> routeadm
Configuration Current Current
Option Configuration System State
---------------------------------------------------------------
IPv4 forwarding disabled disabled
IPv4 routing default (disabled) disabled
IPv6 forwarding disabled disabled
IPv6 routing disabled disabled
IPv4 routing daemon "/usr/sbin/in.routed"
IPv4 routing daemon args ""
IPv4 routing daemon stop "kill -TERM `cat /var/tmp/in.routed.pid`"
IPv6 routing daemon "/usr/lib/inet/in.ripngd"
IPv6 routing daemon args "-s"
IPv6 routing daemon stop "kill -TERM `cat /var/tmp/in.ripngd.pid`"
現時的 IPv4 forwarding 的設定為 disabled,你一定要把設定改為 enable 才能啟動 IPv4 Forwarding 功能。
啟動 IP forwarding 功能:
使用以下指令就可以把 ipv4-forwarding 功能打開。
SHELL> routeadm -u -e ipv4-forwarding
'-e ipv4-forwarding' 是用來使到 ipv4-forwarding 功能啟動。而 '-u' 是用來使到 Solaris 系統在從新啟動後還會繼續啟動 ipv4_forwarding。
設定 NAT 規則:
當你把 IP forwarding 啟動後,你就需要設定 NAT (的規則。
NAT 規則在檔案 /etc/ipf/ipnat.conf 裡面。
我的對內網絡 IP 範圍為 192.168.10.1 至 192.168.10.254,所以你應該改變 hme1 和 -> 之間的設定來迎合你的需要。 ( 注意:hme1為我的對外網卡名稱,你應該把這個名稱更改成你的對外網卡名稱,如果是 連接 pppoe 的話,很多時候名稱都是為 ppp0,但當然,你一定要啟動了 pppoe 連結才會有這個網卡名稱。)
/etc/ipf/ipnat.conf 的內容:
map hme1 192.168.10.0/24 -> 0/32 proxy port ftp ftp/tcp
map hme1 192.168.10.0/24 -> 0/32 portmap tcp/udp auto
map hme1 192.168.10.0/24 -> 0/32
0/32 是一個特別功能。 hme1 的 IP address 為 202.134.116.34,正常是應該把 0/32 改為 202.134.116.34/32。但我們不需要這樣做。因為,如果 hme1 不是使用固定IP Address,而是透過 DHCP獲得 IP Address 時,那個時候,我們便要經常改變這個設定。所以,使用 0/32 由 IP Filter 自行檢查正確的 IP 位置。特別是對使用 pppoe的人,這是最好不過。
不要隨意改變以上的規則,否則其它Local Network 上的電腦便會無法正常上網。
第一行規則用來允許所有 Local Network 上的電腦可以使用 FTP 功能。
第二行規則用來 maps the source port 去到較高的範圍 (10000 to 40000 為預設)
第三行規則用來 maps 所有 TCP traffic
*** 如果有人知道上面兩行的英文如何翻譯成中文,請 E-mail 給我。
設定packets (封包) 過慮使用那張網卡:
設定好 NAT 規則後,你需要通知系統那個網絡卡上使用packets (封包) 過慮。檔案 /etc/ipf/pfil.ap為設定檔。
內容:
#le -1 0 pfil
#qe -1 0 pfil
hme -1 0 pfil
hme0 和 hme1 我都需要使用packets (封包) 過慮,只要把 hme -1 0 pfil 加在 /etc/ipf/pfil.ap 裡就可以,hme 後的數字是不需要的。換句話說,如果你是使用 pppoe 連線的話,名稱應該為 ppp0,所以,你只需要把 ppp -1 o pfil 加入檔案中就可以了。
啟動 IP Filter 服務:
SHELL> svcadm restart network/pfil
SHELL> svcadm restart ipfilter
若果你層經更改過 /etc/ipf/pfil.ap 的packets (封包) 過慮設定,你就需要把 Solaris 系統從新啟動或 replumb 網卡才可以正式使用 IP Filter。
replumb 方法:
我的 hme1 ip Address 為 202.134.116.34,Netmask 為 255.255.255.248。
SHELL> ifconfig hme1 unplumb
SHELL> ifconfig hme1 plumb 202.134.116.34 netmask 255.255.255.248 up
如果,你的hme1是透過 DHCP 獲得 IP 的話,可以使用以下方法。
SHELL> ifconfig hme1 unplumb
SHELL> ifconfig hme1 plumb dhcp start
最簡單的方法還是從啟 Solaris 系統。而且也有利於測試 Firewall 和 IP Filter 是否真正的正常運作。
測試:
SHELL> ifconfig -a
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
hme0: flags=1100843<UP,BROADCAST,RUNNING,MULTICAST,ROUTER,IPv4> mtu 1500 index 2
inet 192.168.10.1 netmask ffffff00 broadcast 202.134.126.0
ether 0:c:29:4:88:b8
hme1: flags=1100843<UP,BROADCAST,RUNNING,MULTICAST,ROUTER,IPv4> mtu 1500 index 3
inet 202.134.116.34 netmask fffffff8 broadcast 202.134.116.39
ether 0:c:29:4:88:c2
hme0 IP Address 為 192.168.10.1
hme0 是我的對內網絡。
找一台 Microsoft Windows 系統,做一些網絡設定:
IP Address = 192.168.10.2
Sub Netmask = 255.255.255.0
Gateway = 192.168.10.1
DNS Server = 202.134.105.130 或使用你喜歡的 DNS Server IP Address
用 ping 測試,是否可以 ping 到 192.168.10.1。
然後再用 ping 測試,是否可以 ping 到 對外網絡,例如: ping 218.102,23,36。
最後再試一試,能否正常上網看網頁和其它你喜愛的功能。
其它 IP Filter 深入設定技巧:
- 基本 NAT 設定
- 基本 Port Forward 的應用實例
- 限際網外(Internet)對網內的訪問
基本 NAT 設定
基本資料:-
ppp0 - ( 對外 ) 透過 PPP 連接到網絡供應商(ISP), IP Address 為 a.b.c.d/32
ed0 - (對內) 網絡卡, IP Address 為 w.x.y.z/32
備注: a.b.c.d/32 中的 /32 是 Sub NetMask 來的, /32 為二進的32個1即 255.255.255.255,/24 為二進的24個1即 255.255.255.0, /16 為二進的16個1即 255.255.0.0 如此類推。
如果你在 ISP 只獲得一個有效的固定 IP Address ,你可以做以下工作:
檔案 /etc/ipf/ipnat.conf 內容:
# 使到 ftp 能正常工作,使用 internal ftp proxy
map ppp0 w.x.y.z/24 -> a.b.c.d/32 proxy port ftp ftp/tcp
# 使到正常的 TCP/UDP 和其它通訊際式正常工作
map ppp0 w.x.y.z/24 -> a.b.c.d/32 portmap tcp/udp 40000:60000
map ppp0 w.x.y.z/24 -> a.b.c.d/32
如果你每次連接到 ISP時,所獲得的 IP Address都不同的話,你可以做以下工作:
檔案 /etc/ipf/ipnat.conf 內容:
map ppp0 w.x.y.z/24 -> 0/32 proxy port ftp ftp/tcp
map ppp0 w.x.y.z/24 -> 0/32 portmap tcp/udp 40000:60000
map ppp0 w.x.y.z/24 -> 0/32
如果你從 ISP 獲得一組有效的 Class C IP Address ,你可以這樣做:
檔案 /etc/ipf/ipnat.conf 內容:
map ppp0 w.x.y.z/24 -> a.b.c.d/24 portmap tcp/udp 40000:60000
map ppp0 w.x.y.z/24 -> a.b.c.d/24
或 如果你的電腦不多,也可以這樣做:
檔案 /etc/ipf/ipnat.conf 內容:
map ppp0 w.x.y.v/32 -> a.b.c.E/32 portmap tcp/udp 40000:60000
map ppp0 w.x.y.v/32 -> a.b.c.E/32
map ppp0 w.x.y.u/32 -> a.b.c.F/32 portmap tcp/udp 40000:60000
map ppp0 w.x.y.u/32 -> a.b.c.F/32
map ppp0 w.x.y.t/32 -> a.b.c.G/32 portmap tcp/udp 40000:60000
map ppp0 w.x.y.t/32 -> a.b.c.G/32
map ppp0 w.x.y.s/32 -> a.b.c.H/32 portmap tcp/udp 40000:60000
map ppp0 w.x.y.s/32 -> a.b.c.H/32
map ppp0 w.x.y.r/32 -> a.b.c.I/32 portmap tcp/udp 40000:60000
map ppp0 w.x.y.r/32 -> a.b.c.I/32
map ppp0 w.x.y.q/32 -> a.b.c.J/32 portmap tcp/udp 40000:60000
map ppp0 w.x.y.q/32 -> a.b.c.J/32
map ppp0 w.x.y.p/32 -> a.b.c.K/32 portmap tcp/udp 40000:60000
map ppp0 w.x.y.p/32 -> a.b.c.K/32
當對外網絡有人訪問 a.b.c.E 的時候,相等於訪問內網的 w.x.y.v
基本 Port Forward 的應用實例
實例一:
我希望使用 192.168.0.2 這台電腦建立一台 FTP Server,並且 Internet 以外的用戶都可以使用。
基本資料:-
pcn0 - (對外) 網絡卡, IP Address 為有效的固定 IP 202.134.116.34/32 ,並且可以對外上網通訊。
pcn1 - (對內) 網絡卡, IP Address 為虛擬 IP 192.168.0.1/24,可與內部網絡通訊 (192.168.0.1 至 192.168.0.254)
Port 20 和 Port 21 為 FTP Server 專用 Port
檔案 /etc/ipf/ipnat.conf 內容:
rdr pcn0 0.0.0.0/0 port 20 -> 192.168.0.2 port 20
rdr pcn0 0.0.0.0/0 port 21 -> 192.168.0.2 port 21
把任何一個從外部 Internet IP( 0.0.0.0/0 ) 訪問 pcn0 IP 202.134.116.34 port 20 和 port 21 轉指向 ( rdr .... -> ) 內網 192.168.0.2 的 port 20 和 port 21
在 Internet 外界的眼中 202.134.116.34 為一台 FTP Server,但實際上是由另一台電腦管理。
實例二:
我希望使用 192.168.0.3 這台電腦建立一台 Web Server,並且 Internet 以外的用戶都可以使用。
基本資料:-
pcn0 - (對外) 網絡卡, IP Address 為有效的固定 IP 202.134.116.34/32 ,並且可以對外上網通訊。
pcn1 - (對內) 網絡卡, IP Address 為虛擬 IP 192.168.0.1/24,可與內部網絡通訊 (192.168.0.1 至 192.168.0.254)
Port 80 為 Web Server 專用 Port
檔案 /etc/ipf/ipnat.conf 內容:
rdr pcn0 0.0.0.0/0 port 80 -> 192.168.0.3 port 80
把任何一個從外部 Internet IP( 0.0.0.0/0 ) 訪問 pcn0 IP 202.134.116.34 port 80 轉指向 ( rdr .... -> ) 內網 192.168.0.3 的 port 80
在 Internet 外界的眼中 202.134.116.34 為一台 Web Server,但實際上是由另一台電腦管理。
實例三:
我希望在家中使用 Microsoft 的 "遠端桌面連線",連接到公司中的 192.168.0.4這台 Microsoft Windows XP 電腦進行遠端操作。
基本資料:-
pcn0 - (對外) 網絡卡, IP Address 為有效的固定 IP 202.134.116.34/32 ,並且可以對外上網通訊。
pcn1 - (對內) 網絡卡, IP Address 為虛擬 IP 192.168.0.1/24,可與內部網絡通訊 (192.168.0.1 至 192.168.0.254)
Port 3389 為 Microsoft "遠端桌面連線" 的專用 Port
檔案 /etc/ipf/ipnat.conf 內容:
rdr pcn0 0.0.0.0/0 port 3389 -> 192.168.0.4 port 3389
把任何一個從外部 Internet IP( 0.0.0.0/0 ) 訪問 pcn0 IP 202.134.116.34 port 3389 轉指向 ( rdr .... -> ) 內網 192.168.0.4 的 port 3389
當在家中使用 Microsoft "遠端桌面連線"連接到 IP Address 202.134.116.34 時,相等於你連接到公司的 192.168.0.4 的 Windows XP 中。
實例四:
我希望在家中使用 Microsoft 的 "遠端桌面連線",連接到公司中任何一台 Microsoft Windows XP 電腦進行遠端操作。
基本資料:-
pcn0 - (對外) 網絡卡, IP Address 為有效的固定 IP 202.134.116.34/32 ,並且可以對外上網通訊。
pcn1 - (對內) 網絡卡, IP Address 為虛擬 IP 192.168.0.1/24,可與內部網絡通訊 (192.168.0.1 至 192.168.0.254)
Port 3389 為 Microsoft "遠端桌面連線" 的專用 Port
檔案 /etc/ipf/ipnat.conf 內容:
rdr pcn0 0.0.0.0/0 port 10000 -> 192.168.0.5 port 3389
rdr pcn0 0.0.0.0/0 port 10001 -> 192.168.0.6 port 3389
rdr pcn0 0.0.0.0/0 port 10002 -> 192.168.0.7 port 3389
rdr pcn0 0.0.0.0/0 port 10003 -> 192.168.0.8 port 3389
rdr pcn0 0.0.0.0/0 port 10004 -> 192.168.0.9 port 3389
把任何一個從外部 Internet IP( 0.0.0.0/0 ) 訪問 pcn0 IP 202.134.116.34 port 10000 至 10004 轉指向 ( rdr .... -> ) 內網 192.168.0.5 至 192.168.9.9 的 port 3389
當在家中使用 Microsoft "遠端桌面連線"連接到 IP Address 202.134.116.34:10000 時,相等於你連接到公司的 192.168.0.5 的 Windows XP 中。
連接到 IP Address 202.134.116.34:10001 時,相等於你連接到公司的 192.168.0.6 的 Windows XP 中。 如此類推。
限際網外(Internet)對網內的訪問
實例一:
我不希望 202.66.8.3 這個 IP 從 Internet 訪問我的 Solaris 系統任何服務。
基本資料:-
pcn0 - (對外) 網絡卡, IP Address 為有效的固定 IP 202.134.116.34/32 ,並且可以對外上網通訊。
pcn1 - (對內) 網絡卡, IP Address 為虛擬 IP 192.168.0.1/24,可與內部網絡通訊 (192.168.0.1 至 192.168.0.254)
檔案 /etc/ipf/ipf.conf 內容:
block in quick on pcn0 from 202.66.8.3/32 to any
當 202.66.8.3 透過 pcn0 嘗試訪問 Solaris 系統時,系統便不會作出任何回應。
在指令中 quick 的意思,IP Filter 便不進行 Data Log 和 IPFilter 內部一些不必要的處理,減低系統運作負荷。
實例二:
我不希望 202.66.8.1 至 202.66.8.254 這組 IP 從 Internet 訪問我的 Solaris 系統任何服務。
基本資料:-
pcn0 - (對外) 網絡卡, IP Address 為有效的固定 IP 202.134.116.34/32 ,並且可以對外上網通訊。
pcn1 - (對內) 網絡卡, IP Address 為虛擬 IP 192.168.0.1/24,可與內部網絡通訊 (192.168.0.1 至 192.168.0.254)
檔案 /etc/ipf/ipf.conf 內容:
block in quick on pcn0 from 202.66.8.0/24 to any
當 202.66.8.1 至 202.66.8.254 這組 IP Address 透過 pcn0 嘗試訪問 Solaris 系統時,系統便不會作出任何回應。
遍寫中 05:44 20 Oct, 2006 ,未完成。想睡覺了!
使用 PHP 和 MySQL 來管理 IP Filter
遍寫中 |