iptables网络访问控制

来源:互联网 发布:传奇霸业法师武魂数据 编辑:程序博客网 时间:2024/06/06 03:56

参考But_Bueatiful的博客:网址:http://blog.chinaunix.net/uid-26495963-id-3279216.html


iptables将规则组成一个列表,实现绝对详细的访问控制功能


这五个位置也被称为五个钩子函数(hook functions),也叫五个规则链。

1.PREROUTING (路由前)
2.INPUT (数据包流入口)
3.FORWARD (转发管卡)
4.OUTPUT(数据包出口)
5.POSTROUTING(路由后)
        这是NetFilter规定的五个规则链,任何一个数据包,只要经过本机,必将经过这五个链中的其中一个链。       


1.SNAT基于原地址的转换

基于原地址的转换一般用在我们的许多内网用户通过一个外网的口上网的时候,这时我们将我们内网的地址转换为一个外网的IP,我们就可以实现连接其他外网IP的功能

将所有192.168.10.0网段的IP在经过的时候全都转换成172.16.100.1这个假设出来的外网地址:

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 172.16.100.1
这样,只要是来自本地网络的试图通过网卡访问网络的,都会被统统转换成172.16.100.1这个IP.


2.DNAT目标地址转换

对于目标地址转换,数据流向是从外向内的,外面的是客户端,里面的是服务器端通过目标地址转换,我们可以让外面的ip通过我们对外的外网ip来访问我们服务器不同的服务器,而我们的服务却放在内网服务器的不同的服务器上

    如何做目标地址转换呢?:
iptables -t nat -A PREROUTING -d 192.168.10.18 -p tcp --dport 80 -j DNAT --todestination 172.16.100.2
        目标地址转换要做在到达网卡之前进行转换,所以要做在PREROUTING这个位置上
 


iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8180


把80端口路由转为8180端口


-t nat:显示所有的关卡的信息

-A:追加,在当前链的最后新增一个规则

-p:用于匹配协议的(这里的协议通常有3种,TCP/UDP/ICMP

-p tcp :TCP协议的扩展。一般有三种扩展

--dport XX-XX:指定目标端口,不能指定多个非连续端口,只能指定单个端口
-j ACTION  ,其中ACTION可以为REDIRECT:重定向:主要用于实现端口重定向