10.15 iptables filter表小案例

  • iptables语法总结
    1 . -F 规则
    2 . -nvL 查看规则
    3 . -Z 计数器清零
    4 . iptables -t //指定表,不加-t 默认是 filter表
    5 . service iptables save 保存规则 路径/etc/sysconfig/iptables(重启后会调用里面的规则)
    6 . iptables 中 -I(大写i)与-A的区别在于-A是把规则放在最后面,-I是把规则放在最前面,谁在前面谁优先被匹配、加载
    7 . -A -I -D 后面紧跟的是链的名字→
    (1)-INPUT :通过路由表后目的地为本机
    (2)-OUTPUT:由本机产生,向外转发
    (3)-PREROUTING:数据包进入路由表之前
    (4)-FORWARDING:通过路由表后,目的地不为本机(filter表中使用不到它)
    (5)-POSTROUTING:发送到网卡接口前
    8 . -s 指定源IP
    9 . -p 指定为何种协议
    10 . –sport 指定源端口
    11 . -d 指定目标IP
    12 . –dport 指定目标端口
    13 .-j 后面跟行为动作 (ACCEPT为允许包、DROP为丢弃包、REJETC为拒绝包)
    ——比如
    iptables -A INPUT -s 192.168.253.132 -p tcp --sport 1234 -d 192.168.253.142 --dport 80 -j DROP

14 . 列出规则的编号,根据编号方便删除规则

iptables -nvL --line-numbers

15 . -P 用来指定链的默策略(最好不要直接操作,很有可能会导致远程终端断开)
例:iptables -P INPUT DROP

  • iptables小案例
    例 :需求把80 端口、22与21端口放行,其中22端口需要指定IP段(只有该IP段的IP,访问时才能访问到。其他段的IP 一概拒绝)。以上操作需要脚本来实现。
    (1)vi /usr/local/sbin/iptables //加入以下内容
  • iptables与DNS的关系 iptables -a和-i_iptables与DNS的关系

  • 解释说明:
    ipt定义了变量(在以后写脚本时,应当使用绝对路径)
    $ipt -F 没有指定的话 操作对象是filter表
    将默认策略定义
$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT

接着加一些规则出来

m state –state RELATED,ESTABLISHED 指定状态 ,加上这一段是为了更顺利的让80,22,21端口的数据包连接。

  • 执行脚本sh 加vi的那个文件,之后查看规则是否生效
  • iptables与DNS的关系 iptables -a和-i_内网_02

  • 如没有指定源IP,那么所有的IP都能访问到。
    -icmp示例
    操作之前需要恢复到默认规则
  • iptables与DNS的关系 iptables -a和-i_IP_03

iptables -I INPUT -p icmp --icmp-type 8 -j DROP 这条规则会让你能ping通外网,不能ping通本机

iptables与DNS的关系 iptables -a和-i_iptables与DNS的关系_04


10.16 -10.17-10.18 iptables nat表应用(上、中、下)

  • nat表应用
  • 需求:有A机器与B机器,其中A机器有2块网卡,一个外网网卡ens33(192.168.253.139)和一个内网网卡ens37(192.168.200.1),而B机器只有一块内网网卡ens37(192.168.200.100) ,和A机器ens37可以通信互联
  • 最终想要的结果是B机器连接外网
  • 步骤如下
    1.A机器添加内网卡
  • iptables与DNS的关系 iptables -a和-i_IP_05

iptables与DNS的关系 iptables -a和-i_iptables与DNS的关系_06

LAN区段就相当于将外网网卡连到了一个内网的交换机上,Windows机器是连不上的,A机器与B机器连接到同一内网交换机上,就可以A与B机器通信。(需要添加区段)

  • B机器选择到LAN区段
  • iptables与DNS的关系 iptables -a和-i_外网_07

  • A机器ens37网卡设置IP (手动添加,重启后不生效)
  • iptables与DNS的关系 iptables -a和-i_IP_08

  • B机器设置ens37ip
  • iptables与DNS的关系 iptables -a和-i_iptables与DNS的关系_09

  • 再看下是否能ping通A机器的ens37网卡
  • iptables与DNS的关系 iptables -a和-i_IP_10

  • 这里是存在问题的
  • 检查B机器与A机器的网卡连接情况(ping自己的IP)
  • iptables与DNS的关系 iptables -a和-i_外网_11

iptables与DNS的关系 iptables -a和-i_iptables与DNS的关系_12

  • A机器能Ping通自己的ens37 网卡和B机器的ens37网卡
  • iptables与DNS的关系 iptables -a和-i_iptables与DNS的关系_13

  • B机器也能ping通自己的ens37与A机器的ens37网卡
  • iptables与DNS的关系 iptables -a和-i_iptables与DNS的关系_14


  • B机器现在不能ping通A机器的ens33网卡,也不能ping 外网 ,只能ping通A机器的ens37网卡
  • iptables与DNS的关系 iptables -a和-i_IP_15

  • A机器能ping通外网和自己,也能与B机器的ens37网卡
  • iptables与DNS的关系 iptables -a和-i_IP_16

  • Windows中Cmd是不能ping通A机器与B机器的ens37网卡的
  • iptables与DNS的关系 iptables -a和-i_iptables与DNS的关系_17

  • 在A机器上打开路由转发 (cat /proc/sys/net/ipv4/ip_forward 查看是否开启 ,0表示未开启 ,1表示开启
    echo “1” >/proc/sys/net/ipv4/ip_forward
  • iptables与DNS的关系 iptables -a和-i_IP_18

  • 在A机器上增加一条规则 再查看
    iptables -t nat -A POSTROUTING -s 192.168.200.1/24 -o ens33 -j MASQUERADE
    “`
  • iptables与DNS的关系 iptables -a和-i_内网_19

该规则的目的就是想让200.0这个网段可以上网

  • B机器上设置网关为192.168.200.1
    先用route -n 查看网关Gateway
    再使用route add default gw来设置网关
  • iptables与DNS的关系 iptables -a和-i_iptables与DNS的关系_20

  • 设置DNS
    vi 打开/etc/resolv.conf
    里面增加内容:
    nameserver 119.29.29.29

再ping下这个公网,还是不能成功,那也就不能连外网。


需求: C机器只能和A通信,让C机器可以直接连通B机器的22端口

1.在A机器上打开路由转发echo “1”> /proc/sys/net/ipv4/ip_forward

2 . 在A机器上执行iptables -t nat -A PREROUTING -d 192.168.253.139 -p tcp --dport 1122 -j DNAT --to 192.168.200.100:22

3 . A机器上执行iptables -t nat POSTROUTING -s 192.168.200.100 -j SNAT --to 192.168.253.139

4 .B机器上设置网关为192.168.200.1