找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1876|回复: 2

FreeBSD下ADSL共享上网

[复制链接]
发表于 2009-5-5 15:42:25 | 显示全部楼层 |阅读模式
利用FreeBSD用户级的PPP做FreeBSD下的ADSL共享上网,可以使用较低的设备配置,实现局域网的稳定的网络链路共享。同时还可以增加Squid做上网的代理,进一步增加局域网上网的速度。利用FreeBSD用户级的PPP做FreeBSD下的ADSL共享上网,可以使用较低的设备配置,实现局域网的稳定的网络链路共享。同时还可以增加Squid做上网的代理,进一步增加局域网上网的速度。  

  FreeBSD可以对PPP提供两种不同方式的支持,一种是内核级PPP,它将PPP协议代码编译进内核,并运行一个PPP守护进程pppd,提供对PPP的支持,这是比较传统的方法,但配置比较困难。另一种为用户级PPP,使用一个应用程序PPP,通过通用tunnel设备传递PPP数据,配置较为容易。一般情况下可以使用用户级的PPP来建立拨号方式的Internet连接。 

  准备  

  安装基本的FreeBSD环境,具体可以参照《FreeBSD服务器指南》。必须安装操作系统源代码中的”sys”部分,下面需要重新编译内核以支持防火墙。然后还需要确认在/etc/ppp目录中是否存在ppp.conf 或者ppp.conf.sample文件。  

  实例  

  Dell gx110 PIII 128M 10G 3com905B-tx 10/100Mbps自适应PCI网络适配器。  

  安装设置  

  在 FreeBSD 下上网必须要有 tun 这个伪设备,所以必须在内核中加入对 tun 的支持。  

  在 tun 后面的 1 指定同时可以使用的 tun 设备的个数。  

  要让整个局域网上的用户都可以访问 Internet 您的机器必须有两张网卡,一个连接ADSL设备,一个连接局域网的HUB或者switch。另外必须重新编译一次内核。这些选项主要是在内核中加入对IP转发的支持。客户机将IP数据包发到FreeBSD,然后FreeBSD就将这些数据包转发到指定的地址。这就是让 FreeBSD 带动整个局域网上网的基本原理。 

  实例  

  在内核文件中添加如下内容:

  device tun 1 # 根据实践发现此行内容可以不加。  

  options IPFIREWALL # 打开防火墙选项  

  options IPFIREWALL_FORWARD  

  options IPFIREWALL_VERBOSE # 向系统的注册程序发送注册信息包  

  options IPFIREWALL_VERBOSE_LIMIT=100 # 限制一台机器注册的次数  

  options IPFIREWALL_DEFAULT_TO_ACCEPT # 使得缺省的规则允许所有形式的访问  

  options IPDIVERT # 启用由ipfw divert使用的转向IP套接字  

  # 这一选项需要与natd联合使用  

  要启用ipfw,必须设置IPFIREWALL选项,它将通知操作系统的内核检查每个IP数据包,将它们与规则集进行比较,通过添加IPFIREWALL_VERBOSE选项包括注册支持是一个好主意,还应该通过添加IPFIREWALL_VERBOSE_LIMIT选项来限制内核注册的数据包的数量配置  

  还需要设置etc/ppp/ppp.conf文件  

  实例

  /etc/ppp/ppp.conf

  default:

  set log Phase tun command #

  set ifaddr 10.0.0.1/0 10.0.0.2/0 #设置本地PPP连接的IP地址

  adsl : #配置代号

  set device PPPoE: xl1 # 用你的网卡设备名称替代xl1

  set authname #你的ADSL登陆名称

  set authkey #你的账号密码

  set dial

  set login

  add default HISADDR # 设置默认路由为对方的地址  

  enable dns #从拨号服务器中获得正确的DNS服务器地址 

  配置  

  最后,设置/etc/rc.conf文件打开gateway选项。

  实例  

  编辑/etc/rc.conf 文件  

  加入:

  gateway_enable="YES"  

  特别提示:如果要实际开机自动拨号,还要增加以下内容到 /etc/rc.conf 文件里!  

  ppp_enable="YES"  

  ppp_mode="ddial"  

  ppp_nat="YES"  

  ppp_profile="adsl" # 所要拨号的配置代号

  配置  

  在如上述配置完毕,网络访问会有问题,因为防火墙的默认配置是都不可访问。下面需要配置防火墙规则来允许访问,和禁止访问。 

  实例  

  首先用如下命令察看当前的防火墙配置:  

  /sbin/ipfw Ca show  

  然后执行以下的命令进行防火墙的设置:  

  /sbin/ipfw add 00400 divert natd ip from any to any via xl0 //用于启动Natd 服务  

  /sbin/ipfw add 00001 deny log ip from any to any ipopt rr   

  /sbin/ipfw add 00002 deny log ip from any to any ipopt ts  

  /sbin/ipfw add 00003 deny log ip from any to any ipopt ssrr  

  /sbin/ipfw add 00004 deny log ip from any to any ipopt lsrr  

  /sbin/ipfw add 00005 deny tcp from any to any in tcpflags syn,fin 

  /sbin/ipfw add 19997 check-state  

  /sbin/ipfw add 19998 allow tcp from any to any out keep-state setup  

  /sbin/ipfw add 19999 allow tcp from any to any out 

  /sbin/ipfw add 20001 allow udp from any 53 to me in recv xl0 //允许外网的DNS服务器的信息进入改服务器  

  /sbin/ipfw add 29999 allow udp from any to any out //允许自己的UDP包往外发,进行DNS信息查询 

  /sbin/ipfw add 30000 allow icmp from any to any icmptypes 3 

  /sbin/ipfw add 30001 allow icmp from any to any icmptypes 4  

  /sbin/ipfw add 30002 allow icmp from any to any icmptypes 8 out  

  /sbin/ipfw add 30003 allow icmp from any to any icmptypes 0 in   

  /sbin/ipfw add 30004 allow icmp from any to any icmptypes 11 in  

  /sbin/ipfw add 40000 allow all from 192.168.0.0/16 to any  

  /sbin/ipfw add 40001 allow all from any to 192.168.0.0/16 

  /sbin/ipfw flush //使防火墙规则生效  

  最后用/sbin/ipfw Ca show 察看修改后的防火墙设置:  

  00001 0 0 deny log logamount 100 ip from any to any ipopt rr  

  00002 0 0 deny log logamount 100 ip from any to any ipopt ts  

  00003 0 0 deny log logamount 100 ip from any to any ipopt ssrr  

  00004 0 0 deny log logamount 100 ip from any to any ipopt lsrr 

  00005 0 0 deny tcp from any to any in tcpflags fin,syn

  00100 516 68656 allow ip from any to any via lo0 

  00200 0 0 deny ip from any to 127.0.0.0/8  

  00300 0 0 deny ip from 127.0.0.0/8 to any  

  00400 0 0 divert 8668 ip from any to any via xl0  

  19997 0 0 check-state  

  19998 368990 279745596 allow tcp from any to any keep-state out setup  

  19999 872 154180 allow tcp from any to any out  

  20001 0 0 allow udp from any 53 to me in recv xl0  

  29999 3758 444913 allow udp from any to any out  

  30000 145 9690 allow icmp from any to any icmptype 3

  30001 0 0 allow icmp from any to any icmptype 4  

  30002 0 0 allow icmp from any to any out icmptype 8  

  30003 0 0 allow icmp from any to any in icmptype 0 

  30004 0 0 allow icmp from any to any in icmptype 11  

  40000 7572 714836 allow ip from 192.168.0.0/16 to any  

  65535 3213 496794 allow ip from any to any  
