最近工作上一个作业用到了iptables命令,主要进行端口映射,在网上查了好多资料,尽管有很多例子,但还是整了好几天才整明白。在这里将学习到的知识总结一下。以下均属个人见解。(有一些是从网络中总结的,不断完善中...)

一、基本知识

(1) iptables简介

iptables是一个Linux下优秀的nat+防火墙工具,iptables操作的是2.4以上内核的netfilter,所以需要linux的内核在2.4以上。其功能性与安全性远远比其前辈ipforward、ipchains强大,iptables大致是工作在OSI七层的二、三、四层。

首先简单介绍一下netfilter的大致工作流程,也就是一个数据包(或者分组,packet),在到达linux的网络接口(网卡)的时候,如何处理这个包。然后再介绍一下如何利用iptables改变或控制这个数据包。

netfilter的内部有三个表吗,分别是filter、nat和mangle。每个表有不同的操作链(Chain)。

filter表中,即起防火墙功能的表,定义了三个Chain,分别是INPUT、FORWARD、OUTPUT(即对包的进入、转发和出进行定义的三个链),对这个filter表的操作是实现防火墙功能的一个重要手段。

nat表(Network Address Translation网络地址翻译),定义了PREROUTING、POSTROUTING、OUTPUT三个链,主要用于实现地址转换和端口转发。

mangle表,是一个自定义表,包括上述的filter和nat表中的各种chains,它可以让我们进行一些自定义的操作。mangle表中的chains存在netfilter对包的处理流程中处于一个比较优先的位置(对此表的了解不多,一般情况我们用不到这个mangle表,在此不做介绍)。

下述图清晰的描绘了netfilter对包的处理流程(摘自网上,不知作者是谁,在此深表敬意!)。

注:详细的解说参见如下文章:

http://blog.csdn.net/xingliyuan22/article/details/9047767

(2)基本操作

①iptables命令启动、停止、重启、保存:

#/etc/init.d/iptables start

#service iptables start

#/etc/init.d/iptables stop

#/etc/init.d/iptables restart

#service iptables restart

#/etc/init.d/iptables save

②其他操作详解见

http://blog.csdn.net/xingliyuan22/article/details/8960917

http://blog.csdn.net/xingliyuan22/article/details/9142891

二、应用

(1)端口映射

前提:一台Linux双网卡计算机IP:192.168.1.2、202.201.1.2,内网有一个Web服务器192.168.1.6

要求:在外网的浏览器输入202.201.1.2:8000访问到192.168.1.6的80Web服务端口

详细配置:

注意:在此之前要打开端口转发服务

/etc/sysctl.conf配置文件的  net.ipv4.ip_forward = 1 默认是0

可以获得root权限修正,也可以用如下命令:

echo "1" > /etc/sysctl.conf/net.ipv4.ip_forward

①清除原有规则

#iptables -F -t nat

#iptables -F -t filter

#/etc/init.d/iptables save

②配置映射规则

#iptables -t nat -A PREROUTING -d 202.201.1.2 -t tcp  --dport 8000 -t tcp -j DNAT -to--destination 192.168.1.6:80

#iptables -t nat -A POSTROUTING -d 192.168.1.6 -p tcp --dport 80 -j SNAT -- to 192.168.1.2

#iptables -A FORWARD -o eth0 -d 192.168.1.6 -p tcp --dport 80 -j ACCEPT

#iptables -A FORWARD -i eth0 -s192.168.1.6 -p tcp --dport 80 -j ACCEPT

#iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

③保存,启动服务

#/etc/init.d/iptables save

#service iptables restart

注:在/proc/net/ip_conntrack文件里有包的流向

(2)IP映射

前提:Linux先在一个网卡上追加一个IP地址,Linux上的一个网卡可以有多个IP地址。

LINUX双网卡,IP分别为eth0:192.168.1.2/24、eth1:192.168.2.2/24

要求:将IP:192.168.2.5映射到LINUX上的192.168.1.2上

①追加linux的eth0一个网址

#ip address add 1.1.1.1/30 brd + dev eth0

②iptables配置

#iptables -A FORWARD -s 192.168.12.95 -j ACCEPT

#iptables -A FORWARD -d 192.168.12.95 -j ACCEPT

#iptables -t nat -A PREROUTING -d 202.201.1.2 -j DNAT -to--destination 192.168.1.6

#iptables -t nat -A POSTROUTING -d 192.168.1.6 -j SNAT -- to -source 192.168.1.2

#/etc/init.d/iptables save

#service iptables restart

注:详细的解释参加下述文章:

http://blog.csdn.net/xingliyuan22/article/details/9152323

