歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux管理 >> Linux服務 >> 單linux服務器同時撥多條ADSL和掛多個固定公網ip通過squid實現代理池方案

單linux服務器同時撥多條ADSL和掛多個固定公網ip通過squid實現代理池方案

日期:2017/3/1 13:36:03   编辑:Linux服務

一、背景:

大數據時代,誰擁有數據誰才能有未來,很多互聯網公司本身並不產生數據,怎麼辦?抓數據,對抓數據,所以在目前巨大的網絡流量中有相當一部分是爬蟲流量,如搜索引擎蜘蛛、抓取電商網站的商品數據的爬蟲等。如本文開始所述,數據即未來,有數據的憑什麼讓你抓,所以會對用戶訪問做一些訪問頻次限制,超過設定就拉黑(如封ip、封特定user agent、封url等),但這也只是做頻次限制而已,並沒有完全封死,因為封死意味著正常用戶也無法訪問。本文所要解決的問題就是在ip被封後如何快速簡單的切換ip、按需更換ip。

二、在用方案圖展示:

\

三、硬件需求:

1、支持vlan的2層交換機,比如24口的最多可以接23條adsl貓

2、配置一般的linux服務器,最好千兆網卡,最好3塊網卡(理論上一塊網卡也可以,為避免相互影響,容錯,使網絡結構清晰,采用3塊千兆網卡)

3、普通內網交換機,這個都有吧

四、核心技術原理:

1、一條ADSL一個vlan,和服務器相連的端口做trunk。為什麼要一條adsl一個vlan?因為聯通、電信等運營商會對每個adsl賬號做mac地址限制,一個mac地址只能撥一個號,這也是為什麼當2個以上的adsl同時撥號時只有一條adsl可用。

2、linux服務器上創建和adsl的vlan ID相同的虛擬接口。為什麼要在linux創建vlan虛接口?實現和adsl的隔離,減少相互干擾,每條ad彼此獨立,而且如果用子網卡的話,不能修改mac地址,即使修改成功,所有的子網卡和主網卡的mac也是一致的,不能滿足多條adsl同時撥號的的要求,故必須采用vlan虛接口。

3、接光纖的網卡采用子網卡掛多個公網ip

4、linux服務器采用源地址路由技術。為什麼?squid的tcp_outgoing_address只支持ip地址,不支持設備名(如ppp0、eth0),且adsl撥號獲得的ip也會變化,故需要給vlan子接口配置私有固定ip,通過源地址路由綁定出口adsl。

5、通過squid的賬號進行出口ip選擇tcp_outgoing_address 參考http://blog.csdn.net/xuyaqun/article/details/9623635

五、配置
1、vlan交換機配置:略

端口與vlan ID的對應關系:port1-->vlan 101,port2-->vlan 102 .....,port23-->vlan 123,port24-->Trunk

2、linux配置
動態配置vlan虛接口,需與vlan交換機上的vlan ID對應:
modprobe 8021q
vconfig add eth0 101
ip link set dev eth0.101 address 00:40:50:60:70:11
ifconfig -s eth0.101 10.1.1.1 broadcast 10.1.1.0 netmask 255.255.255.0 up

vconfig add eth0 102
ip link set dev eth0.102 address 00:40:50:60:70:12
ifconfig -s eth0.102 10.1.2.1 broadcast 10.1.2.0 netmask 255.255.255.0 up

或者寫配置文件:

開機加載vlan模塊:

echo "modprobe 8021q">>/etc/rc.local

創建vlan接口配置文件:

# more /etc/sysconfig/network-scripts/ifcfg-eth1.101
DEVICE=eth1.101
VLAN=yes
BOOTPROTO=none
ONBOOT=yes
HWADDR=00:50:56:BA:1D:00
TYPE=Ethernet
NETMASK=255.255.255.0
IPADDR=192.168.101.1

查看vlan虛接口
cat /proc/net/vlan/config
cat /proc/net/vlan/eth0.101
cat /proc/net/dev

3、ADSL撥號配置

ADSL賬號配置文件:

# more /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresses
"root" * "123456"
"u1" * "123456"
"u2" * "123456"

ADSL接口配置文件(注意紅色部分):

# more /etc/sysconfig/network-scripts/ifcfg-ppp1
USERCTL=yes
BOOTPROTO=dialup
NAME=DSLppp1
DEVICE=ppp1
TYPE=xDSL
ONBOOT=no
PIDFILE=/var/run/pppoe-adsl-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=eth0:1
PROVIDER=DSLppp1
USER=u2
PEERDNS=no
DEMAND=no

ADSL撥號/掛斷:

ifup/ifdown ppp0

adsl-start/adsl-stop /etc/sysconfig/network-scripts/ifcfg-ppp0

查看adsl撥號狀態

ifconfig

pppoe-status /etc/sysconfig/network-scripts/ifcfg-ppp0

4、子網卡配置:略

子網卡配置效果:

eth1:163 Link encap:Ethernet HWaddr 00:0A:F7:0F:4A:E8
inet addr:8.8.148.163 Bcast:8.8.148.175 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

eth1:164 Link encap:Ethernet HWaddr 00:0A:F7:0F:4A:E8
inet addr:8.8.148.164 Bcast:8.8.148.175 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

eth1:165 Link encap:Ethernet HWaddr 00:0A:F7:0F:4A:E8
inet addr:8.8.148.165 Bcast:8.8.148.175 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

5、ADSL源地址路由配置:

只需要對和adsl鏈路一一對應的vlan接口ip地址做源地址路由
iptables -t nat -A POSTROUTING -s 10.0.1.1/255.255.255.255 -o ppp0 -j MASQUERADE
ip rule add from 10.0.1.1 lookup 5
ip route add default dev ppp0 table 5

iptables -t nat -A POSTROUTING -s 10.0.2.1/255.255.255.255 -o ppp1 -j MASQUERADE
ip rule add from 10.0.2.1 lookup 6
ip route add default dev ppp1 table 6

6、squid配置:略,參見http://blog.csdn.net/xuyaqun/article/details/9623635

六、測試各網絡接口是否正常:

通過ping指定設備名或者接口ip地址測試

ping -I eth0 8.8.8.8
ping -I ppp0 8.8.8.8
ping -I ppp1 8.8.8.8

ping -I 8.8.245.163 8.8.8.8

或者

通過traceroute指定設備名測試

traceroute -i eth0 8.8.8.8
traceroute -i ppp0 8.8.8.8
traceroute -i ppp1 8.8.8.8


七、所有配置完成後,使用效果截圖:

\

八、對代理池進行監控報警

cacti監控效果截圖:

\

nagios監控效果截圖:

\

參考連接:

http://www.junxiwang.com/forum.php?mod=viewthread&tid=76
http://www.itxbo.com/network/860.html
http://www.imjune.com/cuier/240.html
http://os.51cto.com/art/200712/62152_all.htm

Copyright © Linux教程網 All Rights Reserved