iptables默认三张表:

  • filter:防火墙,包含INPUT、OUTPUT、FORWARD
  • nat:网络地转转换,包含PREROUTING、POSTROUTING、OUTPUT
  • mangle:流量×××,包含所有的五条链

iptables的五条链 ->写规则的地方

  • INPUT:数据包的目地的是LINUX主机本身
  • OUTPUT:数据包由LINUX主机本身发送
  • FORWARD:数据包从一个接口进入,另一个接口发出(如果做路由转发的话必须开启/etc/sysctl.conf 修改net.ipv4.ip_forward=1)
  • PREROUTING:做路由之前
  • POSTROUTING:做路由之后

命令

清空防火墙

iptables -F

把INPUT默认规则改成DROP

iptables -P INPUT  DROP

添加一条规则允许SSH通过INPUT

一般插入很多人都写iptables -A (是追加规则,添加的规则在最下方,防火墙的规则是谁在最上边谁生效,所以我一般用-I,添加的规则先生效并且I能指定具体位置)

iptables -I INPUT -p tcp -s 192.168.0.0/24 --dport 22 -j ACCEPT

iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT(将这条规则插入到上面第二行)

只允许允许192.168.0.0、24从eth0网卡访问本机的22端口

iptables -I INPUT -i eth0 -p tcp -s 192.168.0.0/24 --dport 22 -j ACCEPT

列出防火墙规则

iptables -L

删除INPUT里面的第二条规则(从最上面开始)

iptables -D INPUT 2

保存防火墙规则(防火墙如果没有保存,重启服务后规则失效)

service iptables save

备份防火墙规则

iptables-resotre < /etc/sysconfig/iptables.20130301

路由

阻止某个IP到达本机

iptables -I FORWARD -s 202.106.0.20 -j DROP

iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -j SANT --to 1.1.1.1

将192.168.0.0网段的地址转换成1.1.1.1去做nat访问

iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -j SANT --to 1.1.1.1-1.1.1.20

将192.168.0.0网段的地址转换成1.1.1.1-20网段的地址去做nat访问

iptables -t nat -I PREROUTING -i eth0 -p tcp 80 -j DNAT --to 192.168.0.1

将通过网卡eth0的访问80端口的数据包目的地址改为192.168.0.1

iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

将源地址是192.168.0.0/24网段的数据包地址进行伪装

STATE

-m state --state 状态分为

NEW: 有别于tcp的syn

ESTABLISHED:连接态

RELATED:衍生态,与conntrack(连接跟踪模块)关联(FTP)

INVALID:不能识别的连接或者状态

iptables -I INPUT -m state --state RELATED,ESTABLISHED \ -就ACCEPT

允许连接出去后对方主机回应的数据包

MAC

-m mac --mac-source MAC

iptables -I FORWARD -m mac --mac0source xx:xx:xx:xx:xx:xx \ -j DROP

阻断来自某MAC地址的数据包,经过本机的路由

iptables -P FORWARD DROP

iptables -I FORWARD -s 192.168.0.2 -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT

ip与mac地址绑定,只有这个ip能从本机路由

LIMIT限速

-m limit --limit

iptables -I FORWARD -d 192.168.0.2 -m limit --limit 50/s -j ACCEPT

iptables -I FORWARD -d 192.168.0.2 -j DROP

限速50/s要想实现限制上传和下载的速度,得结合TC去分网段

简单web服务器上的防火墙配置

iptables -I INPUT -i eth0(网络端口端口)-j ACCEPT

iptables -I INPUT -p tcp -m multiport --dports 22,80 -j ACCEPT

iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -P INPUT DROP

网关

实例:ADSL 拨号上网的拓扑

echo "1" > /proc/sys/net/ipv4/ip_forward

iptables -t nat -I POSTROUTING -s 192.168.1.0/24 -o eth0 \

-j MASQUERADE

对外服务器

服务协议(TCP/UDP)

对外服务端口

内部服务器私网 IP

内部真正服务端口

实例:

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 \

-j DNAT --to 192.168.1.1

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 81 \

-j DNAT --to 192.168.1.2:80

转载于:https://blog.51cto.com/sanxiayouren/1143125

