« 2007电源损毁年! | Main | 《通天塔》 »

作弊条:如何用pf实现基于源地址的发出流量分网卡/网关路由

我想这可能是很多人比较关心的问题,特别是希望用一台机器,多块网卡,甚至有多个网关来实现伪双线的同学。

默认情况下FreeBSD系统中配置的网关,是不会自动使用多个网卡的。网关会与某一块网卡关联,并且,默认网关只能有一个。

但是,我们经常会遇到一些比较复杂的情况。例如,你有两块网卡,并且都接入了同一个网段,使用同一个网关,此时,所有的流量都会从一块网卡出去,另一块网卡则没有出流量;另一种比较极端的情况是,你有网通、电信各一个IP,但只有1台机器,而且机房也不给做BGP(当然,这是伪双线,我个人强烈建议不要使用这种机房服务),标准的路由方式就不太好用了。这时候,我们可以借助 FreeBSD 内建的 pf (通过route-to规则)来完成一些比较复杂的功能。

这个规则非常简单,只需要1行:

pass out quick route-to ( 网卡 网关IP ) from 网卡上的那个IP to any

这个规则的意思是,如果遇到网卡上的那个IP名义发出的数据,系统应通过pf指定下一跳路由:通过那块网卡,发送到指定的那个网关。

注意,绑定IP时,子网掩码需要正确设置,以涵盖网关所在的网络。

启动pf之后,就可以让两块网卡分别做自己身上绑定的IP的数据发送工作了。

警告:远程调试防火墙策略存在风险,您应根据实际情况选择合适的方式来规避此风险(定时重启,或派人蹲点)。

Comments (1)

rafan:

I usually use ipfw fwd for this purpose. :)

Post a comment

Advertise

About

This page contains a single entry from the blog posted on March 24, 2007 12:59 AM.

The previous post in this blog was 2007电源损毁年!.

The next post in this blog is 《通天塔》.

Many more can be found on the main index page or by looking through the archives.

Creative Commons License
This weblog is licensed under a Creative Commons License.
Powered by
Movable Type 4.01