注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

itoedr的it学苑

记录从IT文盲学到专家的历程

 
 
 

日志

 
 

iptable官方扩展功能说明书  

2013-09-07 21:39:06|  分类: 防火墙 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
iptables-extensions
Section: iptables 1.4.18 (8)
Updated: Index
  Index
NAME

SYNOPSIS

MATCH EXTENSIONS
addrtype

ah (IPv6-specific)

ah (IPv4-specific)

cluster

comment

connbytes

connlimit

connmark

conntrack

cpu

dccp

devgroup

dscp

dst (IPv6-specific)

ecn

esp

eui64 (IPv6-specific)

frag (IPv6-specific)

hashlimit

hbh (IPv6-specific)

helper

hl (IPv6-specific)

icmp (IPv4-specific)

icmp6 (IPv6-specific)

iprange

ipv6header (IPv6-specific)

#ipvs

length

limit

mac

mark

mh (IPv6-specific)

#multiport

nfacct

osf

owner

#physdev

pkttype

policy

quota

#rateest

realm (IPv4-specific)

recent

rpfilter

rt (IPv6-specific)

sctp

set

socket

state

statistic

string

tcp

tcpmss

time

tos

ttl (IPv4-specific)

u32

udp

unclean (IPv4-specific)

TARGET EXTENSIONS
AUDIT

CHECKSUM

CLASSIFY

CLUSTERIP (IPv4-specific)

CONNMARK

CONNSECMARK

CT

DNAT

DSCP

ECN (IPv4-specific)

HL (IPv6-specific)

HMARK

IDLETIMER

LED

LOG (IPv6-specific)

LOG (IPv4-specific)

MARK

MASQUERADE (IPv6-specific)

MASQUERADE (IPv4-specific)

MIRROR (IPv4-specific)

NETMAP

NFLOG

NFQUEUE

NOTRACK

#RATEEST

REDIRECT

REJECT (IPv6-specific)

REJECT (IPv4-specific)

SAME (IPv4-specific)

SECMARK

SET

SNAT

TCPMSS

TCPOPTSTRIP

TEE

TOS

#TPROXY

TRACE

TTL (IPv4-specific)

ULOG (IPv4-specific)


 

iptablesnetfilter(网络过滤器) 是一个用户态的防火墙应 用软件,允许系统管理员可以调整设定X(Xtables)提供相关的系统表格(目前主要是在 iptables/netfilter 底下)以及相关的“链”与“规则”来管理网络封包的流动与转送的动作。因为相关动作上的需要,所以 iptables 的操作需要用到系统管理员的权限,不然就无法运作下去。在大部份的 Linux 系统上面, iptables 是使用/usr/sbin/iptables 来操作,文件则放置在手册页(Man page)(参考: [1])底下,也可以透过 man iptables 的方式来取得这份文件。通常 iptables 都需要核心层级(kernel)的模组来配合运作,Xtables 是主要在核心层级里面 iptables API 运作功能的模组。

目前 iptables 系在 2.4 2.6 的核心底下运作,旧版的 Linux 核心 (2.2) 使用 ipchains ipwadm (linux 2.0) 来达成类似的功能。

操作摘要

iptables ip6_tables arp_tables 一同都是建构在 Xtables 的架构下,这个方案让系统管理员定义“表(tables)”、“链(chain)”、“规则(rules)”三个资料来处理封包的运送。每一个“表”都和 不同的封包处理有关、决定封包是否可以穿越的是“链”、而一条“规则”在键里面则可以决定是否送往下一条链(或其它的动作),这个处理可以在巢状的结构里 面重复使用。每一个网络封包从抵达到离开该电脑至少会经过一个链(亦即转送或本机路由)。

一开始,是由封包的来源决定它应该穿过哪一个链。iptables 的架构预先在过滤器(filter)里头定义了三个键: INPUT(输入)、 OUTPUT(输出)、跟 FORWARD(转发)。预先定义的链也同样会具有一个默认的 "policy"(政策)像是 DROP ,让封包在历经规则到最后仍没有符合的项目时,可以使用这个 "policy" 来进行操作。系统管理员可以视需要新增其它的链。这些链没有默认的政策可以处理。如果一个封包到了这些链的最后仍然没有符合的项目,就会回到前一个呼叫它 的链。另外,一个链里头也可以是空白的。

每条在链的规则都包含了符合的封包相关资料。它也会包含 "target" 的资料。当一个封包穿过一个链,每个规则会依序检查它。如果没有规则与封包不相符,则这个封包会被传到下一个规则计算,如果与规则相处的话,就会开始运行 规则里头由 target 制定的动作,这个动作会决定这个封包要不要在这个链里头继续运作。

封包穿过链的同时会因为:

  1. 有规则与封包参数相处,因而决定这个封包的处理方式,像是 "ACCEPT"(接受)或是 "DROP"(丢弃)。

  2. 有规则呼叫 RETURN target ,则会回归到上一层呼叫的链里头。

  3. 没有规则与之相处,则会到达这个链的最底层。(视有无默认政策来决定是否采用默认政策或回归上一层呼叫的链)

范例

下面的例子是一个已经都设定好了防火墙的工作站。 根目录(root)使用者可以用 " iptables -L" 这个指令来显示防火墙上的配置。(完整的配置可以使用 iptables-save -c 显示出来,如果有问题的话也可以使用这个指令来追查。)

# iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  localhost.localdomain  localhost.localdomain 
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
REJECT     all  --  anywhere             anywhere            

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

RELATED(关连), ESTABLISHED(建立)的规则使用线上状态以致大多数客服端程式(比如:网页浏览器,ssh...)能够运作。

$ w3m http://en.wikipedia.org/wiki/Main_Page

(打开维基英文主页)

电脑不需要回应ping且没有服务被提供。连接要求呈拒绝(REJECT)或则过时(配合DROP使用)之状态、在于埠都被扫描到时。

$  ping -c 1 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
--- 62.78.243.6 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

尝试连接到HTTP(TCP 80)

$ telnet 10.0.0.1 80
Trying 10.0.0.1...
telnet: connect to address 10.0.0.1: Connection refused

转向范例

底下简单示范如果把默认 HTTP 埠的封包由 80 转向 8080 埠。如此一来,则 HTTP daemon 可以允许由一般使用启动,而不需要烦恼一般使用者无法将埠号绑在 1024 埠以下的限制。

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

注意:如果你在你的电脑上面运行了这个指令,它只会对连到你的机器上的外部的 IP 位置发生效果。从本地端上来的连线将无法在 nat 表格上的 PREROUTING 链上面发生效果。如果你想要让本地端也可以发生效果,你可以另外键入下面的规则:

iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8080

这条规则会将 lo 接口上的封包输出由 80 埠转向到 8080 埠上面。

  评论这张
 
阅读(208)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017