视频教程

youtube播放地址:https://youtu.be/Ty0n7AgcX0w
ipinfo查询IP信息:https://ipinfo.io
BGP相关信息:https://bgp.he.net/ip/2a0e:1a84::1
查询节点落地IP:https://b.bulianglin0.workers.dev
路由追踪:https://tools.ipip.net/traceroute.php?v=6

自用专线机场推荐: https://b.880805.xyz
流量中转平台推荐: https://g.880805.xyz
GIA线路VPS推荐: https://w.880805.xyz
vultr新用户送100美金: https://vps.880805.xyz
IP租赁服务提供商: https://s.880805.xyz
相关教程:
专线中转:https://youtu.be/gTfOYuU-29U
节点搭建系列7:https://youtu.be/x6B5JEwXSEg
站群服务器:https://youtu.be/kKb0iNZwb9g

相关指令

安装bird:apt install bird

ipv4

/etc/bird/bird.conf

router id 104.207.141.86;

protocol bgp vultr
{
    local as 4288000333;
    source address 104.207.141.86;
    import none;
    export all;
    graceful restart on;
    multihop 2;
    neighbor 169.254.169.254 as 64515;
    password "vultr123";
}
protocol static
{
    route  198.51.100.0/24 via 104.207.141.86;
}

protocol device
{
    scan time 5;
}
birdc c #重载配置文件
birdc show proto all vultr #查看BGP状态
ip route add local 198.51.100.0/24 dev enp1s0 #添加路由
sysctl net.ipv4.ip_nonlocal_bind=1 #允许套接字绑定非本地地址

ipv6

/etc/bird/bird6.conf

router id 104.207.141.86;

protocol bgp vultr
{
    local as 4288000333;
    source address 2001:19f0:5c01:0c8b:5400:04ff:fed6:8895;
    import none;
    export all;
    graceful restart on;
    multihop 2;
    neighbor 2001:19f0:ffff::1 as 64515;
    password "vultr123";
}
protocol static
{
    route  2a0e:1a84::/32 via 2001:19f0:5c01:0c8b:5400:04ff:fed6:8895;
}

protocol device
{
    scan time 5;
}
birdc6 c #重载配置文件
birdc6 show proto all vultr #查看BGP状态
ip route add local 2a0e:1a84::/32 dev enp1s0 #添加路由
sysctl net.ipv6.ip_nonlocal_bind=1 #允许套接字绑定非本地地址

ndppd

安装ndppd:apt install ndppd

/etc/ndppd.conf

route-ttl 30000

proxy enp1s0{
   router no
   timeout 500
   ttl 30000
   rule 2001:19f0:5c01:c8b::/64{
       static
   }
}

Xray模板

{
  "api": {
    "services": [
      "HandlerService",
      "LoggerService",
      "StatsService"
    ],
    "tag": "api"
  },
  "inbounds": [
    {
      "listen": "127.0.0.1",
      "port": 62789,
      "protocol": "dokodemo-door",
      "settings": {
        "address": "127.0.0.1"
      },
      "tag": "api"
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "settings": {}
    },
    {
      "protocol": "freedom",
      "sendThrough": "2001:19f0:5c01:c8b::/64",
      "settings": {},
      "tag": "randomip"
    },
    {
      "protocol": "blackhole",
      "settings": {},
      "tag": "blocked"
    }
  ],
  "policy": {
    "levels": {
      "0": {
        "handshake": 10,
        "connIdle": 100,
        "uplinkOnly": 2,
        "downlinkOnly": 3,
        "statsUserUplink": true,
        "statsUserDownlink": true,
        "bufferSize": 10240
      }
    },
    "system": {
      "statsInboundDownlink": true,
      "statsInboundUplink": true
    }
  },
  "routing": {
    "rules": [
      {
        "inboundTag": [
          "api"
        ],
        "outboundTag": "api",
        "type": "field"
      },
      {
        "ip": [
          "geoip:private"
        ],
        "outboundTag": "blocked",
        "type": "field"
      },
      {
        "outboundTag": "blocked",
        "protocol": [
          "bittorrent"
        ],
        "type": "field"
      },
      {
        "outboundTag": "randomip",
        "inboundTag": [
          "inbound-51603"
        ],
        "type": "field"
      }
    ]
  },
  "stats": {}
}

