FreeBSD内核级透明代理

发表于:2007-06-09来源:作者:点击数: 标签:
操作系统:FreeBSD 4.7 (带源码安装) 两块网卡: 1:3COM 2:DLINK 安装步骤: 代码: 一、编译内核 cd /usr/src/sys/i386/conf cp GENERIC proxy vi proxy 将一下四行加入 options IPFILTER options IPFILTER_LOG options RANDOM_IP_ID options BRIDGE conf
操作系统:FreeBSD 4.7 (带源码安装)
两块网卡:
1:3COM
2:DLINK


安装步骤:
代码:

一、编译内核
   cd  /usr/src/sys/i386/conf
     cp  GENERIC proxy
     vi   proxy

     将一下四行加入
   options IPFILTER
     options IPFILTER_LOG
     options RANDOM_IP_ID
     options BRIDGE

     config proxy
     cd ../../compile/proxy
     make depend
     make
     make install

二、配置
     vi /etc/rc.conf
     
     内容如下:
   gateway_enable="YES"
     hostname="soocol.com" # 设为你的hostname
     kern_securelevel_enable="NO"
     nfs_reserved_port_only="NO"
     sendmail_enable="NONE" # 用作nat/firewall, 不需要 sendmail
     sshd_enable="YES" #
     usbd_enable="NO"
     cron_enable="NO"
     .network_interfaces="rl0 rl1 lo0"
     ifconfig_rl0="202.102.121.67  netmask 255.255.255.0"
     ifconfig_rl1="inet 192.168.0.1 netmask 255.255.255.0"
     ifconfig_lo0="inet 127.0.0.1"

# 设置IPFILTER
     ipfilter_enable="YES"
     ipfilter_flags=""
     ipmon_enable="YES"
     ipmon_flags="-Dsvn"
     ipnat_enable="YES"

     vi   /etc/resolv.conf
     
     内容为:
   nameserver 211.167.97.67
     nameserver 202.99.96.68

三、设置IPNAT
     
     vi  /usr/local/etc/rc.d/ipnat.sh
     
     内容为:
   #!/bin/sh
     [ -x /sbin/ipnat ] && /sbin/ipnat -CF -f /etc/ipnat.rules && ipf=-y && echo -n 'ipnat'

     vi /etc/ipnat.rules
     
     内容为:
   map rl0 192.168.0.0/24 -> 0.0.0.0/32 proxy port ftp ftp/tcp
     map rl0 192.168.0.0/24 -> 0.0.0.0/32 portmap tcp/udp 10000:60000
     map rl0 192.168.0.0/24 -> 0.0.0.0/32


重新启动系统后局域网中的其他机器将网关设为192.168.0.1就可以上网了

操作系统:FreeBSD 4.7 (带源码安装)
两块网卡:
1:3COM
2:DLINK


安装步骤:

代码:

一、编译内核
   cd  /usr/src/sys/i386/conf
     cp  GENERIC proxy
     vi   proxy

     将一下四行加入
   options IPFILTER
     options IPFILTER_LOG
     options RANDOM_IP_ID
     options BRIDGE

     config proxy
     cd ../../compile/proxy
     make depend
     make
     make install

二、配置
     vi /etc/rc.conf
     
     内容如下:
   gateway_enable="YES"
     hostname="soocol.com" # 设为你的hostname
     kern_securelevel_enable="NO"
     nfs_reserved_port_only="NO"
     sendmail_enable="NONE" # 用作nat/firewall, 不需要 sendmail
     sshd_enable="YES" #
     usbd_enable="NO"
     cron_enable="NO"
     network_interfaces="rl0 rl1 lo0"
     ifconfig_rl0="202.102.121.67  netmask 255.255.255.0"
     ifconfig_rl1="inet 192.168.0.1 netmask 255.255.255.0"
     ifconfig_lo0="inet 127.0.0.1"

# 设置IPFILTER
     ipfilter_enable="YES"
     ipfilter_flags=""
     ipmon_enable="YES"
     ipmon_flags="-Dsvn"
     ipnat_enable="YES"

     vi   /etc/resolv.conf
     
     内容为:
   nameserver 211.167.97.67
     nameserver 202.99.96.68

三、设置IPNAT
     
     vi  /usr/local/etc/rc.d/ipnat.sh
     
     内容为:
   #!/bin/sh
     [ -x /sbin/ipnat ] && /sbin/ipnat -CF -f /etc/ipnat.rules && ipf=-y && echo -n 'ipnat'

     vi /etc/ipnat.rules
     
     内容为:
   map rl0 192.168.0.0/24 -> 0.0.0.0/32 proxy port ftp ftp/tcp
     map rl0 192.168.0.0/24 -> 0.0.0.0/32 portmap tcp/udp 10000:60000
     map rl0 192.168.0.0/24 -> 0.0.0.0/32


重新启动系统后局域网中的其他机器将网关设为192.168.0.1就可以上网了


可以加入端口重定向配合squid吗?


map规则是用于转换外出数据包的源地址,使得被转换后的地址好象是从外部地址中发起的。而另一个规则rdr 用于转换数据包中的目的地址,这样就能使得一个数据包被转发到某个特定计算机上进行处理,这可用于构建端口映射关系。

  rdr rl0 212.102.245.60 port 80 -> 192.168.0.1 port 80

  上面的规则将指定ipfilter在 rl0 网络接口上将发送给212.102.245.60,端口为80的数据包,转换为发送给内部地址192.168.0.1 。

  rdr的另一个重要用途是可以用以构建透明的代理服务器,普通代理服务器都需要在客户机上进行设置,如果不进行设置,客户机将直接访问 Internet上的计算机而不通过代理服务器,然而防火墙可以将这些应用请求转发给代理服务器,完成代理工作。此时对外界发送请求是在内部网络接口 rl0上发起的,因此也要在这里进行地址转换,而使用0.0.0.0/0 代表对所有目的地址,并且是80端口的浏览请求都转发到127.0.0.1上去,而127.0.0.1 必须运行代理服务器软件(例如:squid),以提供代理服务。

  rdr rl0 0 0.0.0.0/0 port 80 -> 127.0.0.1 port 80



ipnat -C
ipnat -f /etc/ipnat.conf
ipnat -l

原文转自:http://www.ltesting.net