配置電信網(wǎng)通雙線雙IP的解決辦法
配置電信網(wǎng)通雙線雙IP 的解決辦法做互聯(lián)網(wǎng)網(wǎng)站,最頭疼的事情之一就是電信和網(wǎng)通的互聯(lián)互不通了,為了能夠讓北方網(wǎng)通和南方電信用戶都可以快速的訪問網(wǎng)站,解決辦法就是托管到雙線機房。雙線機房有兩類,一類是通
配置電信網(wǎng)通雙線雙IP 的解決辦法
做互聯(lián)網(wǎng)網(wǎng)站,最頭疼的事情之一就是電信和網(wǎng)通的互聯(lián)互不通了,為了能夠讓北方網(wǎng)通和南方電信用戶都可以快速的訪問網(wǎng)站,解決辦法就是托管到雙線機房。雙線機房有兩類,一類是通過BGP 技術(shù)實現(xiàn)互聯(lián)互通,服務(wù)器只需要一個網(wǎng)卡一個IP 地址就可以了,由機房進行路由的智能判斷,選擇合適的路由訪問,這樣對于網(wǎng)站來說是很方便的,比方說上海移動的怒江機房,上海地面通的自建機房,科技網(wǎng)的機房,但BGP 機房一般帶寬都比較少,流量高一些的話可能就沒有辦法了。另外一種就是雙線雙IP 的機房,帶寬可能更高一些,但是路由配置極其復雜,比方說上海電信的市北機房。
因為和諧的原因,JavaEye 網(wǎng)站服務(wù)器最近被迫從原來的移動怒江雙線機房當中搬了出去,由托管商推薦到了上海市北雙線機房,市北雙線機房實際上是電信機房,但是從天津網(wǎng)通拉了2G 專線過來,因此服務(wù)器需要至少兩個網(wǎng)卡,一個網(wǎng)卡接電信網(wǎng)關(guān),一個網(wǎng)卡接網(wǎng)通網(wǎng)關(guān),來實現(xiàn)互聯(lián)互通。如果多臺服務(wù)器的話,還需要第3個網(wǎng)卡組建內(nèi)網(wǎng)進行內(nèi)網(wǎng)通訊。
對于雙線雙IP 的服務(wù)器來說,要解決兩個問題:
一、你的網(wǎng)站用戶究竟走那個IP 來訪問你的服務(wù)器
二、你的網(wǎng)站內(nèi)容究竟走那個IP 返回給用戶
對于第1個問題,可以使用智能DNS 解析來解決,即DNS 服務(wù)器判斷用戶所在IP 地址,如果用戶是電信接入,就把服務(wù)器的電信IP 解析給他;如果用戶是網(wǎng)通接入,就把服務(wù)器的網(wǎng)通IP 解析給他。
智能DNS 可以自己基于開源的DNS 軟件來定制,不過國內(nèi)有一個很好的免費智能DNS 服務(wù)器提供商:,推薦使用DNSPod 的服務(wù)。他就可以實現(xiàn)上述的智能DNS 解析。
對于第2個問題,則需要在服務(wù)器上面配置路由規(guī)則,來決定究竟如何處理數(shù)據(jù)的返回路徑問題。
1、填寫靜態(tài)路由表
因為服務(wù)器有兩個IP ,分別在不同的網(wǎng)段,你使用電信IP 的網(wǎng)關(guān)做路由,那么網(wǎng)通的IP 地址用戶壓根就訪問不到,反之亦然。目前流行的解決辦法,就是使用電信網(wǎng)關(guān)做默認的路由,然后自己手工填寫所有網(wǎng)通IP 地址段的路由規(guī)則。這個辦法可以Google 搜索到一大把,不展開了。
這種辦法的缺點是添加規(guī)則太多太麻煩,而且難免掛一漏萬,如果你漏了一些網(wǎng)段,那這些網(wǎng)段的用戶就訪問不了你的網(wǎng)站了。況且網(wǎng)段地址的分布總是在不斷變化的,你還必須定期更新路由表。
2、根據(jù)用戶訪問進來的路徑設(shè)定動態(tài)路由
就是說如果用戶是通過電信IP 地址訪問過來的話,那么使用電信網(wǎng)關(guān)做路由,返回內(nèi)容走電信網(wǎng)關(guān);如果用戶通過網(wǎng)通IP 地址訪問過來的話,那么使用網(wǎng)通網(wǎng)關(guān)做路由,返回內(nèi)容走網(wǎng)通的網(wǎng)關(guān),這樣就不必那么麻煩的維護路由表了。以JavaEye 網(wǎng)站服務(wù)器為例,具體配置方法如下:
JavaEye 網(wǎng)站服務(wù)器電信IP :114.80.66.199,電信網(wǎng)關(guān):114.80.66.1
JavaEye 網(wǎng)站服務(wù)器網(wǎng)通IP :60.29.231.190,網(wǎng)通網(wǎng)關(guān):60.29.231.1
,1) 默認網(wǎng)關(guān)使用電信網(wǎng)關(guān)作為路由
在Linux 上面配置默認網(wǎng)關(guān),如果是RedHat ,應(yīng)該是在/etc/sysconfig/network文件里面添加一行:
GATEWAY=114.80.66.1,如果是SuSE ,應(yīng)該是在/etc/sysconfig/network/routes里面添加一行:default 114.80.66.1 - - 或者可以直接使用YaST2來配置。
2)添加路由表
修改/etc/iproute2/rt_tables,添加內(nèi)容:
C 代碼
然后手工添加路由規(guī)則,在Console 里面執(zhí)行如下命令:
C 代碼
即讓從電信IP 過來的請求按照電信路由返回,從網(wǎng)通IP 過來的請求從網(wǎng)通路由返回。這樣就搞定了,是不是很簡單?這個辦法是bobo 同學提供的,感謝他。
3) 把路由規(guī)則寫入啟動腳本
如果服務(wù)器重啟,或者網(wǎng)絡(luò)服務(wù)重啟,上述的路由規(guī)則就失效了,所以你需要把上面這段命令寫入系統(tǒng)啟動腳本和網(wǎng)絡(luò)啟動腳本
如果是RedHat ,系統(tǒng)啟動腳本是/etc/rc.d/rc.local
如果是SuSE ,可以自己寫一個啟動腳本,鏈接到S99上,比方說/etc/init.d/rc.local
如果是RedHat ,網(wǎng)絡(luò)啟動腳本是/etc/rc.d/init.d/network
如果是SuSE ,網(wǎng)絡(luò)啟動腳本是/etc/init.d/network
,雙線雙IP 用戶智能解析域名別名設(shè)置方法
雙線雙IP 用戶智能解析域名別名設(shè)置方法 1、在雙線服務(wù)器中, 您可以選擇自動識別, 也可以選擇手動識別, 我們送的二級域名在試用時, 連接的為網(wǎng)通IP , 電信用戶訪問較慢, 所以, 應(yīng)該用自己的一個域名綁定電信的IP . 2、雙線雙IP 自動識別: 雙線雙IP 用戶要實現(xiàn)雙線路自動識別需用別名解析,不在A 記錄解析。例如,, 解析中, 別名的別名主機為:222199.vip.myedns.com. 網(wǎng)通/電信 202.75.208.119/202.75.217.183 別名主機為:15.aiqiwood.com. 網(wǎng)通/電信 211.155.234.231/211.155.231.172 別名主機為:14.aiqiwood.com. 網(wǎng)通/電信IP :202.75.211.81/211.155.225.31 別名主機為:12.aiqiwood.com. 網(wǎng)通/電信IP :211.155.234.252/211.155.225.27 別名主機為:11.aiqiwood.com. 網(wǎng)通/電信IP :
[color=red]60.190.168.43/221.12.130.235 別名主機為:22432.vip.myedns.com. [/color] 網(wǎng)通/電信IP :60.190.168.49/221.12.130.241 別名主機為:
,# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
IPADDR=218.57.200.242
NETMASK=255.255.255.0
GATEWAY=218.57.200.1
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
PEERDNS=yes
#vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
IPADDR=222.173.254.21
NETMASK=255.255.255.240
GATEWAY=222.173.254.17
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
PEERDNS=yes
# vi /etc/sysconfig/network-scripts/route-eth1
GATEWAY0=218.57.200.1
NETMASK0=255.255.255.0
ADDRESS0=218.57.200.242
# vi /etc/sysconfig/networking/profiles/default/resolv.conf
nameserver 202.102.152.3
nameserver 202.102.128.68
三、配置路由表
# vi /etc/iproute2/rt_tables,增加網(wǎng)通和電信兩個路由表
252 cnc
251 tel
設(shè)置網(wǎng)通的路由表
# ip route add 218.57.200.0/24 via 218.57.200.242 dev eth0 table cnc # ip route add 127.0.0.0/8 dev lo table cnc
# ip route add default via 218.57.200.1 dev eth0 table cnc
,設(shè)置電信的路由表
ip route add 222.173.254.0/24 via 222.173.254.21 dev eth1 table tel
ip route add 127.0.0.0/8 dev lo table tel
ip route add default via 222.173.254.17 dev eth1 table tel
制定策略,讓222.173.254.21的回應(yīng)數(shù)據(jù)包走電信的路由表路由,218.57.200.242的回應(yīng)數(shù)據(jù)包走網(wǎng)通的路由表路由
ip rule add from 222.173.254.21 table tel
ip rule add from 218.57.200.242 table cnc
修改IP 轉(zhuǎn)發(fā)文件
# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
kernel.sysrq = 0
設(shè)置靜態(tài)路由表文件
# vi /etc/sysconfig/static-routes
eth0 net 218.57.200.242 netmask 255.255.255.0 gw 218.57.200.1
eth1 net 222.173.254.21 netmask 255.255.255.240 gw 222.173.254.17
將從兩個WAN 口出去的數(shù)據(jù)包進行IP 偽裝masquerade
# /sbin/modprobe ip_conntrack_ftp
# /sbin/modprobe ip_nat_ftp
# /sbin/iptables -t nat -A postrouting -o eth0 -j masquerade
# /sbin/iptables -t nat -A postrouting -o eth1 -j masquerade
設(shè)置默認網(wǎng)關(guān)為網(wǎng)通
# route add default gw 222.173.254.17
增加出口路由策略,客戶端是網(wǎng)通的走網(wǎng)通線路,其余走電信線路。
ip rule add to 121.16.0.0/13 table cnc
ip rule add to 121.24.0.0/14 table cnc
ip rule add to 121.28.0.0/15 table cnc
ip rule add to 121.30.0.0/16 table cnc
ip rule add to 121.31.0.0/16 table cnc
其余省略...
刷新路由表
ip route flush cache
四、配置DNS
在服務(wù)器上配置自己的DNS 解析,將域名服務(wù)器商處的域名解析指向服務(wù)器。
,這樣,來自網(wǎng)通的查詢,將反饋網(wǎng)站網(wǎng)通的IP ,其余反饋電信的IP 。
配置named.conf
view "cnc" {
match-clients
{121.16.0.0/13;121.24.0.0/14;121.28.0.0/15;121.30.0.0/16;121.31.0.0/16;121.47.0.0/16;121.76.0.0/16;121.77.0.0/16;122.192.0.0/14;122.198.192.0/18;123.199.128.0/20;124.108.40.0/21;124.128.0.0/13;124.160.0.0/16;124.161.0.0/16;124.162.0.0/16;124.163.0.0/16;其余省略...;}
recursion yes;
zone "zhyh.org" {
type master;
file "/var/named/zhyh.org.cnc";
};
};
view "other" {
match-clients { any; };
recursion no;
zone "zhyh.org" {
type master;
file "/var/named/zhyh.org";
};
};
配置zhyh.org.cnc ,對應(yīng)網(wǎng)通IP
$TTL 86400
@ IN SOA zhyh.org. root (
2006111800 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS zhyh.org.
IN A 218.57.200.242
IN MX 10 mail
www IN A 218.57.200.242
ns1 IN A 218.57.200.242
ns IN A 222.173.254.21
mail IN A 218.57.200.242
1 IN PTR localhost.
配置zhyh.org ,對應(yīng)電信IP
$TTL 86400
@ IN SOA zhyh.org. root (
,2006111800 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS zhyh.org.
IN A 222.173.254.21
IN MX 10 mail
www IN A 222.173.254.21
ns IN A 222.173.254.21
ns1 IN A 218.57.200.242
mail IN A 222.173.254.21
1 IN PTR localhost.
配置222.173.254.zone 、218.57.200.zone 做反向解析;
$TTL 86400
@ IN SOA zhyh.org. root.zhyh.org. (
2006111813
3600
7200
3600000
86400 )
IN NS localhost. 242 IN PTR ns1.zhyh.org.
242 IN PTR mail.zhyh.org.
五、配置apache ,做好虛擬主機設(shè)置
# vi /usr/local/apache/conf/httpd.conf
NameVirtualHost 218.57.200.242:80
NameVirtualHost 222.173.254.21:80
ServerName xxx.com
DocumentRoot /www/html/
ServerAdmin [url=mailto:webmaster@xxx.com]webmaster@xxx.com[/url]ErrorLog logs/zhyh.org-error_log
DocumentRoot /var/www/html/zhyh.org ErrorLog logs/zhyh.org-error_log
CustomLog "|/usr/local/sbin/cronolog /var/log/httpd/zhyh.org-access_log.Ymd" combined
,