视频文稿(忽略)

本期教大家通过BGP广播自己的ip段,实现一台vps拥有无限ip地址的站群服务器,看完就知道什么是原生ip,什么是广播ip,什么又是任播ip
通常情况下你购买的vps只有一个公网ip地址,如果你需要多个ip就得购买多台vps,费钱又费事,有些商家允许你加钱多绑定一两个公网ip,但如果你想要绑定几百个甚至几千个那就不行了,需要用BGP解决

不管你是使用机场节点还是购买vps自己搭建节点,都会经常看到bgp这个词,机场会宣传自己是BGP节点,VPS会宣传自己是BGP线路,我在两年前的节点搭建系列第七节已经详细介绍过bgp,感兴趣的朋友可以回看,为了让大家快速了解相关概念,这里再简单介绍一下,bgp译为边界网关协议,他的主要作用是在不同自治域之间传递路由信息,自治域简称AS,每个自治域都有唯一的编号,简称asn,中国电信和中国联通都有自己的自治域,电信的asn是4134,联通的asn是4837,假设我家办了电信的宽带,接入了电信的网络,我会通过电信分配给我的公网ip3.3.3.3访问互联网,当我访问ipinfo这个网站时,他会检测我的ip地址属于哪个asn,并在asn一栏中显示对应的自治域编号以及宽带运营商等信息

假设你家办了联通的宽带,接入了联通的网络,那么你ip对应的asn就是联通的4837,此时你想和我联机玩游戏,由于电信和联通属于不同的自治域,每个自治域都可以视为一个独立的网络,你可以简单理解为电信和联通是两个不同的局域网,你没法直接访问到我,所以需要将两个网络连接起来,其中用到的路由协议就是BGP,连接之后你就可以将数据发送给我了,整个互联网世界就是通过BGP将所有自治域连接在一起,BGP出问题的话可能导致整个国家断网,可见BGP有多么重要

假设我在vultr这个自治域里买了一台美国的vps,他会给vps分配一个美国的ip地址,我用这台vps搭了节点,那么我通过节点访问ipinfo的时候,它检测到的asn就是vultr的20473,并且显示ip的地理位置在美国,vultr家的vps按小时计费,更换ip比较方便,上手门槛低导致ip被人滥用,很多互联网公司拉黑了他家的ip,比如奈飞就把vultr整个as全都封禁了,作为一名合格的跨境人,当然不能使用这么脏的ip了,有跨境电商需求的用户都希望能找到比较干净的ip防止被平台风控,而很多vps商家或多或少都存在ip被滥用的情况,尤其是比较廉价的VPS,你在购买之前并不清楚分配给你的ip质量如何,这是很多人比较苦恼的问题

为了解决这个问题,有没有可能我自己申请一个asn,然后通过bgp接入其他asn,再租一段ip地址,这样的话我就可以在自己的asn里搭建节点,并给节点分配自己租的ip地址,这样就不用担心ip不干净了,asn也是干净的没有被封禁,并且你想给一台vps分配多少个ip都可以,毕竟这是你的地盘,要实现这个目的的门槛并不高,普通个人身份就可以申请asn,一年也就几百块钱,租用ip地址的话稍微贵一点,一段/48的ipv6地址每个月20刀,一段/24的ipv4地址每个月需要两百刀,并不是我们普通用户能负担的,不过即使你现在不需要BGP也希望你能看下去,会牵扯到很多有意思的内容

