zoukankan      html  css  js  c++  java
  • iptable防火墙原理

    iptable防火墙原理

    简介

    Linux 2.0 ipfs/firewalld
    Linux 2.2 ipchain/firewall
    Linux 2.4 iptables/netfilter (iptables 是在用户空间写规则的,neifilter工作在内核空间放置规则的位置)
    netfilter是内核的一个数据包处理模块,具有如下功能:
    网络地址转换
    数据包内容修改
    数据包过滤的防火墙功能

    表和钩子函数

    五个钩子函数:input output,forward,pre_routing,post_routing
    表:
    Mangle表:对数据进行修改,包含5条链
    Raw表:,prerouting,output
    Filter表:过滤 input,output,forward
    Nat表:prerouting,postouting
    目标地址转换是发生在路由决策前,刚进入本机的时候,源地址转换是在出去的时候。

    防火墙处理数据包的方式
    ACCEPT,DROP,REJECT,SNAT,DNAT

    数据包路由的原理

    网络数据包由底层数据包的网卡接收,通过数据链路层的捷报之后(去除数据链路层帧头),就进入了TCP/IP协议栈(本质上就是一个处理网络数据包的内核驱动)和netfilter混合的数据包的处理流程中了。
    总结一下规律:
    1)当一个数据包进入网卡的时候,数据包首先进入PREROUTING链,在PREROUTING链中我们有机会修改数据包的目的IP,然后内核的路由模块根据数据包的目的IP判断是否需要转出去
    2)如果数据包就是进入本机的,数据包就会沿着图向下移动,到达INPUT链,数据包到达INPUT链后。任何进程都会收到它
    3)本机上运行的程序发送数据包经过OUTPUT链,然后经过POSTROUTING链输出
    4)如果数据包是要转发出去的,且内核允许转发,数据包就会香油移动,经过FORWARD链,然后到达POSTROUTING链输出。

    iptable编写规则

    -F 清除规则
    -X 清除链
    -t filter 指定表
    -p tcp/udp
    -j DROP/REJECT/ACCEPT/
    -s源地址
    -d 目的地址
    -i eth0 从网络接口eth0进来
    -o eth0 从网络接口eth0出去
    --sport 源端口
    --dportz 目的端口

  • 相关阅读:
    Shell脚本中$0、$#、$@等的意义
    shell脚本中常见的一些特殊符号和作用详解
    shell脚本中的反引号,单引号,双引号与反斜杠
    Shell中反引号(`)与$()用法的区别
    自己在linux上编译、链接、动态库和静态库的学习笔记
    让ie6 7 8 9支持原生html5 websocket
    解决浏览器不兼容websocket
    WebSocket兼容到低版本浏览器
    UART和RS232/RS485的关系,RS232与RS485编程
    TTL和RS232之间的详细对比
  • 原文地址:https://www.cnblogs.com/hanfei-1005/p/5695399.html
Copyright © 2011-2022 走看看