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

itoedr的it学苑

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

 
 
 

日志

 
 

ubuntu下的网关技术(iproute2与netfilter/iptables)  

2014-04-30 13:14:34|  分类: ubuntu应用 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

ubuntu主机的路由网关功能:

          一个 Debian(ubuntu) 主机可以作为一个全能的网关,它可以承担网络地址转换(NAT,通常也称为 IP 伪装)、邮件传输、DHCP、DNS 缓存、HTTP 代理缓存、CVS 服务、NFS 服务和 Samba 服务。参阅 网络所需的主机名和 IP 地址, ubuntu参考手册之第 3.1.9 节中的例子来完成上述设置。

Netfilter设置

在 Linux 2.4 及其后继版本中加入了 netfilter/iptables 项目,作为一个防火墙子系统。参阅 Netfilter,那儿有许多有关其配置的讨论和解释。

netfilter 基础

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

ubuntu下的网关技术(iproute2与netfilter/iptables) - itoedr - itoedr的it学苑
 *********************************************************************************************
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][[UbuntuHelp:port-port]]
    • MASQUERADE 作用和 SNAT 一样,但面向使用动态IP请求建立的连接(拔号连接)。(仅适用于nat过滤表)
--to-ports port[-port]
    • DNAT 修改数据包目的地址,仅作用于 PREROUTING、OUTPUT 链路以及由它们调用的用户自定义链路。(仅适用于 nat 过滤表)
--to-destination ipaddr[-ipaddr][[UbuntuHelp: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[[UbuntuHelp:port]] \      # 如果 -p 是 tcp 或 udp,指定源的端口
-d destination-address[/mask] \
--dport port[[UbuntuHelp: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的保护机制。 参阅/usr/share/doc/ipmasq/examples/stronger/README。 对于在 Woody 中使用 Debian 的 kernel-image-2.4,请确认加载了相应的模块。 Sarge 里面的 ipmasq 已经修正了这个问题。相关配置指导请参阅 网络功能, 第 7.2.3 节。

对于使用 2.2 版内核镜像的 Debian,可按下面的方法编辑 /etc/masq/rules 中的 Z92timeouts.rul 文件,以保证可长时间连接远程站点(如发送大容量的 email,等):

# tcp, tcp-fin, udp
# 2hr, 10 sec, 160 sec - default
# 1 day, 10 min, 10 min - longer example
$IPCHAINS -M -S 86400 600 600

同样,如果是通过 PCMCIA NIC 访问网络,ipmasq 需要从 /etc/pcmcia/network.opts(阅读:/usr/share/doc/ipmasq/ipmasq.txt.gz)或 /etc/network/interfaces(阅读: 网络设置和 PCMCIA, 第 10.8.5 节和 启动(triggering)网络设置, 第 10.8 节) 启动。

重定向 SMTP 连接(2.4版内核)

假设你将一台笔记本电脑重新配置成可连入其它的 LAN 环境,而你不想再重新配置用户邮件代理,即:想直接用原来的配置收发邮件。

使用 iptables 命令向网关机器中加入下面的规则,就可以实现重定向与网关机器的 SMTP 连接。

# iptables -t nat -A PREROUTING -s 192.168.1.0/24 -j REDIRECT \
-p tcp --dport smtp --to-port 25 # smtp=25, INPUT is open

想使用更完备的重定向规则集,建议安装 ipmasq 软件包,并在 /etc/ipmasq/rules/ 目录中添加 M30redirect.def 文件。

管理多重网络联接

[修正我] 路由策略(by Phil Brutsche pbrutsch@tux.creighton.edu ): 详情参阅 iproute manual。Traffic control (tc) 也很有趣。

环境设置:

eth0: 192.168.1.2/24; gateway 192.168.1.1
eth1: 10.0.0.2/24; gateway 10.0.0.1
该机器没有 IP 伪装机制。

Special magic:

  • ip rule add from 192.168.1.2 lookup 1
  • ip rule add from 10.0.0.2 lookup 2
  • ip route add to default via 10.0.0.1 metric 0
  • ip route add to default via 192.168.1.1 metric 1
  • ip route add table 1 to 192.168.1.0/24 via eth0
  • ip route add table 1 to 10.0.0.2/24 via eth1
  • ip route add table 1 to default via 192.168.1.1
  • ip route add table 2 to 192.168.1.0/24 via eth0
  • ip route add table 2 to 10.0.0.2/24 via eth1
  • ip route add table 2 to default via 10.0.0.2
  评论这张
 
阅读(104)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

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

页脚

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