asn你可以找提供LIR服务的商家注册,网上有很多,交钱提供个人资料就行了,有些商家还会送一段/48的ipv6地址,如果你觉得麻烦的话也可以不用注册asn,等会再说,ip地址也可以自行寻找提供ip租赁的商家,我这里有一段/32的ipv6地址,是找这个商家嫖来的,这并不是一期广告视频,只是我刚好想做这个内容,秉持着能嫖就不花钱的理念,搜了一下自己的邮箱,看到去年10月份他们给我发过推广邀请,尝试找他们嫖一段ip来做演示,为了防止他们忘记我是干啥的,我还贴心的附上了频道链接,本来还想嫖一段ipv4,他们表示没货了,不过ipv4和ipv6的操作是一样的,所以就给大家演示ipv6,感谢商家提供的ip做演示,有需要的朋友可以进入这个链接找他们购买,有问题可以咨询网站里的在线客服

有了asn和ip地址后,并不意味着我们就能直接接入其他asn了,需要找个地方做ip transit,也就是能让你建立BGP连接的地方,将自己asn里的ip段通过bgp广播出去,transit一般都是要收费的,比如你想接入cn2 gia,那就得花钱找走gia线路的商家给你做transit,然后就可以使用kvm或者OpenVZ之类的虚拟化技术创建VPS做超售奸商了
ip transit也有免费的,比如本期介绍的vultr就提供了免费的transit服务,虽然走不了cn2
gia但好过没有,vultr相信大家都比较熟悉了,很多人的第一个自建节点就是被我这样的affman忽悠买了他家的vps,如果你没有注册过vultr的话可以进入这个链接注册,绑定支付方式之后可以免费试用100美金用于购买vps,有效期为14天

登陆vultr之后先进入network下的bgp页面,现在我们要做的就是将自己的asn通过bgp连接到vultr的asn,点击开始,启用这个选项,如果你有自己的asn,就启用这个选项,然后填入你的asn即可,由于asn会暴露个人身份信息,视频演示我就不启用了,不启用的话vulrt就会给我们分配一个私有asn,操作过程没有什么区别,所以即使你没有asn,租一段ip之后也能直接玩BGP了,设置一个密码,建立BGP连接的时候要用,注意保密,在这里输入你租用的ip段,选择LOA授权文件,授权文件可以找租给你ip的商家获取,这里选择无路由,随便给个描述,点击请求BGP设置,点击start,此时需要向ip的所有者验证ip段是否可以给你用,会发送邮件到这个邮箱去,如果你用的是自己的asn,验证邮件也会发给你注册asn时填写的邮箱,点击发送邮件,此时需要联系商家让他给你通过验证,验证通过之后这里就会显示刚才添加的ip段了

接着你需要创建一台vps用来建立bgp连接,创建非常简单,点击右上角的加号,选择部署新服务器,要想便宜的话选择共享cpu, 然后按你的需要选择一个数据中心,操作系统选择ubuntu22.04,可以选择最低配置,关闭自动备份,ipv6要选中, 最后点击部署就行了

来到compute页面,这是我之前创建的美国vps,系统是ubuntu22.04,这里有个红色的警示符号,提示需要重启机器才能使BGP生效,点击重启服务器,重启之后来到BGP页面,点击这里获取BGP配置,选择这个ipv6配置,需要先给服务器安装bird,建议先使用ufw disable关闭防火墙,使用apt install bird安装bird,安装之后使用vim编辑器打开这个配置文件,将里面的内容清空,把这段配置复制进去,除此之外还要加上这两段,这些用到的代码我会放在视频下方的说明栏,注意这里要改成你租来的ip段,这个就是你vps本身的ipv6地址,保存并退出,接着使用这条指令重载配置文件,然后使用这条指令查看BGP的状态,这里显示Established就表示成功和vultr建立了BGP连接,然后我们会将自己的ip段通过BGP发送给vultr,相当于告诉vultr,如果有人要访问这个ip段,就往我这里路由,这个行为叫做路由宣告,也就是大家常说的ip广播,如果此时我要访问这个ip段,现在只有vultr知道这个ip段在哪,电信还不知道,所以会访问失败,vultr收到路由信息后,会将信息再传递给他的BGP邻居,告诉他们,如果你要访问这个ip段,就可以从我这里过去,以此类推,直到全球的BGP路由都知道怎么到你这个ip段,也就意味着路由收敛完成了,此时我再访问这个ip段,电信就会根据自己的路由规则选择合适的路线将数据发送给我们的自治域

