由于公司使用了4根2M的ADSL做网络接入,需要一个路由能实现4根线的动态流量负载均衡,还需要×××、DHCP、无线AP接入等等功能,选择了很久决定使用Vyatta来实现。
我使用的是Vyatta Core 6(Beta),网址是: http://www.vyatta.org/http://www.vyatta.com/。根据官方的解释,Vyatta software是一份完整的、即刻可用的、基于Debian的发行,它被设计为能将一套标准的x86硬件转换为企业级的路由器/防火墙。Vyatta软件包括对常用网络接口、工业标准路由协议和管理协议的支持。与先前的开源软件路由项目不同,所有的这些特性都可以通过单个的命令行接口(CLI)或是基于 web的图形用户界面来配置。Vyatta软件可以以自由社区版本获得,它也以捆绑软件订购的形式提供,这包含了维护、升级和技术支持。
一、安装Vyatta
下载回来的ISO文件是Vyatta的光盘版本,是可以直接在光盘上运行的Vyatta系统,这样你也可以先体验下,如果你觉得他真的是不错,那么你就可以把Vyatta安装在本地硬盘上。
光盘系统启动之后,会要求输入用户名/密码进行登录,这里有两个用户root(密码:vyatta )和vyatta(密码:vyatta),其中root用户是进入linux的shell下的,简单说就是linux系统用户,当然你也可以在这个用户下切换到路由系统的用户(vyatta)的shell,只需执行xorpsh就完成了切换。
在这里我们是要使用Vyatta来搭建一个能动态负载均衡4条ADSL线的路由+网关+×××服务器+DHCP服务器+透明代理服务器……所以我们要把Vyatta安装到本地硬盘上。使用root用户登录后,在命令行中输入install-system,之后按照提示一步一步的回车就可以了(一般情况下直接使用默认的配置就可以)。
安装完成后,重启系统,使用vyatta用户进入系统,开始我们的配置。
二、配置网络设备
输入configure<回车>,进入路由配置模式
1、设置网卡的IP地址:
set interface ethernet eth0 address xxx.xxx.xxx.xxx/24 (这里我使用eth0作为内网的接口)
后面继续设置其他网卡的IP地址,我这里还有4块网卡来接4个ADSL Modem,根据4个Modem的IP地址来设置其余四块网卡的IP地址。
都设置成功后,执行commit命令,让设置生效
save(保存配置信息)
2、设置ADSL,以及连接模式
set interface ethernet eth1 pppoe 1 default-route auto(自动获取默认路由)
set interface ethernet eth1 pppoe 1 remote-address xxx.xxx.xxx.xxx(ADSL Modem的IP地址)
set interface ethernet eth1 pppoe 1 service-name adsl1(起个好听的名字^_^)
set interface ethernet eth1 pppoe 1 mtu 1492(设置ADSL的MTU值)
set interface ethernet eth1 pppoe 1 user-id xxxxxxx(ADSL账户名)
set interface ethernet eth1 pppoe 1 password xxxxxx(ADSL密码)
commit
save
设置完成后,使用exit命令退出配置模式后,使用命令connect interface pppoe1尝试连接,确定能够成功拨号连接到Internet。
使用相同的方法设置其余几根ADSL线,同样使用connect来尝试连接,确定都能够正常的连接到Internet。
至此,网络设备的设置就完成了,下面开始DHCP服务配置。
三、配置DHCP服务器
输入configure<回车>,进入路由配置模式
set service dhcp-server shared-network-name commandos subnet xxx.xxx.xxx.xxx/24(设置DHCP分配的IP地址网段)
set service dhcp-server shared-network-name commandos subnet xxx.xxx.xxx.xxx/24 default-router 10.139.0.3(设置DHCP下发的路由IP地址)
set service dhcp-server shared-network-name commandos subnet xxx.xxx.xxx.xxx/24 dns-server 10.139.0.3(设置DHCP下发的DNS服务器IP地址)
set service dhcp-server shared-network-name commandos subnet xxx.xxx.xxx.xxx/24 start 10.139.0.100 stop 10.139.0.199(设置DHCP地址池范围)
如果需要配置静态IP地址,执行下面的操作
set service dhcp-server shared-network-name commandos subnet xxx.xxx.xxx.xxx/24 static-mapping staticName ip-address xxx.xxx.xxx.xxx(静态IP地址分配)
set service dhcp-server shared-network-name commandos subnet xxx.xxx.xxx.xxx/24 static-mapping staticName mac-address xx:xx:xx:xx:xx:xx(网卡的MAC地址)
commit
save
至此,DHCP服务器已经配置好了,大家可以接一台机器到局域网中,看能不能正确的获取到IP地址、网关、DNS等。
四、配置DNS
这里我就是配置了一个简单的DNS转发。
输入configure<回车>,进入路由配置模式
set service dns forwarding name-server 202.106.0.20(转发DNS请求到此IP地址)
set service dns forwarding listen-on eth0(配置DNS服务监听网卡)
set service dns forwarding cache-size 150(配置DNS缓存)
commit
save
五、配置ADSL的动态负载均衡
输入configure<回车>,进入路由配置模式
set load-balancing wan interface-health pppoe1(添加一个动态负载均衡出口)
set load-balancing wan interface-health pppoe1 failure-count 5(设置失败的次数,如果测试失败超过这个次数,系统会自动将这条线断掉再重新连接)
set load-balancing wan interface-health pppoe1 nexthop dhcp(设置下一个路由地址,由于ADSL的下一个路由地址不确定,所以指定为dhcp,这个设置选项只在Vyatta Core 6中可以使用)
set load-balancing wan interface-health pppoe1 test 10 target 202.108.33.77(设置一个检测网络连接的IP地址,系统会自动ping这个地址,以确定连接是否正常,这里我设置的是sina的IP地址^_^)
使用同样的方法,把其余的三根线都加进来
set load-balancing wan rule 10 inbound-interface eth0(设置内网网卡)
set load-balancing wan rule 10 interface pppoe1 weight 1(设置负载强度,值越大,这根线被负载均衡到的流量就越大)
设置其余几根线的负载强度
commit
save
六、一些管理设置
输入configure<回车>,进入路由配置模式
打开SSH,允许用户SSH登录到这台机器
set service ssh port 22(SSH连接端口)
set service ssh allow-root(是否允许root用户通过SSH登录)
set service ssh protocol-version (设置SSH协议版本)
七、配置透明代理
在网关上配置一个透明代理服务,可以减少一定的流量负载
输入configure<回车>,进入路由配置模式
set service webproxy listen-address xxx.xxx.xxx.xxx(内网IP地址)
set service webproxy cache-size 1024(缓存的大小,单位是M)
八、配置Open×××
配置好了×××,可以很方便的在出差或者在客户那里的时候,连接到公司内部网络,进行一些演示等。
输入configure<回车>,进入路由配置模式
set interface open*** vtun0 mode server(设置Open×××运行模式为Server)
set interface open*** vtun0 open***-option "--push route 192.168.10.0 255.255.255.0 --push route 192.168.0.0 255.255.255.0"(设置下发的路由信息)
set interface open*** vtun0 protocol tcp-passive(设置×××使用TCP连接)
set interface open*** vtun0 server subnet xxx.xxx.xxx.xxx/24(设置×××的IP地址)
设置×××使用证书验证身份,证书使用OpenSSL生成
set interface open*** tls ca-cert-file xxxxxx(根证书的地址)
set interface open*** tls cert-file xxxxxx
set interface open*** tls dh-file xxxxxx
set interface open*** tls key-file xxxxxx
set protocols static route xxx.xxx.xxx.xxx/24 next-hop xxx.xxx.xxx.xxx(设置×××的路由)
commit
save
至此,所有配置都已经完成了,大家可以试试使用Open×××客户端连接×××服务器