如何使用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指定進來的網(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
【編輯推薦】