从香港机房引入google/bitbucket路由
首先说这种方法有一个局限性:只适用于非CDN网段的引入,比如Google自己足够大,所以用不到CDN,那在香港解析出来的就是Google在香港自己的AS number,因此不存在CDN干扰的问题。如果在香港解析出来发现是Akamai(a big CDN vendor)的地址,比如解析苹果的地址就会解析出Akamai的地址,那这种情况就不适用了。
环境是3台Juniper路由器,两台在香港hkg1-wan[1-2],一台在北京pek1-mx104-1。
topology:
|pek1-mx104-1 AS38361|--------- |AS 6623 hkg1-wan1 -------------hkg1-wan2 | ---------------| AS 10026 Pacnet router|
背景:北京办公室的DNS可以解析到www.google.com 和 www.bitbucket.org,但是路由不通,被长城firewall给屏蔽了。能解析是因为,DNS的配置文件会依赖美国的DNS服务器上的条目。
思路:
香港那边的公网出口,它在另外一个公网AS number,肯定是全部的公网路由全学过来了,真正的Internet, 那既然已经学过来了,我们要做的就是明确的去标记这些在大陆被禁的路由,然后export给北京的router, 那么在匹配流量定义行为的时候,就是匹配住被禁止的,然后定义一个打标签的行为,这个打标签将通过community:community-value的方式实现,当你的另一个跟大陆AS相连的router向大陆export的时候,使用community列表标记出这些路由,然后特定的向大陆做export。
关于community-value的应用可以参考这个链接,来自Cisco
http://www.cisco.com/c/en/us/support/docs/ip/border-gateway-protocol-bgp/28784-bgp-community.html , 讲的炒鸡棒有木有。
香港的hkg1-wan2 是香港的公网出口,它能学到完整的公网路由,因为它和Pacnet建立的是”全穿透”的BGP邻居,也就是真正的EBGP, 顺便吐槽国内运营商。
hkg1-wan2 上
as followings
[edit protocols bgp group pacnet]
root@hkg1-wan2# show
type external;
import [ import_transit drop-cbs-routes tag-google-routes tag-bitbucket-routes default-accept ]; // 这个地方是个关键的点,学路由的时候,单独标出google和bitbucket家的路由
family inet {
unicast;
}
export default-reject;
peer-as 10026; //10026是太平洋电信的AS number
neighbor 202.147.17.121; //建邻居的点
[edit protocols bgp group pacnet]
root@hkg1-wan2#
当然这些 import后面跟的东西都是 policy-statement, policy-statement 调用“匹配流量”和“定义行为”,“匹配流量”就是 from xxx, “定义行为”就是 then xxx。
那么问题来了,用什么匹配流量呢?尝试去匹配住一个被GFW屏蔽的网站,有很多办法,比如网址、IP地址、但是网址和IP地址都存在各自的短板,网址需要涉及解析,IP地址有可能会换,那么,有一个已经简便的办法是“匹配他家的公网AS number”, 因为这个AS number是基本不会变动的。
第一步:获取到他的AS number, 这个简单,在香港的router上ping 一下他家的网址,DNS指向香港当地ISP提供给你的DNS, 找到公网地址之后,再去http://bgp.he.net/ 这类的网站去看他家的AS number.
root@hkg1-wan2# run ping inet www.google.com
PING www.google.com (74.125.239.50): 56 data bytes
64 bytes from 74.125.239.50: icmp_seq=0 ttl=56 time=153.932 ms
^C
--- www.google.com ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max/stddev = 153.932/153.932/153.932/0.000 ms

