一、背景:
大數據時代,誰擁有數據誰才能有未來,很多互聯網公司本身並不產生數據,怎麼辦?抓數據,對抓數據,所以在目前巨大的網絡流量中有相當一部分是爬蟲流量,如搜索引擎蜘蛛、抓取電商網站的商品數據的爬蟲等。如本文開始所述,數據即未來,有數據的憑什麼讓你抓,所以會對用戶訪問做一些訪問頻次限制,超過設定就拉黑(如封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-secretsADSL接口配置文件(注意紅色部分):
# more /etc/sysconfig/network-scripts/ifcfg-ppp1ADSL撥號/掛斷:
ifup/ifdown ppp0
adsl-start/adsl-stop /etc/sysconfig/network-scripts/ifcfg-ppp0
查看adsl撥號狀態
ifconfig
pppoe-status /etc/sysconfig/network-scripts/ifcfg-ppp04、子網卡配置:略
子網卡配置效果:
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