关于linux下的iptables 的浅析命令和了解相关推荐

  1. linux下防火墙iptables用法规则详解

    linux下防火墙iptables用法规则详解 分享者: du52.com 邮件: wangaibo168@163.com 主页: http://www.du52.com linux下防火墙iptab ...

  2. linux配置指定ip访问指定端口号,操作系统linux和dos linux下通过iptables只允许指定ip地址访问指定端...

    一篇 : linux下通过iptables只允许指定ip地址访问指定端口的设置方法 首先,清除所有预设置 iptables -F#清除预设表filter中的所有规则链的规则 iptables -X#清 ...

  3. Linux下用iptables做端口映射

    Linux下用iptables做端口映射详细过程 在CentOS5.4上用iptables配置了端口映射,讲述详细的配置过程,供大家参考. [实现功能] server-A eth0      119. ...

  4. Linux下常见的文本处理命令

    众所周知,在Linux下"一切皆文件"的原则,一切配置文件都可以以文本的方式进行编辑.存储.故对文本文件的操作能力,决定着你是否能够在Linux下操纵自如.今天,就写下几个关于Li ...

  5. (转载)linux下的find文件查找命令与grep文件内容查找命令

    linux下的find文件查找命令与grep文件内容查找命令 转载于和感谢:linux下的find文件查找命令与grep文件内容查找命令 目录 1.前言 1.1 find命令和grep命令的区别 2. ...

  6. linux下挂载和卸载的命令的用法:mount 、umount

    linux下挂载和卸载的命令的用法:mount .umount 将Windows C:盘(hda1)安装在Linux文件系统的/winsys目录下, 命令是:mount /dev/had1 /wins ...

  7. linux为什么用tar压缩,linux下tar压缩和解压命令用法详解

    linux下tar压缩和解压命令用法详解 2017-03-25 14:06 分享人:老牛 将/usr/local/test目录下所有文件仅打包,不压缩到 /usr/local/auto_bak/目下 ...

  8. linux如何在a休息时运行b,Linux下如何优雅地修正命令?

    原标题:Linux下如何优雅地修正命令? 来源:公众号[编程珠玑] 作者:守望先生 ID:shouwangxiansheng 如何快速纠正你的linux命令?我们在输入命令的时候,难免会出现输入命令错 ...

  9. linux常用调试,linux下gdb常用的调试命令

    用gdb调试程序时,常常很困惑一些命令的使用,要么是不知道这个命令,要么忘了命令的使用方法.接下来是小编为大家收集的linux下gdb常用的调试命令,希望能帮到大家. linux下gdb常用的调试命令 ...

  10. linux 更新软件命令 失败,对linux下软件(库)的更新命令详解

    在ubuntu服务器下安装包的时候,经常会用到sudo apt-get install 包名 或 sudo pip install 包名,那么两者有什么区别呢? 1.区别 pip用来安装来自PyPI( ...

最新文章

  1. No view found for id 0x7f0900d8
  2. 抖音数据统计_“彭十六elf”单条视频获赞200W+,荣登抖音TOP20丨红人榜
  3. 三数之和(Java、C实现)
  4. Linux定时任务Crontab命令详解
  5. ajax同步和异步的区别_同步电机和异步电机区别
  6. PageHelper分页时超过最大数量的页数仍然返回数据,PageHelper分页失效
  7. Android10不能用谷歌,谷歌真的很严格,一大波老APP将不能在安卓10.0运行
  8. 【收藏】需求文档(PRD)终极撰写指南
  9. android x86 sleep,如何打开Android X86对houdini的支持
  10. 基于MSP430F413水果电池供电的低功耗时钟
  11. nohup与区别于使用
  12. 2016考研数学三复习计划
  13. eclipse常用插件之FindBugs
  14. cdr软件百度百科_cdr软件是什么?cdr是什么软件?
  15. Linux下误删除文件的各种恢复工具
  16. hadoop安装作业
  17. 缺少配色灵感,整理超全超赞的配色工具帮你
  18. 思维导图到底是什么-图说思维导图定义
  19. Java SpringBoot 表单提交Json提交 Star.hou
  20. android百度地图画圆,使用百度地图Api,在地图上画圆形区域

热门文章

  1. BZOJ3514 / Codechef GERALD07 Chef and Graph Queries LCT、主席树
  2. 『提醒自己』-自身遗忘掉的知识1
  3. swwht(canvas).demo
  4. 【并发】关于并发、超卖处理的思路
  5. 项目IDEA启动配置
  6. Map集合框架的练习
  7. Java学习:多线程
  8. LintCode 412: Candy
  9. java枚举类型详解
  10. eclipse bookmark的使用