flyonok

统计

留言簿(8)

ACE

book

boost

bsd

c study

c++

code download

codeblock

computer clound

Eclipse

embed system

erlang

ET++

gtk

ic card

java

KDE

libevent

linux

linux--MM

mysql

network education

one card

oracle

pcap relation

php

powerbuilder

python

QT

software config

software test

SQL server

UML

wireless

wxwidgets

陈宾

阅读排行榜

评论排行榜

Netfilter

netfilter 基础

Netfilter 内建了 5 条链路来处理数据包,它们分别是:PREROUTING、INPUT、FORWARD、OUTPUT和POSTROUTING:

                     routing
decision
IN ------> PRE ---> ------> FORWARD -----> ----> POST -----> OUT
interface  ROUTING  \       filter       /       ROUTING     interface
DNAT     |       tracking     ^       SNAT
REDIRECT |                    |       MASQUERADE
v                    |
INPUT                OUTPUT
| filter             ^ filter,DNAT
v                    |
\--> Local Process --/
user-space programs

过滤表(Netfilter table)

数据包在每条内建的链路中传输时按如下过滤表中的规则进行处理。

  • filter(数据包过滤器,链路中默认的过滤器)

    • INPUT(作用于进入本机的数据包)

    • FORWARD(作用于路由到本机的数据包)

    • OUTPUT(作用于本地产生的数据包)

  • nat(网络地址转换)

    • PREROUTING(作用于刚进入的待转换数据包)

    • OUTPUT(作用于在路由之前待转换的本地产生的数据包)

    • POSTROUTING(作用于待发出的已转换的数据包)

  • mangle (network address mangling,适合于 2.4.18 之后的内核)

    • 适用于所有 5 条链路。

过滤目标(Netfilter target)

防火墙规则有许多目标:

  • 4 个基本目标:

    • ACCEPT 允许数据包通过。

    • DROP 阻拦数据包。

    • QUEUE 允许数据包进入用户空间(userspace)(如果内核支持的话)。

    • RETURN 表示停止读取该链路并回到前一个(呼叫的)链路的下一条规则。

  • 扩展目标:

    • LOG 打开内核日志。

    • REJECT 回送错误数据包并阻拦该数据包。

    • SNAT 修改数据包源地址,仅作用于 POSTROUTING 链路。(仅适用于 nat 过滤表)

           --to-source ipaddr[-ipaddr][:port-port]
              
    • MASQUERADE 作用和 SNAT 一样,但面向使用动态IP请求建立的连接(拔号连接)。(仅适用于nat过滤表)

           --to-ports port[-port]
              
    • DNAT 修改数据包目的地址,仅作用于 PREROUTING、OUTPUT 链路以及由它们调用的用户自定义链路。(仅适用于 nat 过滤表)

           --to-destination ipaddr[-ipaddr][:port-port]
              
    • REDIRECT 修改数据包目标地址使其发送给本机。

           --to-ports port[-port]

Netfilter 命令

iptables 的基本命令有:

     iptables -N chain                   # 创建一个链路
iptables -A chain \                 # 添加链路的规则
-t table \                 # 使用过滤表(filter, nat, mangle)
-p protocol \              # tcp、udp、icmp或所有,
-s source-address[/mask] \
--sport port[:port] \      # 如果 -p 是 tcp 或 udp,指定源的端口
-d destination-address[/mask] \
--dport port[:port] \      # 如果 -p 是 tcp 或 udp,指定目的地端口         -j target \                # 如果匹配作何处理
-i in-interface-name \     # 针对 INPUT、FORWARD、PREROUTING
-o out-interface-name      # 针对 FORWARD、OUTPUT、POSTROUTING

网络地址转换

LAN 中的机器可以通过能把 LAN 地址转换为可用的 Internet 上的 IP 地址的网关来访问 Internet 的资源。

     # apt-get install ipmasq

执行样例规则来加强ipmasq的保护机制


posted on 2011-03-28 14:01 flyonok 阅读(481) 评论(0)  编辑 收藏 引用 所属分类: linux


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理