免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 41147 | 回复: 85

Linux下的双线ADSL负载均衡安装日志 [复制链接]

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
发表于 2007-04-17 23:47 |显示全部楼层
看到很多兄弟在搞ADSL负载均衡,下面是今晚的安装日志。由于是第一次写安装日志,所以写作水平很差,加上时间又太晚了,难免有很多错误,需要的同志就凑或着看吧。不正确的地方,或需要改进的地方,欢迎多提意见。EMAIL:ssffzz1@126.com  另外:我不知道在这里怎么修饰文字,因为我认为需要注意的地方我都加粗了,需要的话我附带了PDF文件,也可以打印的,没有密码。

LINUX双线ADSL负载均衡
系统环境:
双线均衡服务器:赛扬1.7,128内存,30G内存。软件为FC6.
PPPOE服务器:P133,32内存128MCF卡。软件为ROUTEROS.
测试结构如下:
                                |------------------|
PC1-----均衡服务器                        PPPOE服务器--------路由器-----INTERNET
                                |------------------|

IP地址分配如下:
PC1: 192.168.10.88 GW 192.168.10.1
PPP0: 10.0.1.4 GW 10.0.0.1
PPP1:10.0.1.5 GW 10.0.0.1
一、        安装均衡服务器软件:
1、        安装FC6,安装开发包,这样在编译IPID模块的时候很方便。为防止网卡号的混乱先安装一块网卡,装完后依次插入其余2块网卡,每插一块启动一次,完成驱动的安装,如果出现网卡命名的错误,则修改/etc/modprobe.conf和/etc/sysconfig/hwconf文件,还有/etc/network-script/if-ethx文件。
2、        禁用SELINUX:修改/etc/selinux/config:文件,SELINUX=disable
3、        去掉IPV6支持:
#/etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=gw.jl.com
4、        去掉不必要的服务:这个利用setup程序完成好了。
5、        加入一些IPTABLES的模块:修改/etc/sysconfig/iptables-config文件,在原来的模块配置条目(就一条)下面加入
IPTABLES_MODULES= “ip_conntrack_ftp”  
IPTABLES_MODULES=”ip_nat_netbios_ns”
IPTABLES_MODULES=”ip_nat_ftp”
6、        配置网卡ETH0
#/etc/sysconfig/ifcfg-eth0
# VIA Technologies, Inc. VT6105 [Rhine-III]
DEVICE=eth0
BROADCAST=192.168.10.255
HWADDR=00:19:5B:34:58:CB
IPADDR=192.168.10.1
IPV6ADDR=
IPV6PREFIX=
NETMASK=255.255.255.0
NETWORK=192.168.10.0
ONBOOT=yes
7、        配置网卡ETH1 ETH2
#/etc/sysconfig/ifcfg-eth1
# VIA Technologies, Inc. VT6105 [Rhine-III]
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
HWADDR=00:19:5b:34:58:ce

#/etc/sysconfig/ifcfg-eth2
# VIA Technologies, Inc. VT6105 [Rhine-III]
DEVICE=eth2
ONBOOT=yes
BOOTPROTO=none
HWADDR=00:19:5b:34:58:c8
8、        配置ADSL,这里不要配置添加缺省网关,同时要修改PID文件,要不两条PPP链路不能同时使用,文件如下:
#/etc/sysconfig/ifcfg-ppp0
USERCTL=yes
BOOTPROTO=dialup
NAME=DSLppp0
DEVICE=ppp0
TYPE=xDSL
ONBOOT=yes
PIDFILE=/var/run/pppoe-ppp0.pid
FIREWALL=NONE
PING=.
PPPOE_TIMEOUT=80
LCP_FAILURE=3
LCP_INTERVAL=20
CLAMPMSS=1412
CONNECT_POLL=6
CONNECT_TIMEOUT=60
DEFROUTE=no
SYNCHRONOUS=no
ETH=eth1
PROVIDER=DSLppp0
USER=ppp0
PEERDNS=no
DEMAND=no