iptables 小结的更多相关文章

  1. iptables详解(14):iptables小结之常用套路

    不知不觉,已经总结了13篇iptables文章,这些文章中有一些需要注意的地方. 此处,我们对前文中的一些注意点进行总结,我们可以理解为对"常用套路"的总结. 记住这些套路,能让我 ...

  2. Iptables之recent模块小结

    Iptables的recent模块用于限制一段时间内的连接数, 是谨防大量请求攻击的必杀绝技! 善加利用该模块可充分保证服务器安全. recent常用参数--name      设定列表名称,即设置跟 ...

  3. iptables中文介绍 、基本使用操作命令(转)

    iptables 命令介绍   原文链接http://www.cnblogs.com/wangkangluo1/archive/2012/04/19/2457072.html iptables防火墙可 ...

  4. iptables 命令介绍

    http://www.cnblogs.com/wangkangluo1/archive/2012/04/19/2457072.html iptables 防火墙可以用于创建过滤(filter)与NAT ...

  5. iptables的实战整理

    一.iptables使用场景:             内网情况下使用:在大并发的情况下不要开iptables否则影响性能 二.iptables出现下面的问题:             在yewufa ...

  6. iptables基础知识

    iptables防火墙可以用于创建过滤(filter)与NAT规则.所有Linux发行版都能使用iptables,因此理解如何配置 iptables将会帮助你更有效地管理Linux防火墙.如果你是第一 ...

  7. iptables网络安全服务详细使用

    iptables防火墙概念说明 开源的基于数据包过滤的网络安全策略控制工具. centos6.9  --- 默认防火墙工具软件iptables centos7    --- 默认防火墙工具软件fire ...

  8. 【转】iptables 命令介绍

    iptables 防火墙可以用于创建过滤(filter)与NAT规则.所有Linux发行版都能使用iptables,因此理解如何配置iptables将会帮助你更有 效地管理Linux防火墙.如果你是第 ...

  9. [转帖]Linux 硬件和系统配置查看命令小结

    https://blog.csdn.net/strongwangjiawei/article/details/8208825 转帖了不少 发现自己记住的还是不多.. Linux 硬件和系统配置查看命令 ...

随机推荐

  1. 【每日一摩斯】-Troubleshooting: High CPU Utilization (164768.1) - 系列5

    Oracle(用户)进程 以下这些操作都是需要消耗大量CPU资源的:解析大型查询,存储过程编译或执行,空间管理和排序. 下面这几篇文章可以帮助采集关于使用高CPU资源的进程的更多信息: Note:35 ...

  2. Linear Regression(线性回归)(三)—代价函数J(θ)选择的概率解释

    (整理自AndrewNG的课件,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) 在遇到线性回归问题时,我们总是令.可是我们为什么这样选择代价函数呢 ...

  3. 如何在SAS中重新构建限价指令簿(Limit Order Book):使用HashTable

    在之前的一篇日志里(http://blog.csdn.net/u010501526/article/details/8875446),我将重新构建LOB(Limit Order Book)分为了三步 ...

  4. 快速排序的时间复杂度nlogn是如何推导的??

    本文以快速排序为例,推导了快排的时间复杂度nlogn是如何得来的,其它算法与其类似. 对数据Data = { x1, x2... xn }: T(n)是QuickSort(n)消耗的时间: P(n)是 ...

  5. 制作openstack用的centos6.5镜像

    目的: 在centos6.5操作系统环境下制作一个centos6.5的kvm镜像,安装cloud-init,能自己主动扩展根分区 一.制作环境: 操作环境是在openstack平台开一个实例.装的是c ...

  6. android 5.0新特性

    Android Lollipop 面向开发人员的主要功能 Material Design 设计 注重性能 通知 以大屏幕呈现 以文档为中心 连接性能再上一级 高性能图形 音频处理功能更强 摄像头和视频 ...

  7. badi增强

    对于根据事务代码查找对应的BADI,网上介绍的方法很多,但总结下来无非就两种方法,在此把它记录下来,方便以后自己查阅了. (1)通过SE24,输入CL_EXITHANDLER,然后在方法GET_INS ...

  8. 爱的歌我uhegierhiuerh5怕哦一

    http://www.huihui.cn/share/8424421 http://www.huihui.cn/share/8424375 http://www.huihui.cn/share/842 ...

  9. pathload --有效的网络带宽估计方法

    上一篇博客简述了现行的带宽估计的方法,分类,以及一些问题. 见:http://blog.csdn.net/ice110956/article/details/11071969 上文列出了13种现行的方 ...

  10. Linux目录结构和常用命令

    源地址:http://www.cnblogs.com/JCSU/articles/2770249.html 一.Linux目录结构 你想知道为什么某些程序位于/bin下,或者/sbin,或者/usr/ ...