系统准备:一个运转正常的Linux(这个大家都有)
硬件要求:至少一块网卡,宽带设备已经申请完毕,同时已经开通
广州电信的ADS(LAN)L使用的是PPPOE拨号方式,因此,要在Linux下使用ADSL,必须安装PPPOE客户端软件。
下面说明如何进行安装:本人以RedHatLinux7.3为平台,其它平台Linux的安装办法可以参照下面安装的步骤。
一、安装的前提条件1.确保安装了网卡并工作正常使用命令#ifconfigeth0查看网卡状态2.在系统中不要设置默认路由(网关),让ADSL拨号后自动获得如果已经设置了默认路由,使用以下方法删除:在文件/etc/sysconfig/network中删除GATEWAY=这一行,然后以root执行:#/etc/rc.d/init.d/networkrestart3.已经安装了pppd软件包如果存在文件/usr/sbin/pppd,则说明已经安装了pppd;如未安装,从RedHatLinux安装光盘上装ppp-2.3.11-4.i386.rpm(版本可能不一样)这个软件包二、安装PPPOE客户端软件Linux下的PPPOE客户端软件比较多,而且大多使用GNULicense,推荐使用rp-pppoe这个软件包,
从http://www.roaringpenguin.com/pppoe/这个网站上,不仅可以下栽RedHat平台下的rp-pppoe的二进制软件包,而且可以下栽源代码软件包。
1.二进制软件包的安装:A.下栽二进制软件包http://www.roaringpenguin.com/pppoe/rp-pppoe-3.5-1.i386.rpmB.进行安装以root执行:#rpm-Uvhrp-pppoe-3.5-1.i386.rpm2.从源代码进行安装:从源代码进行安装同样适用于其它平台的Linux,但必须在Linux系统中安装gcc编译器。
A.下栽源代码软件包http://www.roaringpenguin.com/pppoe/rp-pppoe-3.5.tar.gzB.解压缩#tarxvfzrp-pppoe-3.5.tar.gz#cdrp-pppoe-3.5C.进行编译和安装运行脚本#./go将自动进行编译和安装,最后,自动调用/usr/sbin/adsl-setup进行配置,具体解释见三。
三、配置PPPOE客户端软件安装完软件包后,必须配置pppoe的配置文件/etc/ppp/pppoe.conf,从而让ADSL拨号时使用配置文件中的用户名、密码等参数。我们不必手工改动这个文件,可以使用adsl-setup这个工具进行配置:#/usr/sbin/adsl-setup当出现
>>>EnteryourPPPoEusername:
输入ADSL帐号的用户名当出现
>>>EntertheEthernetinterfaceconnectedtotheADSLmodem
ForSolaris,thisislikelytobesomethinglike/dev/hme0.ForLinux,itwillbeethn,wherenisanumber.(defaulteth0):输入eth0,这是ADSL相连的网卡的名字当出现
>>>Enterthedemandvalue(defaultno):
输入no当出现
>>>EntertheDNSinformationhere:
输入server,这表示使用ADSL拨号自动获得的DNS服务器IP地址当出现
>>>PleaseenteryourPPPoEpassword:
输入ADSL帐号的密码当出现
>>>Chooseatypeoffirewall(0-2):
输入0,不使用防火墙当出现
>>>Acceptthesesettingsandadjustconfigurationfiles(y/n)?
如果输入的信息正ā确,输入y,完成配置,否则,输入n重新输入。
四、启动PPPOE客户端软件使用命令/usr/sbin/adsl-start启动PPPOE客户端软件,进行连接,如果成功,将出现Connected;如果不成功,请检查网线、ADSLMODEM等物理设备,并查看/var/log/messages中的信息/usr/sbin/adsl-stop关闭和ISP的连接/usr/sbin/adsl-status查看当前连接的状态如果想在Linux系统启动时自动启动ADSL连接,输入以下命令#chkconfig–addadsl将在当前的运行级下加入ADSL的自启动脚本五、测试当连接成功后,使用命令#ifconfig-a在输出中应含有关于ppp0的信息,其中还绑定了IP地址,说明已经从拨号中获得了IP地址。
使用命令#netstat-nr查看路由表信息,这时的默认路由应该是上面获得的IP地址。
如果没有默认路由,我们可以手动增加:#routeadddefaultgw上面获得的IP地址使用命令#nslookupwww.sina.com.cn如果解析出新浪的IP,说明已经从拨号中正确获得了DNS服务器最后,使用命令ping某个域名或IP,如果有响应,表示你已经大功告成了。
注:好像在进行配置的过程中,会提示你是否在启动时加载ADSL,选yes,这样就会省的登录后再start了。
五、使用双网卡带动公司网、家庭网络上网
硬件要求:同上双网卡
NAT方式:接内部网络的网卡设置IP为私有地址(192.168.0.0/24、172.16.0.0/16、10.0.0.0/8),
例如192.168.100.123/24.不要设置默认路由(网关),DNS设置为广州地区(61.144.56.100),其它
地区的相应改动为本地区的DNS.在/etc/rc.d/目录下用touch命令建立firewall文件,执行chmodu+xfirewall以改变文件属性,编辑/etc/rc.d/rc.local文件,在末尾加上/etc/rc.d/firewall以确保开机时能自动运行该脚本。
firewall内容为:#!/bin/shechoEnableIPForwarding
echo1″>/proc/sys/net/ipv4/ip_forwardechoStartingiptablesrules
/sbin/modprobeiptable_filter/sbin/modprobeip_tables/sbin/modprobeiptable_nat#Refreshallchains/sbin/iptables-F-tnatiptables-tnat-APOSTROUTING-s192.168.0.0/24-oppp0-jMMASQUERADE客户端设置(windows98/2000/xp、linux)网关设置为这台linux地址(192.168.100.123),DNS设置为61.144.56.100.
透明代理配置代理软件squid:
编辑/usr/local/squid/etc/squid.conf,修改以下内容,确保以下配置:
http_port192.168.100.123:8080
cache_mem48MBaclallsrc0.0.0.0/0.0.0.0aclmanagerprotocache_objectacllocalhostsrc127.0.0.1/255.255.255.255aclSSL_portsport443563aclSafe_portsport80#httpaclSafe_portsport21#ftpaclSafe_portsport443563#https,snewsaclSafe_portsport70#gopheraclSafe_portsport210#waisaclSafe_portsport1025-65535#unregisteredportsaclSafe_portsport280#http-mgmtaclSafe_portsport488#gss-httpaclSafe_portsport591#filemakāeraclSafe_portsport777#multilinghttpaclCONNECTmethodCONNECTaclflagsrc192.168.100.0/255.255.255.0
httpd_accel_hostvirtualhttpd_accel_port80httpd_accel_with_proxyonhttpd_accel_uses_host_headeroncache_effective_usernobodycache_effective_groupnobodyhttp_accessallowflag
http_accessdenyall
(限制只允许局域网用户使用代理,具体可以参考squid手册中关于AccessControlLists的内容来限制访问代理)
cache_dirufs/var/spool/squid10016256
cache_dirtypeDirectory-NameMbytesLevel-1Level2
(说明:指定squid用来存储对象的交换空间的大小及其目录结构。可以用多个cache_dir命令来定义多个这样的交换空间,并且这些交换空间可以分布不同的磁盘分区。directory指明了该交换空间的顶级目录。如果你想用整个磁盘来作为交换空间,那么你可以将该目录作为装载点将整个磁盘mount上去。缺省值为/var/spool/squid.Mbytes定义了可用的空间总量。需要注意的是,squid进程必须拥有对该目录的读写权力。Level-1″是可以在该顶级目录下建立的第一级子目录的数目,缺省值为16.同理,Level-2″是可以建立的第二级子目录的数目,缺省值为256.为什么要定义这么多子目录呢?这是因为如果子目录太少,则存储在一个子目录下的文件数目将大大增加,这也会导致系统寻找某一个文件的时间大大增加,从而使系统的整体性能急剧降低。所以,为了减少每个目录下的文件数量,我们必须增加所使用的目录的数量。如果仅仅使用一级子目录则顶级目录下的子目录数目太大了,所以我们使用两级子目录结构。那么,怎么来确定你的系统所需要的子目录数目呢?我们可以用下面的公式来估算。
已知量:
DS=可用交换空间总量(单位KB)/交换空间数目
OS=平均每个对象的大小=20k
NO=平均每个二级子目录所存储的对象数目=256
未知量:
L1=一级子目录的数量
L2=二级子目录的数量
计算公式:
L1xL2=DS/OS/NO
(注意这是个不定方程,可以有多个解)
aclallow_domaindstdomain/etc/squid/allow_domain
创建cache目录
[root@proxysquid]#squid-z
修改该目录所有者squid:
[root@proxysquid]#chownsquid:squid/usr/spool/squid
最后启动squid:
[root@iptablelogs]#/usr/local/squid/bin/RunCache&
并且系统中应该有如下几个端口被****:
[root@proxylogs]#netstat-lntcp000.0.0.0:31280.0.0.0:*LISTENudp000.0.0.0:31300.0.0.0:*
这些说明squid已经正常启动了。
然后使用Redhat的serviceconf工具以使得系统启动时自动启动squid服务器。
5.iptables的设置
在/etc/rc.d/目录下用touch命令建立firewall文件,执行chmodu+xfirewll以更改文件属性,编辑/etc/rc.d/rc.local文件,在末尾加上/etc/rc.d/firewall以确保开机时能自动执行该脚本。
firewall文件内容为:
#!/bin/sh
echoEnablingIPForwarding
echo1>/proc/sys/net/ipv4/ip_forward
echoStartingiptablesrulesā
#Refreshallchains
/sbin/iptables-F-tnat
iptables-tnat-APREROUTING-ieth1-ptcp-mtcp–dport80-jREDIRECT–to-ports8080
iptables-tnat-APOSTROUTING-s192.168.0.0/24-oppp0—-jMMASQUERADE七、在含有多个vlan的三层交换网络中实现squid+iptables的透明代理在企业中网络常常会有三层交换。它能够有效隔离广播,防止广播风暴。通过三层交换机划分vlan,使得应用和管理都变得相对容易些。但也给代理的设置带来一点小麻烦,传统代理要设置代理
服务器地址和端口,这对三层交换网络没有什么问题。关键是透明代理中网关的设置,在三层交换的网络中每个vlan的计算机的网关都要设置成所在vlan的网关,如:下表中vlan1的网关必须是192.168.100.1,vlan2的网关必须是192.168.110.1,像普通网络中把网关都设置成代理服务器的地址是绝对不行的。所以,三层交换网络中透明代理的设置主要问题集中在三层中心交换机和代理服务器路由的设置,三层交换机的路由表中要有一条默认路由指向代理服务器,服务器的路由表中要有一个容纳所有vlan的网关。
以下是我的网络说明:网络内网有15个vlan如路由表所示,代理服务器(squid+iptables)在vlan1中服务器有两块网卡,eth0连接外网ip是A.B.C.D,网关为A.B.C.1.eth1连接内网ip是192.168.100.123/24不设网关。给服务器加上一条路由,将192.168.0.0/16,指向vlan1的网关192.168.100.1,routeadd-net192.168.0.0netmask255.255.0.0eth1以保证与其他vlan的通信,如此网络部分便配置成功,关于透明代理设置这里就不说了,请参考其他文章。这样所有的vlan的计算机只要网关和dns配置好就可以上网了,如:vlan3中某台计算机ip设置192.168.120.47,网关为192.168.120.1,dns地址为服务商给的(广州地区ADSL:61.144.56.100),这样就OK了。其出网的路由为->192.168.120.47->192.168.120.1->192.168.100.1->192.168.100.123->A.B.C.1->