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

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下号

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