Linux下设置ADSL使局域网连接互联网

页面导航:首页 > 操作系统 > RedHat/Centos > Linux下设置ADSL使局域网连接互联网

Linux下设置ADSL使局域网连接互联网

来源: 作者: 时间:2015-12-18 14:17 【

系统准备:一个运转正常的Linux(这个大家都有) 硬件要求:至少一块网卡,宽带设备已经申请完毕,同时已经开通 广州电信的ADS(LAN)L使用的是PPPOE拨号方式,因此,要在Linux下使用ADSL,必须
系统准备:一个运转正常的Linux(这个大家都有)   硬件要求:至少一块网卡,宽带设备已经申请完毕,同时已经开通   广州电信的ADS(LAN)L使用的是PPPOE拨号方式,因此,要在Linux下使用ADSL,必须安装PPPOE客户端软件。   下面说明如何进行安装:本人以RedHat Linux

准备:一个运转正常的Linux(这个大家都有)

  硬件要求:至少一块网卡,宽带设备已经申请完毕,同时已经开通

  广州电信的ADS(LAN)L使用的是PPPOE拨号方式,因此,要在Linux下使用ADSL,必须PPPOE客户端软件。

  下面说明如何进行:本人以RedHat Linux 7.3为平台,其它平台Linux的办法可以参照下面的步骤。

  、的前提条件1.确保了网卡并工作正常使用命令#ifconfig eth0查看网卡状态2.在中不要默认路由(网关),让ADSL拨号后自动获得如果已经了默认路由,使用以下删除:在文件 /etc/sysconfig/network 中删除 GATEWAY= 这一行,然后以root执行:#/etc/rc.d/init.d/network restart 3.已经了pppd软件包如果存在文件 /usr/sbin/pppd,则说明已经了pppd;如未,从RedHatLinux 光盘上装ppp-2.3.11-4.i386.rpm(版本可能不一样)这个软件包二、PPPOE客户端软件Linux下的PPPOE客户端软件比较多,而且大多使用GNU License,推荐使用rp-pppoe这个软件包,

  从http://www.roaringpenguin.com/pppoe/这个网站上,不仅可以下栽RedHat 平台下的rp-pppoe的二进制软件包,而且可以下栽源代码软件包。

  1.二进制软件包的:A.下栽二进制软件包http://www.roaringpenguin.com/pppoe/rp-pppoe-3.5-1.i386.rpm B.进行以root执行:#rpm -Uvh rp-pppoe-3.5-1.i386.rpm 2.从源代码进行:从源代码进行同样适用于其它平台的Linux,但必须在Linux系统中gcc编译器。

  A.下栽源代码软件包http://www.roaringpenguin.com/pppoe/rp-pppoe-3.5.tar.gz B.解压缩#tar xvfz rp-pppoe-3.5.tar.gz #cd rp-pppoe-3.5 C.进行编译和运行脚本#./go将自动进行编译和,最后,自动调用/usr/sbin/adsl-setup进行配置,具体解释见三。

  、配置PPPOE客户端软件完软件包后,必须配置pppoe的配置文件/etc/ppp/pppoe.conf,从而让ADSL拨号时使用配置文件中的用户名、密码等参数。我们不必手工改动这个文件,可以使用adsl-setup这个工具进行配置:#/usr/sbin/adsl-setup当出现

  >>> Enter your PPPoE user name :

  输入ADSL帐号的用户名当出现

  >>> Enter the Ethernet interface connected to the ADSL modem

  For Solaris, this is likely to be something like /dev/hme0. For Linux, it will be ethn, where n is a number.(default eth0):输入 eth0 ,这是ADSL相连的网卡的名字当出现

  >>> Enter the demand value (default no):

  输入 no当出现

  >>> Enter the DNS information here:

  输入 “server” ,这表示使用ADSL拨号自动获得的DNSIP地址当出现

  >>> Please enter your PPPoE password:

  输入ADSL帐号的密码当出现

  >>> Choose a type of firewall (0-2):

  输入 0 ,不使用防火墙当出现

  >>> Accept these settings and adjust configuration files (y/n)?

  如果输入的信息正ā确,输入 y ,完成配置,否则,输入 n 重新输入。

  、启动PPPOE客户端软件使用命令/usr/sbin/adsl-start 启动PPPOE客户端软件,进行连接,如果成功,将出现Connected;如果不成功,请检查网线、ADSL MODEM等物理设备,并查看 /var/log/messages中的信息/usr/sbin/adsl-stop 关闭和ISP的连接/usr/sbin/adsl-status 查看当前连接的状态如果想在Linux系统启动时自动启动ADSL连接,输入以下命令#chkconfig –add adsl将在当前的运行级下加入ADSL的自启动脚本五、测试当连接成功后,使用命令#ifconfig -a在输出中应含有关于 ppp0 的信息,其中还绑定了IP 地址,说明已经从拨号中获得了IP地址。

  使用命令#netstat -nr查看路由表信息,这时的默认路由应该是上面获得的IP地址。

  如果没有默认路由,我们可以手动增加:#route add default gw 上面获得的IP地址使用命令#nslookup www.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文件,执行chmod u+x firewall以改变文件属性,编辑/etc/rc.d/rc.local文件,在末尾加上/etc/rc.d/firewall以确保开机时能自动运行该脚本。

  firewall内容为:#!/bin/sh echo “Enable IP Forwarding…”

  echo “1″>/proc/sys/net/ipv4/ip_forward echo ”Starting iptables rules…“

  /sbin/modprobe iptable_filter /sbin/modprobe ip_tables /sbin/modprobe iptable_nat #Refresh all chains /sbin/iptables -F -t nat iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ppp0 -j MMASQUERADE客户端(windows98/2000/xp、linux)网关为这台linux地址(192.168.100.123),DNS设置为61.144.56.100.

  透明代理配置代理软件squid:

  编辑/usr/local/squid/etc/squid.conf,修改以下内容,确保以下配置:

  http_port 192.168.100.123:8080

  cache_mem 48 MB acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemakāer acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT acl flag src 192.168.100.0/255.255.255.0

  httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on cache_effective_user nobody cache_effective_group nobody http_access allow flag

  http_access deny all

  (限制只允许局域网用户使用代理,具体可以参考squid手册中关于Access Control Lists的内容来限制访问代理)

  cache_dir ufs /var/spool/squid 100 16 256

  cache_dir type Directory-Name Mbytes Level-1 Level2

  (说明:指定squid用来存储对象的交换空间的大小及其目录结构。可以用多个cache_dir命令来定义多个这样的交换空间,并且这些交换空间可以分布不同的磁盘分区。“directory ”指明了该交换空间的顶 级目录。如果你想用整个磁盘来作为交换空间,那么你可以将该目录作为装载点将整个磁盘mount上去。缺省值为/var/spool/squid.“Mbytes”定义了可用的空间总量。需要注意的是,squid进程必须拥有对该目录的读写权力。“Level-1″是可以在该顶级目录下建立的第一级子目录的数目,缺省值为16.同理,”Level-2″是可以建立的第二级子目录的数目,缺省值为256.为什么要定义这么多子目录呢?这是因为如果子目录太少,则存储在一个子目录下的文件数目将大大增加,这也会导致寻找某一个文件的时间大大增加,从而使的整体性能急剧降低。所以,为了减少每个目录下的文件数量,我们必须增加所使用的目录的数量。如果仅仅使用一级子目录则顶级目录下的子目录数目太大了,所以我们使用两级子目录结构。那么,怎么来确定你的所需要的子目录数目呢?我们可以用下面的公式来估算。

  已知量:

  DS = 可用交换空间总量(单位KB)/ 交换空间数目

  OS = 平均每个对象的大小= 20k

  NO = 平均每个二级子目录所存储的对象数目 = 256

  未知量:

  L1 = 一级子目录的数量

  L2 = 二级子目录的数量

  计算公式:

  L1 x L2 = DS / OS / NO

  (注意这是个不定方程,可以有多个解)

  acl allow_domain dstdomain “/etc/squid/allow_domain”

  创建cache目录

  [[email protected] squid]# squid -z

  修改该目录所有者squid:

  [[email protected] squid]# chown squid:squid /usr/spool/squid

  最后启动squid:

  [[email protected] logs]# /usr/local/squid/bin/RunCache &

  并且中应该有如下几个端口被****:

  [[email protected] logs]# netstat -ln tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN udp 0 0 0.0.0.0:3130 0.0.0.0:*

  这些说明squid已经正常启动了。

  然后使用Redhat的serviceconf工具以使得启动时自动启动squid服务器。

  5.iptables的

  在/etc/rc.d/目录下用touch命令建立firewall文件,执行chmod u+x firewll以更改文件属性,编辑/etc/rc.d/rc.local文件,在末尾加上/etc/rc.d/firewall以确保开机时能自动执行该脚本。

  firewall文件内容为:

  #!/bin/sh

  echo “Enabling IP Forwarding…”

  echo 1 > /proc/sys/net/ipv4/ip_forward

  echo “Starting iptables rules…ā”

  #Refresh all chains

  /sbin/iptables -F -t nat

  iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp–dport 80 -j REDIRECT –to-ports 8080

  iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ppp0 — -j MMASQUERADE七、在含有多个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,route add -net 192.168.0.0 netmask 255.255.0.0 eth1以保证与其他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->……

Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<