文/陶然 白睿
隨著校園網多出口的出現(xiàn),NAT是必不可少的設備,本文介紹如何將Linux配置成NAT:
本文在CentOS 5上進行配置,主要有以下幾個步驟:
1. 打開Linux的IPv4轉發(fā),修改/etc/sysctl.conf文件,將
net.ipv4.ip_forward = 0
改成
net.ipv4.ip_forward = 1
2. 修改/etc/sysconfig/iptables文件,內容如下:
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth1 -m state --state NEW -j SAME --to 1.1.1.1-1.1.1.10
--nodst
COMMIT
-o eth1表示從eth1出去新建的連接進行轉換,地址從1.1.1.1-1.1.1.10中根據(jù)哈希算法進行選擇。
-j SAME 表示對去往同一個目的地址轉換成同一個IP地址。
--nodst 在選擇原地址時,目的地址不參與散列運算。這樣設置后,每個用戶訪問所有網站都轉換成同一個地址。
3. 修改/etc/modprobe.conf增加:
options ip_conntrack hashsize=100000
這樣修改后,系統(tǒng)最大連接數(shù)就變成80萬。
4. 為NAT增加日志功能
安裝conntrack-tools工具,conntrack-tools是Linux下不同主機之間同步conntrack表的一個用戶空間運行的程序,可以實現(xiàn)有狀態(tài)防火墻之間的狀態(tài)同步,實現(xiàn)防火墻的HA。通過conntrack-tools及syslog可以實現(xiàn)NAT的log功能。
(1)安裝conntrack-tools工具
/etc/yum.repo.d目錄增加CentALT.repo,內容如下:
[CentALT]
name=CentALT Packages for Enterprise Linux 5 - $basearch
baseurl=http://centos.alt.ru/repository/centos/5/$basearch/
enabled=1
gpgcheck=0
運行如下命令:
yum install conntrack-tools
(2)新增/usr/local/bin/conn-to-syslog,其內容為:
#!/usr/bin/perl -w
# Usage: conntrack -E -p tcp --state ESTABLISHED -j | conn-to-syslog
#by wzk@neu 2011
use Sys::Syslog;
$log_ident="NAT";
$log_opt="pid,cons";
$log_facility="local3";
openlog$log_ident,$log_opt,$log_facility;
while (
syslog ('notice', "%s", $_);
#syslog ('err', "Test Error Log Entry: %s", $_);
#syslog ('debug', "Test Debug Log Entry: %s", $_);
}
closelog();
為程序增加執(zhí)行權限:
chmod +x /usr/local/bin/conn-to-syslog
(3)修改/etc/syslog.conf文件,增加紅色部分內容
*.info;mail.none;authpriv.none;cron.none;local3.none /var/log/messages
local3.* -/var/log/nat.log
注意配置文件中的facility與conn-to-syslog一致,這里使用的是local3,完畢后重啟syslogd服務。
5. 啟動conntrack程序,可以寫到rc.local中:
/usr/sbin/conntrack -b 1048576 -E -p tcp --state ESTABLISHED -j | /usr/local/bin/conn-to-syslog &
本例將狀態(tài)為ESTABLISHED的TCP連接記錄到日志中,大家可以根據(jù)man conntrack來調整相應的參數(shù),可以實現(xiàn)TCP、UDP都記錄下來,記錄與/proc/net/ip_conntrack內容格式一致。
經過以上配置后,重新啟動機器即可實現(xiàn)NAT及日志功能。