iptables主机防火墙功能及常用命令

FSM:Finite State Machine 有限状态机

客户端:closed -->syn_sent -->established --> fin_wait_1 -->find_wait_2 --> timewait(2MSL)

服务器:closed -->listen -->syn_rcvd -->establised --> close_wait -->last_ack





-m state:追踪连接状态

   模板:内存中会维持一个空间

       NEW

       ESTABLISHED

       RELATED

       INVALID

在前端的服务器中尽量不要开启追踪连接





iptables子命令

  规则:-A,-I,-D,-R

  链:-N,-X,-F,-Z,-E,-P -S

      通:默认 DROP

      堵:默认ACCEPT

  显示:-L -S

      -L 

       -n -v -x --line-numbers





  规则定义:iptables -t table -A|-I|-R chain 匹配条件 -j target

      匹配条件

         通用匹配:-s -d -i -o -p

         扩展匹配

             隐含扩展

               -p tcp

                --sport --dport --tcp-flags

                --syn

               -p udp

                 --sport --dport

               -p icmp

                  --icmp-type

                    echo-request 8

                    echo-reply 0

              显示扩展:

                 -m state 

                    --state

                 -m multiport

                    --sprots, --dports,  --ports

                 -m iprange

                    --src-range, --dst-range

                 -m string

                    -algo {bm|kmp} --string --hex-string

                 -m connlimit

                   ! --connlimit-above

                 -m limit

                   --limit n(/second|/minute|/hour|/day), --limit-burst

                 -m time

                    --datestart --datestop

                    --timestart -- timestop

                    --weekdays

           -j

             ACCEPT,DROP,REJECT,LOG,REDIRECT,SNAT,DNST,MASQUERADE,MARK,RETURN,自定义链





四表:raw mangle nat filter 

五链:PREROUTING INPUT FOEWARD OUTPUT POSTOUTING





规则保存和恢复:iptables-save iptables-restore





主机防火墙:INPUT OUTPUT

网络防火墙:FORWARD

路由:

    NAT:

/proc/sys/net/ipv4/ip_forward





地址属于内核,地址当前属于主机的都给予响应





路由:对Linux主机而言,设定/proc/sys/net/ipv4/ip_forward的值为1,即为开启路由

     路由表的生成

       静态:手动添加

       动态:基于路由协议学习,RIP2 OSPF

NAT:网络地址转换

     A:10

     B:172.16-172.31

     C:192.168.0-192.168.255





     NAT: 工作于传输层和网络层

        过载技术

        Basic NAT:静态NAT

        NAPT:动态NAT,网络地址端口转换

             源地址转换:SNAT 用于内网主机访问互联网

             目标地址转换:DNAT

             让互联网上主机访问本地内网中的某服务器上的服务(发布)





        iptables基于SNAT和DNAT这两个目标实现地址转换技术

        -j SNT --to-source SIP

          规则添加:POSTROUTING链

        -j MASQUERAADE  动态获取





        -j DNAT --to-destination DIP{:PORT}

        支持端口映射









        基于nat表

           PREROUTING

           POSTROTING

           OUTPUT

Proxy(代理):工作在应用层

举例说明:

网络拓扑





简单网络访问路由转发功能

172.16.1.10能ping通192.168.8.40,但不能ping通192.168.8.39

192.168.8.39能Ping通172.16.1.254,但不能ping通172.16.1.10

原因:linux中网卡程序都加载于系统内核中,运行在上面的网卡程序会被系统认为是同一个设备



配置开启路由转发功能

# vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

让配置生效

# sysctl -p

也可以,采用如下命令临时生效

# sysctl -w net.ipv4.ip_forward=1

验证

# cat /proc/sys/net/ipv4/ip_forward

windows客户端添加路由,也可以实现访问

route add 172.16.1.0 mask 255.255.255.0 172.16.1.254

将转发规则屏蔽,则无法访问

# iptables -P FORWARD DROP

对常见服务的放行实例

放行192.168.8.39中80口的访问

