配置电信网通双线双IP的解决办法
配置电信网通双线双IP 的解决办法做互联网网站,最头疼的事情之一就是电信和网通的互联互不通了,为了能够让北方网通和南方电信用户都可以快速的访问网站,解决办法就是托管到双线机房。双线机房有两类,一类是通
配置电信网通双线双IP 的解决办法
做互联网网站,最头疼的事情之一就是电信和网通的互联互不通了,为了能够让北方网通和南方电信用户都可以快速的访问网站,解决办法就是托管到双线机房。双线机房有两类,一类是通过BGP 技术实现互联互通,服务器只需要一个网卡一个IP 地址就可以了,由机房进行路由的智能判断,选择合适的路由访问,这样对于网站来说是很方便的,比方说上海移动的怒江机房,上海地面通的自建机房,科技网的机房,但BGP 机房一般带宽都比较少,流量高一些的话可能就没有办法了。另外一种就是双线双IP 的机房,带宽可能更高一些,但是路由配置极其复杂,比方说上海电信的市北机房。
因为和谐的原因,JavaEye 网站服务器最近被迫从原来的移动怒江双线机房当中搬了出去,由托管商推荐到了上海市北双线机房,市北双线机房实际上是电信机房,但是从天津网通拉了2G 专线过来,因此服务器需要至少两个网卡,一个网卡接电信网关,一个网卡接网通网关,来实现互联互通。如果多台服务器的话,还需要第3个网卡组建内网进行内网通讯。
对于双线双IP 的服务器来说,要解决两个问题:
一、你的网站用户究竟走那个IP 来访问你的服务器
二、你的网站内容究竟走那个IP 返回给用户
对于第1个问题,可以使用智能DNS 解析来解决,即DNS 服务器判断用户所在IP 地址,如果用户是电信接入,就把服务器的电信IP 解析给他;如果用户是网通接入,就把服务器的网通IP 解析给他。
智能DNS 可以自己基于开源的DNS 软件来定制,不过国内有一个很好的免费智能DNS 服务器提供商:,推荐使用DNSPod 的服务。他就可以实现上述的智能DNS 解析。
对于第2个问题,则需要在服务器上面配置路由规则,来决定究竟如何处理数据的返回路径问题。
1、填写静态路由表
因为服务器有两个IP ,分别在不同的网段,你使用电信IP 的网关做路由,那么网通的IP 地址用户压根就访问不到,反之亦然。目前流行的解决办法,就是使用电信网关做默认的路由,然后自己手工填写所有网通IP 地址段的路由规则。这个办法可以Google 搜索到一大把,不展开了。
这种办法的缺点是添加规则太多太麻烦,而且难免挂一漏万,如果你漏了一些网段,那这些网段的用户就访问不了你的网站了。况且网段地址的分布总是在不断变化的,你还必须定期更新路由表。
2、根据用户访问进来的路径设定动态路由
就是说如果用户是通过电信IP 地址访问过来的话,那么使用电信网关做路由,返回内容走电信网关;如果用户通过网通IP 地址访问过来的话,那么使用网通网关做路由,返回内容走网通的网关,这样就不必那么麻烦的维护路由表了。以JavaEye 网站服务器为例,具体配置方法如下:
JavaEye 网站服务器电信IP :114.80.66.199,电信网关:114.80.66.1
JavaEye 网站服务器网通IP :60.29.231.190,网通网关:60.29.231.1
,1) 默认网关使用电信网关作为路由
在Linux 上面配置默认网关,如果是RedHat ,应该是在/etc/sysconfig/network文件里面添加一行:
GATEWAY=114.80.66.1,如果是SuSE ,应该是在/etc/sysconfig/network/routes里面添加一行:default 114.80.66.1 - - 或者可以直接使用YaST2来配置。
2)添加路由表
修改/etc/iproute2/rt_tables,添加内容:
C 代码

然后手工添加路由规则,在Console 里面执行如下命令:
C 代码

即让从电信IP 过来的请求按照电信路由返回,从网通IP 过来的请求从网通路由返回。这样就搞定了,是不是很简单?这个办法是bobo 同学提供的,感谢他。
3) 把路由规则写入启动脚本
如果服务器重启,或者网络服务重启,上述的路由规则就失效了,所以你需要把上面这段命令写入系统启动脚本和网络启动脚本
如果是RedHat ,系统启动脚本是/etc/rc.d/rc.local
如果是SuSE ,可以自己写一个启动脚本,链接到S99上,比方说/etc/init.d/rc.local
如果是RedHat ,网络启动脚本是/etc/rc.d/init.d/network
如果是SuSE ,网络启动脚本是/etc/init.d/network
,双线双IP 用户智能解析域名别名设置方法
双线双IP 用户智能解析域名别名设置方法 1、在双线服务器中, 您可以选择自动识别, 也可以选择手动识别, 我们送的二级域名在试用时, 连接的为网通IP , 电信用户访问较慢, 所以, 应该用自己的一个域名绑定电信的IP . 2、双线双IP 自动识别: 双线双IP 用户要实现双线路自动识别需用别名解析,不在A 记录解析。例如,, 解析中, 别名的别名主机为:222199.vip.myedns.com. 网通/电信 202.75.208.119/202.75.217.183 别名主机为:15.aiqiwood.com. 网通/电信 211.155.234.231/211.155.231.172 别名主机为:14.aiqiwood.com. 网通/电信IP :202.75.211.81/211.155.225.31 别名主机为:12.aiqiwood.com. 网通/电信IP :211.155.234.252/211.155.225.27 别名主机为:11.aiqiwood.com. 网通/电信IP :
[color=red]60.190.168.43/221.12.130.235 别名主机为:22432.vip.myedns.com. [/color] 网通/电信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,增加网通和电信两个路由表
252 cnc
251 tel
设置网通的路由表
# 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
,设置电信的路由表
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的回应数据包走电信的路由表路由,218.57.200.242的回应数据包走网通的路由表路由
ip rule add from 222.173.254.21 table tel
ip rule add from 218.57.200.242 table cnc
修改IP 转发文件
# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
kernel.sysrq = 0
设置静态路由表文件
# 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 口出去的数据包进行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
设置默认网关为网通
# route add default gw 222.173.254.17
增加出口路由策略,客户端是网通的走网通线路,其余走电信线路。
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
在服务器上配置自己的DNS 解析,将域名服务器商处的域名解析指向服务器。
,这样,来自网通的查询,将反馈网站网通的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 ,对应网通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 ,对应电信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 ,做好虚拟主机设置
# 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
,