现在只是把ip段广播出去了,我们还需要将ip绑定到某一台具体的vps,网络才能通,你可以绑定某个具体的ip,但我们作为站群服务器,希望将所有ip都绑定到同一台vps上,跟着操作把这个ip段添加到本地路由表,注意这里要改成你的网卡接口名称,通过ip a查看,将其复制到vps上执行,接着再执行这条指令,让套接字支持绑定非本地地址,此时就算是配置好了,访问这个ip段里的任何地址都将访问到这台vps,同时这台vps也可以用ip段里的任何地址访问别人,实现站群服务器的效果
随便ping网段内的地址,没问题,接着从外部ping试试,同样没有问题,任何网段里的地址都将指向你的vps
我刚嫖到这个ip段的时候查询ipinfo,由于没有挂在任何asn上,所以不会显示asn信息,当我将IP广播出去之后,等待48小时左右,现在再次访问ipinfo,输入我们的ip段,可以看到已经有asn信息了,as号是vultr家的20473,如果之前你创建BGP的时候填的是你自己的asn,那么这里将会显示你的asn信息,可以看到vultr的asn类型是hosting,如果你是个人asn,一般情况下类型会显示business,下面的company是ip所有者的信息,也就是ip在哪租的,类型现在变成了business,本来是显示isp,具体原因不明,我想补充的是,这些类型本身都是没有的,你在注册asn的时候也不会让你选择是hosting还是isp类型,ipinfo是一个提供ip数据信息的商业公司,asn类型是他们自己通过一些手段判断该自治域提供什么服务,然后打上对应的标签,有一定的参考价值,但不绝对,需要具体业务具体分析

另外可以看到这里的ip归属地是NL荷兰,而我们vps的机房位置是在美国,这种机房位置和ip归属地不在同一地区的ip被大家称之为广播ip,反之如果机房位置和ip归属地是同一地区,就把它称之为原生ip,这其实是一个错误的概念,如果我在荷兰的vps上进行bgp路由宣告,那我是不是就是原生ip了呢?显然是不对的,多数情况下原生ip和广播ip的称呼只是用来区分能否解锁奈飞之类的流媒体平台,但实际上你要清楚,对很多流媒体平台而言只有两种ip,一种是在黑名单里的ip,另一种是其他ip

而且你如果现在去ipinfo查我这个ip段的归属地,已经变成美国了,因为像ipinfo这些平台是通过traceroute路由跟踪来判断ip归属地,当监测到这个ip会被路由到美国的数据中心,ipinfo就会更新他们的ip数据库,从而显示正确的ip归属地,比如我现在进行路由跟踪,很明显被路由到了vultr美国的数据中心,这里的ip归属地显示荷兰肯定是不对的,还没有更新ip数据库,更新过程是比较漫长的,可能需要十天半个月,我这边是发邮件催了ipinfo,更新也花了三天的时间,现在你在其他平台测试这个ip,可能有些网站还是显示归属地为荷兰,那就是他们没有更新这个ip的归属地信息,如果一个ip段能常年稳定在某个地区的数据中心,那么大多数平台都能获取到ip的正确归属地,如果经常在不同地区的数据中心进行广播,那不同平台检测到的ip归属地就会出现各种地区,这就是为什么明明是美国的vps,奈飞却解锁荷兰地区

另外这个ip本来可以解锁奈飞荷兰地区,由于我没有使用自己的asn,ip相当于直接挂在vultr的asn里,而奈飞把vultr整个asn的所有ip段全都拉黑了,导致这个本来可以解锁的ip段,由于asn的原因也变得不能解锁了,连自制剧都看不了,所以如果你对ip的纯净度有要求,建议还是自己注册一个asn,可以看到流媒体检测这里还有三个不同的地区,检测到了美国与荷兰大家还能理解,但为什么多了个日本东京?