# iptables -A FORWARD -s 172.16.1.10 -d 192.168.8.39 -p tcp --dport 80 -j ACCEPT

# iptables -A FORWARD -d 172.16.1.10 -s 192.168.8.39 -p tcp --sport 80 -j ACCEPT





放行172.16.1.0/24网段对192.168.8.0网段22号端口的访问

# iptables -A FORWARD -s 172.16.1.0/24 -d 192.168.8.0/24 -p tcp --dport 22 -j ACCEPT

# iptables -A FORWARD -s 192.168.8.0/24 -d 172.16.1.0/24 -p tcp --sport 22 -j ACCEPT





重新编写规则

# iptables -F FORWARD

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

# iptables -R FORWARD 2 -d 192.168.8.39 -p tcp -m multiport --dports 22,80 -m state --state NEW -j ACCEPT





nat规则举例





初始化:

# iptables -P INPUT ACCEPT

# iptables -P OUTPUT ACCEPT

//需要accept否则将无法通过路由转发任何数据包

# iptables -P FORWARD ACCEPT

模拟dnat功能之互联网访问局域网服务器


外网端:172.16.1.10

内网端:192.168.8.39





//将访问172.16.1.254 80端口的服务映射到8.89的80端口上

# iptables -t nat -F

# iptables -t nat -A PREROUTING -d 172.16.1.254 -p tcp --dport 80 -j DNAT --to-destination 192.168.8.39





在目标8.39的web日志中可以看到是172.16.1.10访问的,而不是192.168.8.40路由访问





禁止172.16.1.10的IP访问

# iptables -I FORWARD -s 172.16.1.10 -j REJECT





通过外网地址172.16.1.254的22022端口访问192.168.8.39的22号端口(相当于端口映射)

# iptables -t nat -A PREROUTING -d 172.16.1.254 -p tcp --dport 22022 -j DNAT --to-destination 192.168.8.39:22

模拟snat功能之局域网访问互联网应用

172.16.1.10 和 172.16.1.254的eth1都放置于 vmnet2虚拟交换环境中

充当路由功能的机器

外网接口:

DEVICE=eth0

ONBOOT=yes

BOOTPROTO=none

IPADDR=192.168.8.15

BROADCAST=192.168.8.255

NETMASK=255.255.255.0

GATEWAY=192.168.8.254

NETWORK=192.168.8.0





DNS配置

/etc/resolve.conf

nameserver 192.168.8.251





内网接口:

# cd /etc/sysconfig/network-scripts/

# cp ifcfg-eth0 ifcfg-eth1





DEVICE=eth1

ONBOOT=yes

BOOTPROTO=none

IPADDR=172.16.1.254

BROADCAST=172.16.1.255

NETMASK=255.255.255.0

NETWORK=172.16.1.0

内网的机器:

172.16.1.10

DNS:192.168.8.251

GAWEWAY:172.16.1.254





配置192.168.8.251

# vim /etc/sysctl.conf

打开防火墙转发功能

net.ipv4.ip_forward = 1





sysctl -p 使配置生效





在防火墙上添加规则,对来自内网 172.16.1.0网段的机器进行源地址转换

# iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT --to-source 192.168.8.15

测试在内网机器中可以访问互联网

