◎李偉革 郝麗蓉 本文向讀者介紹如何使用Linux下的IP Masquerade(簡稱IP Masq)防火牆功能。使用IP Masq可以實現NAT功能,這是網絡防火牆的主要功能之一,用於中小型企、事業單位、居民生活小區通過單個注冊的IP實現共享上網服務,特別是隨著寬帶網的普及,大量的用戶需要使用Internet,為了解決IP地址短缺問題,使用Linux下的IP Masq是一種較理想的解決方案。要實現Linux下的IP Masq需要解決兩個問題,即網絡雙網卡的正確安裝和IP Masq的正確設置。 一、 Linux下雙網卡的正確安裝 1.設備環境 ① IBM兼容PC機一台,IDE硬盤一塊。 ② Turbo Linux操作系統6.0。 ③ 3Com ISA以太網卡3C509B-TPO兩塊。 2.安裝過程 ① 在DOS系統下,使用3C509B網卡驅動程序中所帶3c5x9cfg.exe調試程序配置、測試兩塊3Com ISA網卡參數(主要是IRQ中斷號和I/O內存地址),保證兩塊網卡能夠正常運行。 ② 在計算機系統中,安裝Turbo Linux操作系統,配置第一塊網卡(IO=0x300),系統自動缺省識別網卡IOBASE=0x300,使用ping命令測試網卡狀態。 ③ 為了減少啟動時可能出現的問題,Linux內核不會自動檢測多個網卡。若需要在服務器上安裝多塊網卡,對於已經將網卡的驅動編譯進內核中的系統,則需要在“/etc/lilo.conf”文件中指定各個網卡的參數信息; 而對於沒有將網卡的驅動編譯到內核而是作為模塊動態載入的系統,應該在“conf.modules”文件中進行相應的配置。 ④ 安裝第二塊網卡,在“/etc/lilo.conf”中增加配置信息,其方法是通過LILO程序將啟動參數信息傳遞給內核。對於ISA卡,編輯“/etc/lilo.conf”文件,增加如下內容:ether=10,0x320,0,0,eth1。 前四個參數是數字,最後一個參數是設備的名稱。所有的數字變量都可以自由選擇,如果用戶忽略或是設置成0,那麼核心會自動檢測該設備的參數變量或使用默認值。第一個參數代表分配給設備的中斷請求通道,默認情況下核心會自動檢測設備的IRQ通道; 第二個參數變量用來指定設備的基本I/O地址,同樣,如果這裡是0,就意味著核心會自動檢測該設備的I/O地址;剩下的兩個參數變量對於不同的設備有不同的含義,對於共享內存的網卡,它們用來定義共享內存區域的起始點和結束點,對於其他網卡來說,它們使用第一個參數來設置信息的調試等級,數字1到7代表調試等級逐漸增加,而數字8表示關閉信息調試,0表示使用默認值。 ⑤ 重新啟動機器。 ⑥ 通過Turbonetcfg增加eth1,並配置該網卡網絡參數,如IP地址、網關等。 ⑦ 重新啟動機器,使用ping命令測試網卡狀態。 ⑧ 通過Ifconfig命令顯示Interface接口狀態。 二、 IP Masq的正確設置 1.檢查Linux 系統內核是否支持IP Masq 檢查Linux系統內核是否支持IP Masquerade。如果你手中的Linux版本支持如下特征: IPFWADM/IPCHAINS、IP forwarding 、IP masquerading 、IP Firewalling 則你不需要重新編譯Linux內核,如果你不太確信,可運行如下命令進行測試檢查: # ls /proc/sys/net/ipv4 如果如下文件存在,則Linux已支持IP Masquerade:“ip_forward”、“ip_masq_debug”、“ip_masq_udp_dloose”、“ip_always_defrag”。 2.為內網分配私網IP地址 私網地址用於企業內部基於TCP/IP技術的聯網需要,它由The Internet Assigned Numbers Authority (IANA)分配,筆者采用了以下地址: 192.168.0.0/24。 3.創建文件 /etc/rc.d/rc.firewall,編輯管理規則 # rc.firewall - Initial SIMPLE IP Masquerade test for 2.1.x and 2.2.x kernels # FORWARD_IPV4=true echo “1” > /proc/sys/net/ipv4/ip_forward #CRITICAL: Enable automatic IP defragmenting since it is disabled by default # in 2.2.x kernels. This used to be a compile-time option but the behavior was changed in 2.2.12 echo “1” > /proc/sys/net/ipv4/ip_always_defrag # MASQ timeouts 2 hrs timeout for TCP session timeouts # 10 sec timeout for traffic after the TCP/IP “FIN” packet is received # 160 sec timeout for UDP traffic (Important for Masq ’ed ICQ users) /sbin/ipchains -M -S 7200 10 160 # Enable simple IP forwarding and Masquerading /sbin/ipchains -P forward DENY /sbin/ipchains -A forward -i eth0 -s 192.168.0.0/24 -j MASQ *注釋 interface eth0為公網IP地址(Registered IP Address); 編輯/etc/rc.d/rc.firewall文件的規則後,改變其文件權限為可執行如下命令:# chmod 700 /etc/rc.d/rc.firewall。 4.將Firewall加載到啟動腳本中 當Firewall規則指定完畢後,需要重新啟動計算機系統。你可以手工運行,也可以在系統中修改系統啟動腳本使其自動執行。 手動的方式是在系統命令提示符下,執行如下命令:#/etc/rc.d/rc.firewall。 編輯啟動腳本的方法是在/etc/rc.d/init.d文件中增加如下內容:/etc/rc.d/rc.firewall。 運行IP Masq後,使用ping命令測試NAT的網絡功能,檢查IP Masq是否正常運行。 下面是Linux IP Masq正常運行後的系統路由表。