Iptables是Linux提供的一个非常优秀的防火墙工具—。它完全免费、功能强大、使用灵活、可以对流入和流出的信息进行细化控制,且可以在一台低配置机器上很好地运行。本文将简单介绍的基础知识,以及使用Iptables实现共享上网。
iptables 常用命令
iptables [-t table] [command] 链名 [match] -j [target]
1. [-t table]选项允许使用标准表之外的任何表。表是包含仅处理特定类型信息包的规则和链的信息包过滤表。有三个可用的表选项:filter、nat和mangle。该选项不是必需的,如果未指定,则filter作为缺省表。
nat 用于要转发的信息包 包括一下链
POSTROUTING 出口 SNAT使用
PREROTING 进口 DNAT,重定向
filter 用于一般的信息包过滤 包括以下链
INPUT 进入防火墙的流量
OUTPUT 从防火墙发出的流量
FORWARD 通过防火墙的流量
mangle 包含一些规则用于高级路由的信息
2.command部分是iptables命令最重要的部分。它告诉iptables命令要做什么,例如插入规则、将规则添加到链的末尾或删除规则
指令 全部大写
-A --append 增加策咯
-D --delete 链名 编号 删除策咯
-I --insert 链名 编号 插入策咯
-R --replace 链名 编号 替换策咯
-F --flush 刷空 清空策咯
-P --policy 设置默认策略
3.匹配(match)
iptables命令的可选match部分指定信息包与规则匹配所应具有的特征(如源地址、目的地址、协议等)。匹配分为通用匹配和特定于协议的匹配两大类。这里将介绍可用于采用任何协议的信息包的通用匹配。
来源
-s 地址 / 范围 (子网 网络)
-i 接口 (入口)
目标
-d 地址 / 范围 (子网 网络)
-o 接口 (出口)
协议
-p tcp --dport --sport
标志位 ( SYN ACK FIN RST URG PSH ALL NONE)
-p tcp --tcp-flags
标志位 ( SYN ACK FIN RST URG PSH ALL NONE)
-p
icmp
--icmp-type [!] typename
echo-reply / 0
echo-request /8
4.目标(target)
ACCEPT REJECT DROP SNAT DNAT REDIRECT(端口重定向) MASQUERADE (SNAT)
iptables 应用
[root@mail ~]# service iptables
用法:/etc/init.d/iptables {start|stop|restart|condrestart|status|panic|save}
查看
[root@mail ~]# iptables -t [tables] -L -n -v
实例
为了保证较为严格的控制可设置默认策略为DROP
[root@mail ~]# iptables -P INPUT DROP aksdfj
[root@mail ~]# iptables -P OUTPUT DROP
[root@mail ~]# iptables -P FORWARD DROP
允许192.168.101.130 sshd 登陆
iptables -t filter -A INPUT -s 192.168.101.130 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -d 192.168.101.130 -p tcp --sport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
y允许192.168.2.0网段的客户机NAT转换
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j SNAT --to 192.168.101.100
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
设置192.168.101.100D NAT为192.168.2.100
iptables -t nat -A PREROUTING -d 192.168.101.100 -i eth0 -j DNAT --to 192.168.2.100
开启127.0.0.1
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
开启ping 通过
iptables -t filter -A INPUT -s 192.168.101.100 -p icmp --icmp-type echo-request(8) -j ACCEPT
iptables -t filter -A OUTPUT -d 192.168.101.100 -p icmp --icmp-type echo-type echo-replay(0) -j ACCEPT
允许DNS的NAT转换和通过
iptables -t nat -A POSTROUTING -m iprange --src-range 192.168.2.21-192.168.2.40 -m time --weekdays Mon,Tue,Wed,Thu,Fri --timestart 08:00 --timestop 20:00 -p udp --dport 53 -o eth0 -j MASQUERADE
iptables -t filter -I FORWARD 2 -m iprange --src-range 192.168.2.21-192.168.2.40 -p udp --dport 53 -j ACCEPT