因为vultr除了支持让你的ip在某一个数据中心进行路由宣告,同时也支持在多个数据中心进行宣告,实现类似cloudflare1.1.1.1的anycast任播效果,比如我再创建一台日本东京的vps,进行和美国vps同样的BGP操作,现在日本和美国的vps绑定了同一个ip段,此时我在不同的地区对同一个ip地址进行路由追踪,新加坡就会访问离他近的日本vps,加拿大就会访问离他近的美国vps,所以检测脚本出现了解锁东京地区的流媒体

接下来就可以参考之前讲过的站群服务器教程实现不同端口使用不同的落地ip,由于之前的教程需要先绑定ip才能使用,这次我们换个方法,最新版的xray更新了一个功能,同一个节点,每次连接都可以使用不同的ipv6落地,简直就是爬虫者的福音,据说灵感来着某个姓不的博主

搭建xui面板的过程就直接跳过了,先将xray更新到最新版的1.8.10,接着创建两个节点,随便什么协议都可以,一个节点使用33333端口,一个节点使用44444端口,将其导入到v2rayN中,选中其中一个节点,访问这个网址,这个网址可以看到用的是哪个落地ip访问当前网页,显示了当前vps的ipv6地址,结尾是8895,选中另一个节点,刷新页面,同样还是8895,接着我打算把端口33333的节点改成随机落地ip,这个配置模板我会提供给大家,将这里改成你的ip段,把这里改成你的节点端口,也就是33333,全选复制,进入xui的面板设置,将原来的xray模板替换掉,保存配置,然后重启面板,现在相当于使用33333端口的节点就会使用随机落地ip,切换到33333节点,刷新网页,可以看到ip地址发生了变化,前面32个比特位就是我们ipv6的前缀,后面则是完全随机的,切回44444节点,ip又会固定变成vps原来的ipv6地址8895,再切回来,ip又变成随机ip,结尾是97af,这个在做一些爬虫的话非常方便,当然前提是被爬的网站要支持ipv6,刷新页面,ip没有发生改变,因为这条tcp连接没有断开,开个无痕窗口访问,可以看到结尾就变成另一个随机ip了,每次新的tcp连接都会使用新的随机落地ip

另外由于直连vultr的vps速度比较慢,用他家vps搭建的节点晚高峰肯定会非常卡,而且他家的ip特别容易被阻断连接,建议给节点做中转,可以将速度提升到专线水平,具体操作请参考上期视频

如果你没有租用ip,也可以直接拿本机的ipv6地址玩随机落地,可以看到vps默认提供的ipv6地址是这个,前缀长度为64位,虽然后64位的地址都是你的,但如果现在直接ping的话,由于vps没有绑定这个ipv6地址,外部是无法ping通的,可以看到全都丢包了,需要进行相关设置,前面关于bgp的设置不用管,从执行这两行开始,这里改成你vps的ipv6前缀地址,这里输入你的网卡接口名称,然后复制这两行到vps上执行,接着安装ndp代理工具,创建这个配置文件,将这段配置粘贴上去,注意这里要改成你的ipv6前缀,以及网卡接口名称,保存退出,接着重启ndp代理工具,此时再来ping该前缀下的任何ip地址,就可以通了,说明该前缀下的任何ipv6地址可以正常访问到你的vps,接着还是同样的操作,把xray模板里的ipv6前缀替换掉,全选复制,将xui的模板替换掉,这次我把这里改成44444,也就是使用44444端口的节点访问网站就用随机的落地ip,其它端口的节点保持正常,保存配置并重启面板,切换到44444节点,刷新网页,可以看到前64位是固定的前缀,后面是完全随机的,接着开个无痕窗口使用新的tcp连接来访问,每次都是新的落地ip,如果使用其它端口的节点,就会保持默认的ip,不会使用随机落地

最后修改:2024 年 04 月 19 日 10 : 02 AM