首页 > 代码库 > iptables笔记

iptables笔记

<style></style>

一、内核转发

 

*永久开启转发

sysctl -w net.ipv4.ip_forward=1

 

*查看当前

cat /proc/sys/net/ipv4/ip_forward

*

暂时开启

echo 1 > /proc/sys/net/ipv4/ip_forward

 

二、规则相关

 

技术分享

 

所谓规则是由 “匹配条件” + “执行动作” 组成,匹配条件主要是用于选择需要进行处理的数据包,

当一个数据包满足“匹配条件”时,linux会对该数据包“执行动作”。

常使用的表:nat、filter,顾名思义,nat表主要用于NAT;filter用于过滤数据包。

nat表中又包括了PREROUTING、OUTPUT、POSRTROUTING三个链,而filter表包括了INPUT、OUTPUT、FORWARD三个链。

 

<style></style>

1,查看规则

iptables -t nat -L [OUTPUT / POSTROUTING / PREROUTING[—line-number[-n]  #通过-t nat 指定为nat表

iptables           -L [INPUT / OUTPUT / FORWARDING[—line-number[-n]              #默认为filter表

 

2,删除规则 

iptables -t nat -D [OUTPUT / POSTROUTING / PREROUTING]  $number

iptables           -D [INPUT / OUTPUT / FORWARDING]              $number

 

3,添加规则

iptables -t nat -A [OUTPUT / POSTROUTING / PREROUTING] $规则

iptables           -A [INPUT / OUTPUT / FORWARDING]             $规则

 

4,更改默认策略

iptables -P INPUT DROP

 

 

 

<style></style>

-p 协议(protocol

  • 指定规则的协议,如tcp, udp, icmp等,可以使用all来指定所有协议。
  • 如果不指定-p参数,则默认是all值。这并不明智,请总是明确指定协议名称。
  • 可以使用协议名(如tcp),或者是协议值(比如6代表tcp)来指定协议。映射关系请查看/etc/protocols
  • 还可以使用–protocol参数代替-p参数

-s 源地址(source

  • 指定数据包的源地址
  • 参数可以使IP地址、网络地址、主机名
  • 例如:-s 192.168.1.101指定IP地址
  • 例如:-s 192.168.1.10/24指定网络地址
  • 如果不指定-s参数,就代表所有地址
  • 还可以使用–src或者–source

-d 目的地址(destination

  • 指定目的地址
  • 参数和-s相同
  • 还可以使用–dst或者–destination

-j 执行目标(jump to target

  • -j代表”jump to target
  • -j指定了当与规则(Rule)匹配时如何处理数据包
  • 可能的值是ACCEPT, DROP, QUEUE, RETURN
  • 还可以指定其他链(Chain)作为目标

-i 输入接口(input interface

  • -i代表输入接口(input interface)
  • -i指定了要处理来自哪个接口的数据包
  • 这些数据包即将进入INPUT, FORWARD, PREROUTE
  • 例如:-i eth0指定了要处理经由eth0进入的数据包
  • 如果不指定-i参数,那么将处理进入所有接口的数据包
  • 如果出现! -i eth0,那么将处理所有经由eth0以外的接口进入的数据包
  • 如果出现-i eth+,那么将处理所有经由eth开头的接口进入的数据包
  • 还可以使用–in-interface参数

-o 输出(out interface

  • -o代表”output interface
  • -o指定了数据包由哪个接口输出
  • 这些数据包即将进入FORWARD, OUTPUT, POSTROUTING
  • 如果不指定-o选项,那么系统上的所有接口都可以作为输出接口
  • 如果出现! -o eth0,那么将从eth0以外的接口输出
  • 如果出现-i eth+,那么将仅从eth开头的接口输出
  • 还可以使用–out-interface参数

 

+++++++++++++++++++++++++++++++++++++++++++++++++++

 

–-sport 源端口(source port)针对 -p tcp 或者 -p udp

  • 缺省情况下,将匹配所有端口
  • 可以指定端口号或者端口名称,例如”–sport 22″与”–sport ssh”。
  • /etc/services文件描述了上述映射关系。
  • 从性能上讲,使用端口号更好
  • 使用冒号可以匹配端口范围,如”–sport 22:100″
  • 还可以使用”–source-port

–-dport 目的端口(destination port)针对-p tcp 或者 -p udp

  • 参数和–sport类似
  • 还可以使用”–destination-port

-–tcp-flags TCP标志针对-p tcp

  • 可以指定由逗号分隔的多个参数
  • 有效值可以是:SYN, ACK, FIN, RST, URG, PSH
  • 可以使用ALL或者NONE

-–icmp-type ICMP类型针对-p icmp

  • –icmp-type 0 表示Echo Reply
  • –icmp-type 8 表示Echo

 

 

iptables笔记