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

20220402OuAhUS

AS206729 Prefixes v6

2401:95c0:f001::/48

AS206729 Peers v6

RankDescriptionIPv6Peer
1FranTech Solutions2401: 95c0: f001:: 1/128AS53667

更多详情,前往 BGP.TOOLS 查看。

如何申请 ASN

一般情况下,需要寻找 APNIC 或者 RIPE 的会员来作为你的 LIR。当然你也可以自己加入 APNIC 或者 RIPE,需要每年缴纳费用。

我找的是台湾的一个朋友 Hostinginside LTD(AS9678),他作为我的 LIR,申请的是 RIPE。提供信息到签合同到补全信息,最后下号,花了不到一周的时间。APNIC 可能没那么快。

RIPE 准备的材料

  • 注册 RIPE 账号,新建一些 Database 的信息。
  • 你的护照照片
  • 你在欧洲拥有网络服务的证明(购买的订单截图、机房地址和管理员邮箱)
  • ISP 愿意给你接入 BGP 的证明
  • 两个需要接入的 ASN

ASN 下号

20220402qbALxU

接入 BGP Session(以 BuyVM 为例,Vultr 类似)

  • Ticket 告诉客服你的 ASN 号,客服一般会向该 ASN 的管理员邮箱发送一串随机字符串,需要在工单中回复,验证你是 ASN 的持有人。稍后,客服会在面板里面加入你的 ASN 和你的 IP 段。

20220402T4JgCU

  • 在你的 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

20220402WVLK3S

Netflix(解锁台湾 NF 所有片源)

20220402MRa9zP

YouTube(支持 Premium TW)

20220402oAFKci

参考文章

年轻人的第一个私人 BGP(二) - 广播你的 IP
IP 广播: 使用 bird 广播(组播)ipv6