如何使用iptables來實現(xiàn)NAT
如何使用iptables來實現(xiàn)NAT:
一、Iptables 的使用語法
在使用iptables的NAT功能時,我們必須在每一條規(guī)則中使用"-t nat"顯示的指明使用nat表。然后使用以下的選項::
1. 對規(guī)則的操作
加入(append) 一個新規(guī)則到一個鏈 (-A)的最后。
在鏈內(nèi)某個位置插入(insert) 一個新規(guī)則(-I),通常是插在最前面。
在鏈內(nèi)某個位置替換(replace) 一條規(guī)則 (-R)。
在鏈內(nèi)某個位置刪除(delete) 一條規(guī)則 (-D)。
刪除(delete) 鏈內(nèi)第一條規(guī)則 (-D)。
2. 指定源地址和目的地址
通過--source/--src/-s來指定源地址(這里的/表示或者的意思,下同),通過--destination/--dst/-s來指定目的地址。可以使用以下四中方法來指定ip地址:
a. 使用完整的域名,如“www.linuxaid.com.cn”;
b. 使用ip地址,如“192.168.1.1”;
c. 用x.x.x.x/x.x.x.x指定一個網(wǎng)絡(luò)地址,如“192.168.1.0/255.255.255.0”;
d. 用x.x.x.x/x指定一個網(wǎng)絡(luò)地址,如“192.168.1.0/24”這里的24表明了子網(wǎng)掩碼的有效位數(shù),這是 UNIX環(huán)境中通常使用的表示方法。
缺省的子網(wǎng)掩碼數(shù)是32,也就是說指定192.168.1.1等效于192.168.1.1/32。
3. 指定網(wǎng)絡(luò)接口
可以使用--in-interface/-i或--out-interface/-o來指定網(wǎng)絡(luò)接口。從NAT的原理可以看出,對于PREROUTING鏈,我們只能用-i指定進(jìn)來的網(wǎng)絡(luò)接口;而對于POSTROUTING和OUTPUT我們只能用-o指定出去的網(wǎng)絡(luò)接口。
4. 指定協(xié)議及端口
可以通過--protocol/-p選項來指定協(xié)議,如果是udp和tcp協(xié)議,還可--source-port/--sport和 --destination-port/--dport來指明端口。
#p#
二、iptabls的使用實例:
假如有一個廣域網(wǎng)的ip地址為a.b.c.d 網(wǎng)關(guān)a.b.c.x 掩碼 255.255.255.252
局域網(wǎng)ip地址為192.168.0.1-192.168.0.255 網(wǎng)關(guān) 192.168.0.1
軟件環(huán)境為:Linux7.2 選擇server安裝
指定eth0:a.b.c.d eth1:192.168.0.1
添加路油表
- vi /etc/sysconfig/static-routes
 - etho net a.b.c.d netmask 255.255.255.252 gw a.b.c.x
 - eth1 net 192.168.0.1netmask 255.255.255.0 gw 192.168.0.1
 
指定網(wǎng)關(guān)
- vi /etc/sysconfig/network
 - NETWORKING=yes
 - GATEWAYDEV=eth0
 - GATEWAY=a.b.c.x
 - HOSTNAME=(主機名字)
 
起用路由
- vi /etc/sysctl.conf
 - net.ipv4.ip_forward=1
 - net.ipv4.conf.default.rp_filter=1
 - kernel.core_uses_pid=1
 - kernel.sysrq=0
 
配置iptables的腳本
建立rc.fw
- #for this to run iptables firewall
 - !/bin/sh
 - /sbin/modprobe ip_tables
 - /sbin/modprobe ip_nat_ftp
 - /sbin/modprobe ip_conntrack_ftp
 - /sbin/iptables -F
 - /sbin/iptables -F -t nat
 - /sbin/iptables -X
 - /sbin/iptables -Z
 - echo"1">/proc/sys/net/ipv4/ip_forward
 - /sbin/iptables -P INPUT ACCEPT
 - /sbin/iptables -P FORWARD ACCEPT
 - /sbin/iptables -P OUTPUT ACCEPT
 - iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
 - iptables -A FORWARD -s 0/0 -d 0/0 -j ACCEPT
 
上面這些是沒有任何限制的iptables要想有些安全限制可以自行
新的聯(lián)接
#p#
三、端口的轉(zhuǎn)發(fā)
假如內(nèi)部有一個www 服務(wù)器 一個ftp服務(wù)器
地址分別是192.168.0.8(www)
192.168.0.9(ftp)
在上面的腳本里最后添加
- iptables -t nat -A PREROUTING -d a.b.c.d -p tcp --dport 80 –j DNAT --to 192.168.0.8:80
 - iptables -t nat -A PREROUTING -d a.b.c.d -p tcp --dport 21 -j DNAT --to 192.168.0.9:21
 
附錄:
-p 指定協(xié)議(--protocol)
--dport 指明端口(--source-port/--sport和 --destination-port)
-i 或者-o 指定網(wǎng)絡(luò)接口(PREROUTING鏈用-i POSTROUTING 用-o)
-s 指明源地址(--source/--src/源地址destination/--dst/目的地址)
-A 加入一個新規(guī)則到一個鏈(一般寫到最后面)(append)
-I 在鏈內(nèi)某個位置插入(insert)一般最后面
-R 在鏈內(nèi)某個位置替換一條規(guī)則
-D 刪除鏈內(nèi)第一條規(guī)則(delete)
-d 指明目的地址
下面是一個iptable的腳本沒有安全性能:
- touch /var/lock/subsys/local
 - #for this to run iptables firewall
 - !/bin/sh
 - /sbin/modprobe ip_tables
 - /sbin/modprobe ip_nat_ftp
 - /sbin/modprobe ip_conntrack_ftp
 - /sbin/iptables -F
 - /sbin/iptables -F -t nat
 - /sbin/iptables -X
 - /sbin/iptables -Z
 - /sbin/iptables -P INPUT ACCEPT
 - /sbin/iptables -P FORWARD ACCEPT
 - /sbin/iptables -P OUTPUT ACCEPT
 - echo"1">/proc/sys/net/ipv4/ip_forward
 - /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
 - /sbin/iptables -A FORWARD -s 0/0 -d 0/0 -j ACCEPT
 
【編輯推薦】















 
 
 
 
 
 
 