成功配置文档模板  

  rc.conf:  

  hostname="sample.com" 

  ifconfig_xl1="inet 192.168.9.6 netmask 255.255.255.0"  

  kern_securelevel_enable="NO"  

  nfs_reserved_port_only="NO"  

  firewall_enable="YES"  

  firewall_script="/etc/rc.firewall"  

  firewall_type="/etc/ipfw.conf"  

  firewall_quiet="YES"  

  firewall_logging_enable="YES" 

  sendmail_enable="NO"  

  sshd_enable="YES"  

  usbd_enable="NO"  

  gateway_enable="YES"  

  natd_interface="xl0"  

  natd_enable="YES"  

  natd_flags="-config /etc/natd.conf"  

  ppp_enable="YES" 

  ppp_mode="ddial"  

  ppp_nat="YES"  

  ppp_profile="adsl"

  /etc/ppp/ppp.conf: 

  default: 

  set log Phase tun command 

  set ifaddr 10.0.0.1/0 10.0.0.2/0  

  adsl:  

  set device PPPoE:xl0 

  set mru 1492

  set mtu 1492 

  set authname ad50103024  

  set authkey Sstc1602 

  set dial  

  set login  

  add default HISADDR
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|乐清九晨电脑维修 ( 浙ICP备14014299号|33038202002653号 )

浙公网安备 33038202002653号

GMT+8, 2025-5-10 20:41 , Processed in 0.062500 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表