Ubuntu中使用iptables

(一) 设置开机启动iptables
 

# sysv-rc-conf --level 2345 iptables on

 

(二) iptables的基本命令
 

1. 列出当前iptables的策略和规则
# iptables -L -n

 

-n: 用数字形式显示

 

# iptables -L -v

 

-v: 打印详细的信息

 

2. 允许已经建立的连接接收数据
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

 

3. 开放端口22(SSH的默认端口),您要告诉iptables允许接受到的所有目标端口为22的TCP报文通过
 

iptables -A INPUT -p tcp -i eth0 --dport ssh -j ACCEPT

 

注:ssh代表22,可以在/etc/services中查到的服务都可以这样使用。

 

 

4. 添加策略。策略也是一种规则,当所有规则都不匹配时,使用链的“策略”
链:INPUT, PREROUTING, FORWARD, POSTROUTING, OUTPUT

 

链策略的默认值是:ACCEPT。

 

表:filter (默认),nat,mangle。

 

#iptables -P INPUT DROP

#iptables -P OUTPUT ACCEPT

#iptables -P FORWARD DROP

 

----------------------------------------------------

 

root@patrick:~# iptables -L -n

Chain INPUT (policy DROP)

target     prot opt source               destination         

ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           

ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22

 

Chain FORWARD (policy DROP)

target     prot opt source               destination         

 

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination         

ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp spt:22

----------------------------------------------------

 

5. 启动包转发功能

 

将内网的FTP请求转发到外网的一个主机上。

 

iptables -t nat -A PREROUTING -p tcp -dport 21 -j DNAT --to-dest 10.25.1.7:21

 

查看:

 

# iptables -L -t nat

 

要实现包转发,还需要编辑内核参数。

 

# cat /proc/sys/net/ipv4/ip_forward

0

 

默认包转发是禁止的。于是需要打开。编辑/etc/sysctl.conf,然后执行sysctl -p。

(三)保存iptables的规则
step 1) 保存当前iptables的规则到文件中。

 

# iptables-save > /etc/iptables.up.rules
 

step 2) 开机恢复iptables的规则。方法是添加下面这行到文件‘/etc/network/interfaces/’ 的末尾。

 

pre-up iptables-restore < /etc/iptables.up.rules

 

(四)禁用防火墙
 

iptables -F

 

似乎Ubuntu中没有类似service iptables stop这样的命令来暂停iptables。只能使用这种方法来禁用iptables(防火墙)。

 

使用前,请保证规则已经备份在文件中。

posted @ 2017-04-08 13:54  火罐儿  阅读(1112)  评论(0编辑  收藏  举报