FreeBSD代理服务器(proxy)的“改造”

为了能提供更丰富的网络服务功能,准备改造代理服务器。

原功能:提供squid的http请求服务,提供socks5的网络服务

改造后的功能:提供squid的http请求服务(不用改变客户端网络设置),利用freebsdipfilter模块提供网络包过滤和网络地址转换(根据需要开通某些客户端,但需重新设置客户端)

具体操作:

说明:vr0:外网网卡接口218.90.x.x;vr1:内网网卡接口192.168.1.254

1、编辑/etc/rc.local将启动socks5服务的一行去掉

2、重新编译内核

# cd /sys/i386/conf
# cp funpower funpower2 //funpower为现内核名
# ee funpower2 //用ee打开funpower2,新添加如下三行:

options IPFILTER
options IPFILTER_LOG
options IPFILTER_DEFAULT_BLOCK

接下来重新编译内核:

# /usr/sbin/config funpower2
# cd ../../compile/funpower2
# make depend
# make
# make install

如果没有error之类的错误句,说明你的内核已编译成功。
如果你是直接在机器前操作的,可以重启机器了,但如果你是利用telnet或者ssh连接到服务器进行以上操作的,请不要急着现在重启,

因为刚才在内核中加入的ipfilter默认是阻止一切连接,继续往下操作

3、编辑/etc/rc.conf

# ee /etc/rc.conf //用ee打开/etc/rc.conf,回入如下语句:

ipfilter_enable="YES"
ipfilter_rules="/etc/ipf.conf"
ipnat_enable="YES"
ipnat_rules="/etc/ipnat.conf"
gateway_enable="YES"

4、在/etc下创建ipf.conf和ipnat.conf

# ee ipnat.conf //利用ee创建ipnat.conf

rdr vr1 0.0.0.0/0 port 80 -> 192.168.1.254 port 3128
map vr0 192.168.1.0/24 -> 0/32 proxy port ftp ftp/tcp
map vr0 192.168.1.0/24 -> 0/32 portmap tcp/udp 10000:30000
map vr0 192.168.1.0/24 -> 0/32 portmap

# ee ipf.conf //利用ee创建ipf.conf,这个文件视你的网络情况而定

block in log quick all with short
block in log quick all with ipopts
block in log quick all with frag
block in log quick all with opt lssr
block in log quick all with opt ssrr

pass out on vr1 all
pass in on vr1 all
pass out quick on lo0 all
pass in quick on lo0 all

block out on vr0 all
pass out log on vr0 proto tcp/udp from 218.90.x.x to any keep state

pass out log on vr0 proto tcp/udp from 192.168.1.1 to any keep state
pass out log on vr0 proto tcp/udp from 192.168.1.2 to any keep state
pass out log on vr0 proto tcp/udp from 192.168.1.3 to any keep state

pass out log on vr0 proto icmp all keep state
pass out log on vr0 proto tcp/udp from any to any keep state
pass in quick on vr0 proto tcp from any to any port = ftp-data keep state
pass in quick on vr0 proto tcp from any port = ftp-data to any port>1023 keep state

注:ipf.conf和ipnat.conf推荐一篇文章.

5、重启机器,设置客户端

到这儿重启后对telnet和ssh就没影响了,因为在ipf.conf已经加入了内网网卡的通行规则。
客户端设置,对于原来的只需http上网的用户客户端无需修改网络设置,需要ipfilter的首先需在ipf.conf中加入规则表,然后网络设置

也要填上网关:192.168.1.254和DNS地址,才能使用。

以上是简要的改造过程,错误之处肯定有,欢迎转载,转载请保留原作者信息,作者:管建丰;交流: funpower(at)gmail.com

Leave a Reply