博客原文[url]http://redking.blog.51cto.com/27212/143185[/url]
一、netfilter 链 表 规则 之间的关系及相关认识
netfilter是表的容器,表是链的容器,链是规则的容器。
1、filter表 实现包过滤(默认的表)
INPUT 链 处理进入本机的数据包
FORWORD 链 处理转发的数据包
OUTPUT 链 处理本地生成的数据包
该表只允许两种规则 ACCEPT DROP
2.、 nat表 网络地址转换用 (可实现一对一,一对多,多对多等的NAT工作)
PREROUTING 链 处理即将进入本机的数据包
POSTROUTING 链 处理即将发出的数据包
OUTPUT 链 处理在路由之前待转换的本地生成的数据包
3.
Mangle
表 主要用于对指定的包进行修改,适用于以上五种链。
二、
此句示例
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 192.168.1.100
将数据包的源地址转换为 192.168.1.100
此句示例
Iptables -t nat -A PREROUTING -i etho -p tcp --dport 80 -j DNAT --to 5.6.7.8:8080
改变对网卡eth0 80端口的请求的数据包的目的地址到5.6.7.8的8080端口
注:DNAT 多用于发布内网的服务。
三、
将案例说明中的规则写成了脚本 ,以方便于实际适用
该案例图片来源于[url]http://redking.blog.51cto.com/27212/143185[/url]
该案例图片来源于[url]http://redking.blog.51cto.com/27212/143185[/url]
具体脚本如下:
#!/bin/bash
echo "starting iptables rules...."
#启用路由转发功能
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
#以下三步可省略,默认是开启的
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptalbes -t nat -P POSTROUTING ACCEPT
#允许回环地址的通信
iptables -A INPUT -i lo -j ACCEPT
#添加连接状态设置
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#开放80端口
iptables -A FORWARD -p tcp --dport 80 -j ACCEPT
#开启DNS使用UDP、TCP的53端口
iptables -A FORWARD -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -p udp --dport 53 -j ACCEPT
#开启SSH使用的TCP协议22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#开放QQ,MSN相关端口
iptables -A FORWARD -p tcp --dport 1863 -j ACCEPT
iptables -A FORWARD -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -p tcp --dport 8000 -j ACCEPT
iptables -A FORWARD -p udp --dport 8000 -j ACCEPT
iptables -A FORWARD -p tcp --dport 4000 -j ACCEPT
#开放邮件端口
iptables -A FORWARD -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -p tcp --dport 110 -j ACCEPT
iptables -A FORWARD -p udp --dport 110 -j ACCEPT
iptables -A FORWARD -p tcp --dport 143 -j ACCEPT
iptables -A FORWARD -p udp --dport 143 -j ACCEPT
iptables -A FORWARD -p tcp --dport 993 -j ACCEPT
iptables -A FORWARD -p udp --dport 993 -j ACCEPT
iptables -A FORWARD -p tcp --dport 995 -j ACCEPT
iptables -A FORWARD -p udp --dport 995 -j ACCEPT
#nat设置
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/24 -j MASQUERADE
#发布内网web服务器
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.3:80
#end
附注:屏蔽QQ MSN时 除了可以屏蔽端口外,还可以屏蔽域名和IP
Iptables -A FORWARD -d 域名或IP -j DROP
可将以上脚本内容命名为filter-dnat
并加入启动文件中
具体操作
Touch /etc/rc.d/filter-dnat
Chmod u+x /etc/rc.d/filter-dnat
Echo "/etc/rc.d/filter-dnat" >> /etc/rc.d/rc.local
第一次写这么详细的学习心得,多有疏忽,希望博主及,各位博友指教。
本文出自 “27012228” 博客,转载请与作者联系!