#/etc/sysconfig/ifcfg-ppp1
USERCTL=yes
BOOTPROTO=dialup
NAME=DSLppp1
DEVICE=ppp1
TYPE=xDSL
ONBOOT=yes
PIDFILE=/var/run/pppoe-ppp1.pid
FIREWALL=NONE
PING=.
PPPOE_TIMEOUT=80
LCP_FAILURE=3
LCP_INTERVAL=20
CLAMPMSS=1412
CONNECT_POLL=6
CONNECT_TIMEOUT=60
DEFROUTE=no
SYNCHRONOUS=no
ETH=eth2
PROVIDER=DSLppp1
USER=ppp1
PEERDNS=no
DEMAND=no
9、        配置均衡网关,把它方到/etc/ppp/ip-up文件中去,这样一旦拨号成功,就添加均衡网关。同时修改TCP的超时值。
#!/bin/bash
# This file should not be modified -- make local changes to
# /etc/ppp/ip-up.local instead

PATH=/sbin:/usr/sbin:/bin:/usr/bin
export PATH

LOGDEVICE=$6
REALDEVICE=$1

[ -f /etc/sysconfig/network-scripts/ifcfg-${LOGDEVICE} ] && /etc/sysconfig/network-scripts/ifup-post --realdevice ${REALDEVICE} ifcfg-${LOGDEVICE}

/etc/ppp/ip-up.ipv6to4 ${LOGDEVICE}

[ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local "$@"



ip route add default scope global nexthop dev ppp0 weight 1 nexthop dev ppp1 weight 1

echo "86400" > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established

exit 0
10、        按照IPID模块的编译方法,编译IPID模块。
11、        配置防火墙及NAT
# Generated by iptables-save v1.3.5 on Wed Apr 18 00:10:26 2007
*mangle
REROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
OSTROUTING ACCEPT [0:0]
-A POSTROUTING -o ppp0 -j TTL --ttl-set 128
-A POSTROUTING -o ppp0 -j IPID --ipid-inc 1
-A POSTROUTING -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1440
-A POSTROUTING -o ppp1 -j TTL --ttl-set 128
-A POSTROUTING -o ppp1 -j IPID --ipid-inc 1
-A POSTROUTING -o ppp1 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1440
COMMIT
# Completed on Wed Apr 18 00:10:26 2007
# Generated by iptables-save v1.3.5 on Wed Apr 18 00:10:26 2007
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -s 192.168.10.0/255.255.255.0 -p icmp -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 127.0.0.1 -j ACCEPT
-A INPUT -d 127.0.0.1 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A FORWARD -p gre -j DROP
-A FORWARD -s 192.168.10.0/255.255.255.0 -j ACCEPT
-A FORWARD -d 192.168.10.0/255.255.255.0 -j ACCEPT
COMMIT
# Completed on Wed Apr 18 00:10:26 2007
# Generated by iptables-save v1.3.5 on Wed Apr 18 00:10:26 2007
*nat
REROUTING ACCEPT [0:0]
OSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -o ppp0 -j MASQUERADE
-A POSTROUTING -o ppp1 -j MASQUERADE
COMMIT
# Completed on Wed Apr 18 00:10:26 2007
12、        开启转发,及IP动态地址
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl( and
# sysctl.conf(5) for more details.

# Controls IP packet forwarding
net.ipv4.ip_forward = 1

# Controls source route verification
net.ipv4.conf.default.rp_filter = 1

# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0

# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0

# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1

# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1
net.ipv4.ip_dynaddr = 1
13、配置好nameserver服务器,/etc/resolv.conf
nameserver 202.102.134.68
14、配置文件中改变的部分,和应该注意的部分,我都加了斜体并且加粗显示了,这是要注意的地方。

二、        最后就可以在PPPOE服务器上,或者在均衡网关上看到两条PPP链路的负载均衡了。时间有限,我就不抓图了。应该说这种均衡可能是根据目的地址的均衡,因为我在PC1上开了N个迅雷任务。这样能看到均衡的结果。但如果不开任何任务只用PING程序,则基本看不到结果。

更新:
注:
1、 更改ip route add default scope global nexthop dev ppp0 weight 1 nexthop dev ppp1 weight 1 中的scope global为equalize这样的均衡效果可能要好一些。
2、 此实验在FC3下未成功。原因是MASQUERADE有缺陷,出现“MASQUERADE:Route sent us somewhere else.”错误,这需要一个内核补丁。

[ 本帖最后由 ssffzz1 于 2007-5-8 20:27 编辑 ]

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
发表于 2007-04-17 23:55 |显示全部楼层
睡觉前自己顶一下,顺便发PDF上来。更详细的测试及问题以后再说,先睡觉觉。

LINUX下的ADSL负载均衡.pdf

75.98 KB, 下载次数: 5992

论坛徽章:
0
发表于 2007-04-18 09:16 |显示全部楼层
顶一下!
限制10个字哟

论坛徽章:
0
发表于 2007-04-18 09:22 |显示全部楼层
LZ 能解释一下   -j TCPMSS --set-mss 1440  和  -j TTL --ttl-set 128  的意思吗?
另外  请问这种 ADSL的LB 是基于包的还是基于连接的?

论坛徽章:
0
发表于 2007-04-18 13:39 |显示全部楼层
-j TCPMSS --set-mss 1440 指TCP连接的最大分段尺寸协商为1440 ,这主要是为了避免传输的报文超过MTU的大小,带来重分段;

-j TTL --ttl-set 128 指将所有报文的TTL值修改为 128,其实就是TTL伪装;

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
发表于 2007-04-18 14:53 |显示全部楼层
原帖由 kevin.tan 于 2007-4-18 13:39 发表于 5楼  
-j TCPMSS --set-mss 1440 指TCP连接的最大分段尺寸协商为1440 ,这主要是为了避免传输的报文超过MTU的大小,带来重分段;

-j TTL --ttl-set 128 指将所有报文的TTL值修改为 128,其实就是TTL伪装;



谢谢你都替我回答了,完全正确IPID也是实现伪装的。

论坛徽章:
0
发表于 2007-04-18 16:55 |显示全部楼层
呵呵,还是要谢谢兄ssffzz1给我们写的文档啊

顺便问一下ssffzz1兄,RouterOS好用不?是不是稳定性比自己配置的路由器要强很多呀?

[ 本帖最后由 kevin.tan 于 2007-4-18 17:05 编辑 ]

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
发表于 2007-04-18 20:29 |显示全部楼层
原帖由 5iwww 于 2007-4-18 09:22 发表于 4楼  
LZ 能解释一下   -j TCPMSS --set-mss 1440  和  -j TTL --ttl-set 128  的意思吗?
另外  请问这种 ADSL的LB 是基于包的还是基于连接的?


刚才实验了一下,应该不是基于包的。正如《LINUX高级路由和流量控制》所说,这种路由是基于缓冲的,因此并不是100%的均衡。

我个人认为基于NAT的路由应该是基于链接的。假设是基于包的,当我们譬如用QQ的时候,因为是基于包的,这时因为有NAT的原因到达QQ服务器的包的源地址是不同的,因此无法建立链接。但基于链接的却可以建立正常的链接并通讯。
如果说没有NAT的参与,那么基于包的路由均衡如果两条链路的代价不一样,可能会导致包到达的顺序不同,就会产生重传现象。
不过在CISCO的路由器中是可以做基于包的负载均衡的,但我没有条件测试。

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
发表于 2007-04-18 20:32 |显示全部楼层
原帖由 kevin.tan 于 2007-4-18 16:55 发表于 7楼  
呵呵,还是要谢谢兄ssffzz1给我们写的文档啊

顺便问一下ssffzz1兄,RouterOS好用不?是不是稳定性比自己配置的路由器要强很多呀?



也不是,RouterOS也是基于LINUX+IPTABLES+IPROUTE2的,基本都差不多。不过RouterOS是一个比较全面的成品的软件,你只要会设置就可以了,但它的功能是定制的,譬如想自己写个小软件运行,几乎不可能。而LINUX需要我们几乎纯手工的制作,最大的特点就是灵活。

论坛徽章:
0
发表于 2007-04-18 21:56 |显示全部楼层
原帖由 ssffzz1 于 2007-4-18 20:29 发表于 8楼  


刚才实验了一下,应该不是基于包的。正如《LINUX高级路由和流量控制》所说,这种路由是基于缓冲的,因此并不是100%的均衡。

我个人认为基于NAT的路由应该是基于链接的。假设是基于包的,当我们譬如用QQ的 ...



所以,我认为很大一部分人会有一个误区,就是用linux(NAT)可以做到负载均衡,其实应该叫冗余会比较好一些,真正的负载均衡应该是不涉及到nat的,因为在路由上,路由器只是修改nexthop的mac地址,而ip的源和目的是不变的,所以cisco的路由的负载均衡才是真正的LB    在linux上 因为router cache的问题,而且包负载在NAT上几乎是不可用,我认为LB应该做在nexthop上而不是NAT上,LZ认为呢?:em11:
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP