ASN申请 | 用自己的IP上网是什么体验
ASN是什么
自治系统(Autonomous System),用通俗的语言来形容,就是一个互联网的独立王国,这一个个独立王国互联起来,就组成了互联网(Internet)。
每个王国有自己独立的国号,以区别于别的王国,这个国号用自治系统号ASN(Autonomous System Number),ASN由两个字节组成,理论上取值范围为1-65535,末尾的1024个ASN是私有自治号,用于王国内部的下属郡国使用,不能外泄(类似私有IP,如果不小心外泄,别人也会忽略)
每一个互联网用户都置身于AS内,比如中国电信的AS号为4809,那么中国电信的用户就置身于4809的独立王国,如果用户访问的服务器也是在这个AS内,那双向的流量都在王国里来回溜达。
但如果服务器IP位于中国移动AS内,如何跨运营商访问呢?
运营商之间会使用BGP(Border Gateway Protocol)路由协议来交换各自的lP路由表,AS号就是BGP协议用来辨识邻国的一个身份证,同时在交换的路由表信息里,会附上各自的AS号。
既然中国电信通过BGP学习到中国移动的路由信息,就会把用户的访问请求转发给中国移动的边界路由器,既然IP包进入中国移动的地界,接下来就任由中国移动的设备来处理了,假设顺利到达服务器,回程检查客户IP,发现是电信的IP,就会转发到电信的边界路由器,并到达用户。
我的ASN信息——AS206729
AS206729 Prefixes v6
2401:95c0:f001::/48
AS206729 Peers v6
Rank | Description | IPv6 | Peer |
---|---|---|---|
1 | FranTech Solutions | 2401:95c0:f001::1/128 | AS53667 |
更多详情,前往BGP.TOOLS查看。
如何申请ASN
一般情况下,需要寻找APNIC
或者RIPE
的会员来作为你的LIR
。当然你也可以自己加入APNIC
或者RIPE
,需要每年缴纳费用。
我找的是台湾的一个朋友 Hostinginside LTD(AS9678)
,他作为我的LIR
,申请的是RIPE
。提供信息到签合同到补全信息,最后下号,花了不到一周的时间。APNIC
可能没那么快。
RIPE准备的材料
- 注册
RIPE
账号,新建一些Database
的信息。 - 你的护照照片
- 你在欧洲拥有网络服务的证明(购买的订单截图、机房地址和管理员邮箱)
- ISP愿意给你接入BGP的证明
- 两个需要接入的ASN
ASN下号
接入BGP Session(以BuyVM为例,Vultr类似)
- 发
Ticket
告诉客服你的ASN号,客服一般会向该ASN的管理员邮箱发送一串随机字符串,需要在工单中回复,验证你是ASN的持有人。稍后,客服会在面板里面加入你的ASN和你的IP段。
- 在你的VPS上安装
bird
。用于宣告你的IP。 - 修改 /etc/bird/bird6.conf的配置文件
- 修改配置中的 router id 改为自己的IPv4地址
router id 205.121.23.12;
- 在文件的最后添加上
protocol bgp vultr { local as 你的asn(开头不带as); source address 实例的ipv6; import none; export all; graceful restart on; multihop 2; neighbor 2001:19f0:ffff::1 as 64515; #这个是服务器的ip password "在申请广播的时候设置的bgp密码"; }
- 寻找到protocol static(没有的话自己加一个)
protocol static { route [v6前缀] via [实例的IPv6]; #route 2001:2333:2333::/48 via 4096:4096:4096:338:5400:01ff:fecf:596c; }
- 找到protocol direct
protocol direct { interface "dummy*"; import all; }
- 配置虚拟网卡以及ip地址
ip link add dev dummy1 type dummy # 添加虚拟网卡 ip link set dummy1 up ip addr add dev dummy1 [前缀内的任意一个地址] # 添加地址
- 启动bird6
service bird6 restart
- 查看状态
birdc6 show route birdc6 show proto all
- 如果想要开机自启 在
/etc/netplan
新增01.dummy.yaml
network: version: 2 renderer: networkd bridges: dummy0: dhcp4: no dhcp6: no accept-ra: no interfaces: [ ] addresses: - 2401:95c0:f001::1/128 #你的IP
配置XrayR的出站路由
{
"domainStrategy": "IPOnDemand",
"rules": [
{
"type": "field",
"outboundTag": "block",
"ip": [
"geoip:private"
]
},
{
"type": "field",
"outboundTag": "block",
"protocol": [
"bittorrent"
]
},
# 指定域名走我自己的IP
{
"type": "field",
"outboundTag": "bgp_session",
"domain": ["ipv6.ip.sb"]
},
# Netflix和YouTube走我自己的IP
{
"type": "field",
"outboundTag": "bgp_session",
"domain": [
"geosite:netflix",
"geosite:youtube"
]
}
]
}
上网测试
IP.SB
Netflix(解锁台湾NF所有片源)
YouTube(支持Premium TW)
参考文章
本文系作者 @Vincent Young 原创发布在 杨颖涛的独立博客。未经许可,禁止转载。
您好,请问一下"outboundTag": "bgp_session",这里是直接照抄就可以嘛,还是有别的地方可以设置呢?之前照抄了没用,不知道是否有其他的地方需要修改。
我现在已经绑定了一个/128到dummy0了,然后已经可以从外界ping通,但是访问外面仍然是默认的ipv6。服务器也没法用分配的/128地址访问外界
@B4a: 因为服务器访问任何资源的时候,会优先使用默认的IPv6,我找了很多教程,目前没有找到可以切换自己的IPv6优先的方案,但是好在XrayR的配置文件中,可以指定网卡。