zoukankan      html  css  js  c++  java
  • iptables

    iptables:

    定义:命令行工具,用来和内核的netfilter模块通信;

    作用:用来管理网络,做一个流量转发;

    DNAT:目标地址映射

    应用场景:内网做对外服务器;

    电脑(外部用户):10.10.10.10(src)

    公网服务器:22.22.22.22(dst)

    此时,一条TCP(src - >dst:80);

    内网服务器:均摊请求流量

    192.168.1.1:

    192.168.1.2

    源端口随机分配,外部的人想请求内部的服务;

    公网服务器两张网卡,对内,对外

    公网网卡PPPOE拨号上网22.22.22.22   内网网卡:交换机(基于MAC地址的转发,来自于公网服务器网线+内网服务器网线,共属于一个lan)

    ARP广播:谁的IP是192.168.1.1  请告诉我你的MAC地址  局域网通讯的原理

    公网服务器(路由器):22.22.22.22  内网服务器:192.168.1.1   192.168.1.2  (由路由器分配,接入交换机,DHCP获取IP地址)

    ps aux | grep dhcp

    arp -a  (类似于吆喝一声,告诉我你们的MAC地址)

    内网电脑如何上网:只能通过路由器

    百度网站:10.10.10.10(dst)

    内网服务器:192.168.1.2(src)

    网关:Linux路由表  route -n

     目标地址与掩码&之后的IP是否是Destnation,从Iface网卡送出去UG表示网关,gateway

    src_mac:自己的MAC  

    dst_mac:网关的MAC(ARP广播所得);

    数据包会被192.168.100.1收到;

    路由器角度:

    MAC地址的确是路由器,但是目标IP地址不是我,

    linux内核:首先MAC地址必须是我,否则和我没关,但是目标IP不是我,Linux内核会查看自己的路由表,即路由器查看自己的路由表

    路由器默认网关:运营商节点;数据一定可以送到百度;dst_mac变成了运营商的网络节点

    路由规则:192.168.2.X  lan0  (192.168.2.110)

    路由器发到公网前:源地址改写 22.22.22.22  目标地址保持不变10.10.10.10(地址转化SNAT源地址映射)

    数据回来:

    从百度角度来看:

    数据包来源IP:(192.168.1.2)    22.22.22.22  目标IP确实是我

    百度回包:

    src_ip:101.10.10.10   dst_ip:192.168.2.2(回程丢包)   22.22.22.22(路由器收到报文了) 

    路由器:的确是我,但这个包我没用啊,路由器能找到当初的转换关系,将包还原,源地址保持不变,目标地址改成当初的192.168.1.2   扔包到lan上

    内网服务器视角:源ip:10.10.10.10    目标地址:192.168.1.2

    各司其职

    iptables规则:

    开关:cat proc/sys/net/ipv4/ip_forward

     客户端  ->   (目标MAC地址改写) -路由器  --> (查询路由表,把流量送给了公网)   -->百度

    路由器行为:1、mac  是不是我   2、ip是不是我(如果不是,默认丢弃) 

    iptables -t nat -nvl查看规则

    例子1:目标地址改写

    访问本机IP地址端口     修改为访问另一台设备IP地址端口

    本机:(原始请求目标)192.168.2.101  55            另外一台():192.168.2.100  53

    iptables -t nat -A (append)  OUTPUT(链,内核的钩子) -p(协议,匹配)tcp -d 192.168.2.101  --dport 55  -j(行为,动作) DNAT --to-destination  192.168.2.100:53

    DNAT:在回复报文的时候不需要再次加入iptables规则,只执行一次即可

    删除iptables规则:iptabes -t nat -D  OUTPUT 1

    dig @114.114.114.114  baidu.com(备注:解析域名)

    例子2:丢掉发往114.114.114.114的包

    iptables  -t filter -A OUTPUT -p udp -d 114.114.114.114  -j DROP 

    网桥:linux  bridge   虚拟交换机

    cat proc/net/nf_conntrack内核跟踪连接装态,内核对每一条TCP连接都有记录

    iptables  -t  nat  -nvL (n:用数字表示  v:详情  L:list)

  • 相关阅读:
    java环境配置
    关于Chrome(谷歌浏览器)对docume,准确获取网页客户区的宽高、滚动条宽高、滚动条Left和Top
    CSS3圆角详解
    Js监控回车事件
    Sql日期时间格式转换
    JS操作JSON总结
    SQL日期操作及只获取日期的方法
    如何让div出现滚动条
    CodeForces 55D Beautiful numbers
    POJ 3034 Whac-a-Mole
  • 原文地址:https://www.cnblogs.com/anitaguangzi/p/13401395.html
Copyright © 2011-2022 走看看