博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iptables 用法
阅读量:5323 次
发布时间:2019-06-14

本文共 3011 字,大约阅读时间需要 10 分钟。

Iptables的五条规则链:

Prerouting 路由前检查

Forward 转发

Postrouting 路由后

Input 访问防火墙本身

Output 防火墙本身访问其他网络

Linux制作路由转发,数据报最少经过prerouting、forward、postrouting 三条规则链

外界访问linux防火墙本身要经过prerouting,input规则链

Linux防火墙本身访问外界要经过postrouting,output规则链

Iptables 默认具有3个规则表

filter:用于设置包过滤 设置input 、forward 、output,无论什么数据报都要经过这三个规则链

nat: 用于设置地址转换 设置 prerouting 、output 、postrouting。Prerouting是做DNAT(目标地址转换)的,例如外界访问内网服务器。Postrouting 是做SNAT(源地址转换)的,例如内网通过防火墙NAT访问internet,现转发后修改源地址。Output 是防火墙本身要访问外网需要做DNAT时用,因为防火墙本身发送数据包不经过postrouting链了,为了实现目标地址转换添加了Output链。(注:nat表里的output链和filter表里的output链不一样。)

mangle:用于设置网络流量整形等应用

Iptables配置文件与策略设置文件

配置文件 /etc/sysconfig/iptables-config

策略设置文件 /etc/sysconfig/iptables

Iptables常用命令:

Iptables-save:将当前系统中的防火墙设置进行保存,直接保存到规则文件中iptables-save > /etc/sysconfig/iptables 等价于 /etc/inid.d/iptables save

Iptables-restore:将使用iptables-save保存的防火墙策略恢复到当前系统

Iptables-restore < ipt.v1.0(备份策略文件)

策略规则语法

Iptables [-t 要操作的表]

<操作命令>

[要操作的链]

[规则号码]

[匹配条件]

[-j 匹配到以后的动作]

针对链的操作有:

-L 列出链中的所有规则 如果不加表名默认显示filter表中的链(INPUT、FORWARD、OUPUT)

-F 清除链中的所有规则

-P 设置链的默认动作 ACCEPT REJECT DROP......

-Z 计数器清零

-N 定义一个新的规则链

-X 删除自定义的规则链

针对规则的操作有:(注意:越复杂的规则就越放在最前面)

-A 追加一个规则 (追加就是放在最后)

-I 插入一个规则

-D 删除一个规则

Iptables实例:

#Iptables -F //默认清空fielter表中的所有规则(暂时的)

#Iptables -t nat -F //清空nat表中的所有规则

#Iptables [-t table] -X [chain] //删除自定义规则链

Iptables [-t table] -A chain rule-specification [options](不指定表,默认操作filter表中的规则链)

#iptables -A INPUT -i lo -j ACCEPT //在filter表INPUT链中添加规则允许来自"lo"网络接口中所有数据包。

#iptable -A INPUT -i eth0 -s 192.168.1.0/24 -j ACCEPT //在filter表INPUT链中追加规则,允许"eth0"接口中来自192.168.1.0/14网段的数据包。即允许此网段访问防火墙本机。

Iptables -A INPUT -p tcp --dport 80 -j ACCEPT //允许访问tcp 80号端口的数据包

书写规则:

网络接口lo的处理

状态监测的处理

协议+端口的处理

实例1:一个安装有iptables防火墙的web服务器

Iptables -A INPUT -i lo -j ACCEPT //允许本地回环

Iptables -A INPUT -p tcp -m multiport 22,80 -j ACCEPT // 允许访问22,80号端口,即开放ssh和http

Iptables -A INPUT -p tcp -m state --state RELATED, ESTABLISHED -j ACCEPT // 对已经建立RELATED, ESTABLISHED状态的连接,允许

Iptables -P INPUT DROP //不符合以上规则的数据包丢弃

实例2: 一个典型iptables配置脚本

#!/bin/sh

Iptables -F //清除链中的所有规则

Iptables -X //删除自定义的规则链

Iptables -Z //计数器清零

Iptables -P INPUT DROP //默认动作丢弃,也就是检查数据包的最后一条规则

Iptables -A INPUT -i lo -j ACCEPT //允许本地回环

Iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT //允许ssh

Iptables -A INPUT -i eth0 -p tcp --dport 88 -j ACCEPT //允许http

Iptables-save //保存产生/etc/sysconfig/iptables 策略文件

设置linux作为网关服务器(类似于家用路由器)

配置需求

·服务器网卡接口eth0的ip地址为192.168.1.1/24,eth0网络接口与公司内网连接

·服务器的网络接口ppp0是主机的拨号网络接口,具有公网ip地址

·局域网中的所有主机都需要通过linux网关服务器与外部互联网进行通信

关键配置命令:

#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE(伪装的意思) //源地址转换,在POSTROUTING链上做,把源地址换成ppp0端口地址。

SNAT源地址转换典型事例

#iptables -t nat -A POSTROTING -s 192.168.6.0/24 -j SNAT --to 192.168.6.200

//在POSTROUTING做源地址转换把源地址192.168.6.0/24网段改成192.168.6.200

DNAT目标地址转换实例

#iptables -t nat -A PREROUTING -d 192.168.106.200 -p tcp --dport 80 -j DNAT --to 192.168.156.200:80

将访问目标地址为192.168.106.200的80端口的数据包,目标地址转换成192.168.6.200:80端口。

转载于:https://www.cnblogs.com/sunsweet/archive/2013/02/27/2934550.html

你可能感兴趣的文章
第二次作业
查看>>
EM13C添加agent记录两个报错
查看>>
maven learn note (01)
查看>>
远程桌面服务当前正忙,因此无法完成您尝试执行的任务-win2008R2
查看>>
Gradle SpringBoot项目常见配置内容---端口,读取配置文件,数据库连接,thymeleaf模板,日志...
查看>>
【HeadFirst 设计模式学习笔记】16 建筑者(Builder)模式拾零
查看>>
为什么要使用Spark?
查看>>
spark1.3编译过程中遇到的一个坑
查看>>
nginx+tomcat负载均衡
查看>>
小程序---图片加载出错时,显示默认图片
查看>>
正则表达式详解
查看>>
设计模式之建造者模式和工厂模式 使用小结
查看>>
VALSE2019总结(6)-年度总结-物体检测
查看>>
基于SmartQQ协议的QQ聊天机器人-7
查看>>
应用程序各对象创建的顺序
查看>>
使用JDK中的proxy技术实现AOP功能
查看>>
[转载]苹果公司与分工原理
查看>>
[bzoj1051]Popular Cows
查看>>
学霸网站部分功能测试
查看>>
浅析JVM内存结构和6大区域(转)举例非常好
查看>>