然后在router上进行抓取流量,using as-path list
as followings
在 edit policy-options下
as-path google-as-path ".* 15169 .*";
as-path bitbucket-as-path ".* 2914 .*”;
然后调用到policy-statement 下,也是在edit policy-options下
policy-statement tag-bitbucket-routes {
from as-path bitbucket-as-path;
then {
community add CBSI_BITBUCKET;
}
}
policy-statement tag-google-routes {
from as-path google-as-path;
then {
community add CBSI_GOOGLE;
}
}
定义的行为就是打标,目的是在从运营商学习的时候,和在export给大陆的时候,明确的标示出这些流量
在对运营商一端这么写,在edit protocols bgp下
group pacnet {
type external;
import [ import_transit drop-cbs-routes tag-google-routes tag-bitbucket-routes tag-github-routes default-accept ];
family inet {
unicast;
}
export default-reject;
peer-as xxxxx;
neighbor xxxxxxxx;
}
在edit policy-options下这么写
community CBSI_GOOGLE members 6623:6006;
community CBSI_BITBUCKET members 6623:6007;
然后把上面这些“tag”, 手动copy到和大陆AS相连的hkg1-wan1上。然后在export给大陆的时候用,as followings, 当然在export调用的时候,通常还是用policy-statement,所以再写两条policy-statement
hkg1-wan1上
在 edit policy-options 下
policy-statement export_bitbucket {
from community CBSI_BITBUCKET; //这个community 就是从
then accept;
}
policy-statement export_google {
from community CBSI_GOOGLE;
then accept;
}
然后调用到对大陆的那个BGP group, as followings
[edit protocols bgp group cbsi-china]
root@hkg1-wan1# show
type external;
description "CBSI Beijing";
import [ import_cbsi_china default-accept ];
family inet {
unicast;
}
export [ export_local export_internal export_corp export_google export_bitbucket default-reject ];
peer-as 38361;
neighbor xxxxxx; // 博客园牛人太多,还是隐去公网IP的好
[edit protocols bgp group cbsi-china]
root@hkg1-wan1#
这样北京的router在看Google和bitbucket的路由的时候,就可以看到明细的路由了,而不再像针对其他网站一样是走默认路由扔向联通出口,而是走移动专线通往香港机房。
在pek1-mx104-1上
hsun@cn-pek1-mx104-1> ping inet www.google.com
PING www.google.com (216.58.221.132): 56 data bytes
64 bytes from 216.58.221.132: icmp_seq=0 ttl=56 time=60.459 ms
^C
--- www.google.com ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max/stddev = 60.459/60.459/60.459/0.000 ms
hsun@cn-pek1-mx104-1> show route 216.58.221.132
inet.0: 18985 destinations, 27621 routes (18985 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
216.58.221.0/24 *[BGP/170] 5w3d 11:02:35, localpref 100
AS path: 6623 10026 15169 I, validation-state: unverified //
看这个地方,AS path会被更改为,先到6623的香港AS, 再到太平洋电信的10026,再到谷歌家的15169,最后的标示是origin code I 。
> to 216.239.126.244 via ge-0/1/0.0
hsun@cn-pek1-mx104-1>
对比去往其他网站, 如163.com
hsun@cn-pek1-mx104-1> ping www.163.com
PING 163.xdwscache.glb0.lxdns.com (111.202.60.47): 56 data bytes
^C
--- 163.xdwscache.glb0.lxdns.com ping statistics ---
1 packets transmitted, 0 packets received, 100% packet loss
hsun@cn-pek1-mx104-1> show route 111.202.60.47
inet.0: 18900 destinations, 27536 routes (18900 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
0.0.0.0/0 *[BGP/170] 17w5d 09:33:12, MED 0, localpref 100, from 172.22.22.19
AS path: I, validation-state: unverified
> to xxxxxxxx via xe-1/1/0.0 // 此处是联通的公网IP, 也隐去好了
去163.com就是从默认路由去联通。
然后就可以在北京开心的上google和bitbucket了。
从香港机房引入google/bitbucket路由的更多相关文章
- ArcGIS for Flex中引入google map作底图
上篇文章到在ArcGIS View中引入google map,这里讲ArcGIS for Flex中引入google map作底图. 同样道理,以google map作底图,需要编写继承自TiledM ...
- ArcGIS Viewer for Flex中引入google map作底图
在ArcGIS Viewer for Flex开发中,经常需要用到google map作为底图,我们不能通过ArcGIS Viewer for Flex - Application Builder轻易 ...
- ArcGIS Viewer for Flex中引入google map作底图 (转)
在ArcGIS Viewer for Flex开发中,经常需要用到google map作为底图,我们不能通过ArcGIS Viewer for Flex - Application Builder轻易 ...
- WEB引入Google思源黑体
通过Link标签在网页头部引用Google Web Font: 1 <link rel="stylesheet" href="https://fonts.googl ...
- Community Value再理解
其实之前写“从香港机房引入google/bitbucket路由”的时候,对community value的了解还并不深入,对Juniper default BGP export/import poli ...
- 香港,将军澳,TKO,服务器,运维,机房,云清洗
目前香港到大陆速度最快.最稳定线路之一. 线路也是唯一华南华北一样快速的线路,是100%的“双线”,不存在其他香港线路网通访问比电信慢的问题. (香港)将军澳TKO机房网络速度快捷,机房内部环境配有意 ...
- HCNP Routing&Switching之路由引入
前文我们了解了路由控制技术策略路由相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15333139.html:今天我们来聊一聊路由引入技术相关话题: 路 ...
- HCNP Routing&Switching之路由引入导致的问题及解决方案
前文我们了解了路由引入相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15359902.html:今天我们来讨论下由于路由引入所导致的问题以及怎么避免此 ...
- linux route命令的使用详解 添加永久静态路由 tracert traceroute
linux route命令的使用详解 添加永久静态路由 tracert traceroute route -n Linuxroute print Windows traceroute ...
随机推荐
- LeetCode(115):不同的子序列
Hard! 题目描述: 给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数. 一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字 ...
- JSP 指令 脚本元素 表达式 声明
一.page指令 1. 可以使用page指令来控制JSP转换器转换当前JSP页 面的某些方面.例如,可以告诉JSP用于转换隐式对象 out的缓冲器的大小.内容类型,以及需要导入的Java 类型,等等. ...
- Windows 系统共享文件扫描
近年来历次泄露的安全事故(工控安全),其主要原因就是内部网络自身的脆弱性问题.对于内部网络的安全检查是很必要的.传统上使用CMD命令 net view 就可以扫描在线的主机但是,主机设置取消QOS的 ...
- java实现 排序算法(鸡尾酒排序&选择排序&插入排序&二分插入排序)
1.鸡尾酒排序算法 源程序代码: package com.SuanFa; public class Cocktial { public static void main(String[] arg ...
- python(5):scipy之numpy介绍
python 的scipy 下面的三大库: numpy, matplotlib, pandas scipy 下面还有linalg 等 scipy 中的数据结构主要有三种: ndarray(n维数组), ...
- sass编写高质量的css---(基础语法结构)
一:基础1.Sass:最早也是最成熟的CSS预处理语言2.Less:兼容CSS的最流行的css预处理语言3.Stylus:主要用于node.js社区 二:scss写法1)混入@mixin alert( ...
- Ubuntu16.04安装配置和使用ctags
Ubuntu16.04安装配置和使用ctags by ChrisZZ ctags可以用于在vim中的函数定义跳转.在ubuntu16.04下默认提供的ctags是很老很旧的ctags,快要发霉的版本( ...
- rabbitmq的安装与使用
1.RabbitMQ的安装,rabbitmq为erlang语言开发,所以先安装erlang语言开发包,现在电脑一般都是64位的,所以下载64位的都行了.红色框可以选择版本,箭头选择64位的进行下载.下 ...
- golang 的glide包管理使用技巧教程
安装glide ➜ wemall git:(master) ✗ go get github.com/Masterminds/glide ➜ wemall git:(master) ✗ go insta ...
- C++ 定位new运算符
这里说的定位new运算符,是一种相对于普通的new运算符,可以指定内存地址的运算符,程序直接使用我们提供的地址,不管它是否已经被使用,而且可以看到新值直接覆盖在旧值上面. 定位new运算符直接使用传递 ...