iptables实现网络防火墙及地址转换的更多相关文章

  1. iptables详解(11):iptables之网络防火墙

    我们一起来回顾一下之前的知识,在第一篇介绍iptables的文章中,我们就描述过防火墙的概念,我们说过,防火墙从逻辑上讲,可以分为主机防火墙与网络防火墙. 主机防火墙:针对于单个主机进行防护. 网络防 ...

  2. 防火墙之地址转换SNAT DNAT

    一.SNAT源地址转换. 1.原理:在路由器后(PSOTROUTING)将内网的ip地址修改为外网网卡的ip地址. 2.应用场景:共享内部主机上网. 3.设置SNAT:网关主机进行设置. (1)设置i ...

  3. centos6中iptables单机网络防火墙的使用

    概述: iptables:基于软件的形式实现的一种防火墙的软件程序 Firewall:工作在主机或网络边缘,对进出的报文按事先定义的规则进行检查,并且由匹配到的规则进行处理的一组硬件或软件,甚至可能是 ...

  4. Iptables防火墙NAT地址转换与端口转发

    开启系统转发功能: [root@localhost /]# vim /etc/sysctl.conf # Generated by iptables-save v1.4.7 on Thu May 12 ...

  5. iptables进行DNAT(目标地址转换)

    前言:对于Linux服务器而言,一般服务器不会直接提供公网地址给用户访问,服务器在企业防火墙后面,通常只是暴露一个公网给用户,下面已80端口进行实现. 演示环境:VM (1)host: 172.16. ...

  6. 网络防火墙和NAT地址转换

    网络防火墙 iptables/netfilter网络防火墙: (1) 充当网关 (2) 使用filter表的FORWARD链 注意的问题: (1) 请求-响应报文均会经由FORWARD链,要注意规则的 ...

  7. 【iptables】linux网络防火墙-iptables基础详解(重要)

    一:前言   防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种.无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘.而我们的任务就是需要去定义到底防 ...

  8. linux网络防火墙-iptables基础详解

    一:前言 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种.无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘.而我们的任务就是需要去定义到底防火墙 ...

  9. 【操作系统之十五】iptables黑白名单、自定义链、网络防火墙、常用动作

    1.黑白名单当链的默认策略为ACCEPT时,链中的规则对应的动作应该为DROP或者REJECT,表示只有匹配到规则的报文才会被拒绝,没有被规则匹配到的报文都会被默认接受,这就是"黑名单&qu ...

随机推荐

  1. [学习笔记]Dsu On Tree

    [dsu on tree][学习笔记] - Candy? - 博客园 题单: 也称:树上启发式合并 可以解决绝大部分不带修改的离线询问的子树查询问题 流程: 1.重链剖分找重儿子 2.sol:全局用桶 ...

  2. Class对象、反射机制、获取Constructor构造方法

    1.Class对象的三种创建方法(Class首字母大写) public class Demo { public static void main(String[] args){ Object obj= ...

  3. SVM的两个参数 C 和 gamma

    SVM模型有两个非常重要的参数C与gamma.其中 C是惩罚系数,即对误差的宽容度.c越高,说明越不能容忍出现误差,容易过拟合.C越小,容易欠拟合.C过大或过小,泛化能力变差 gamma是选择RBF函 ...

  4. 修改Linux Operating System的时间与时区

    修改Linux Operating System的时间与时区 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 有的小伙伴可能会遇到安装了linux系统后,尽管时区选择正确,也会发现系 ...

  5. CentOS Linux release 7.3源码安装zabbix

    CentOS Linux release 7.3安装zabbix 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 前言: 我去年用用centos6的环境搭建了一下 zabbix3.0 ...

  6. JavaEE学习总结(十六)— Servlet

    一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...

  7. 海明码 CRC冗余校验码

    海明码(也叫汉明码)具有一位纠错能力.本文以1010110这个二进制数为例解释海明码的编码和校验方法 确定校验码的位数x 设数据有n位,校验码有x位.则校验码一共有2x种取值方式.其中需要一种取值方式 ...

  8. VMware WorkStation9.0 安装centos-6.4

    1,设置虚拟机内存为8G时,启动报内存不足错误: Not enough physical memory is available to power on this virtual machine 解决 ...

  9. phpexcel 导出到xls文件的时候出现乱码解决

    在header() 前面加上ob_end_clean() 函数, 清除缓冲区, 这样就不会乱码了! <?php include 'global.php'; $ids = $_GET['ids'] ...

  10. intellj(idea) 编译项目时在warnings 页签框里 报 “xxx包不存在” 或 “找不到符号” 或 “未结束的字符串字面值” 或 “需要)” 或 “需要;”等错误提示

    如上图: 环境 是 刚换的系统,重装的Intellj,直接双击老的皇帝项目中的idea的 .iml文件,结果 打开 intellj 后,进行 ctrl +shift +F9 编译时 尽然报 错误提示, ...