双栈出击IPv4/IPV6公网访问指南

无心博客
2025-05-26 / 0 评论 / 24 阅读 / 正在检测是否收录...

前言

配置樱花FRP

  1. 创建HTTPS隧道
  • 进入用户中文用户信息 | SakuraFrp界面打开高级用户模式
  • 搜索樱花FRP或者直接点击该链接( 隧道列表 | SakuraFrp )进入樱花FRP的隧道列表并创建隧道
    5cd8e1d0ec59a934343ab379a710a863c4ce3df53044e5972e86590356992b1e.0.PNG
  • 在创建隧道界面选择可建站,并在普通节点选择一个内地的节点
    36e4b2bade5fcdd70c2d1a52e94f55ee395a55e5491ebc515db457eb8593dc00.0.PNG
  • 设置隧道节点,并在隧道自定义设置中写入 proxy_protocol_version=v2
    c3899fd907b34cf48ac5cf9ca7fa5b12ee9b23465b2fb56cf576dbe5dc37b252.0.PNG
    9998a4cbcc252b2214eef69ac7479bee37f3b3782e3d349da04b73dcec4b6211.0.PNG
  1. 服务器安装樱花FRP并启动
  • 完成上述步骤之后樱花FRP服务端的配置就全部完成了,接下来我们需要在自己的服务器上安装樱花FRP,这里我推荐以docker形式安装,这种形式安装起来会十分方便,具体的安装方法可见 SakuraFrp 启动器安装 / 使用指南 | SakuraFrp 帮助文档 或者直接使用来自官方的docker版本安装脚本

    sudo bash -c ". <(curl -sSL https://doc.natfrp.com/launcher.sh)"
    
    # 或者使用 wget
    sudo bash -c ". <(wget -O- https://doc.natfrp.com/launcher.sh)"
  • 使用root用户输入脚本后根据提示即可安装成功,如果不知道访问密室在何处的化可以访问
    用户信息 | SakuraFrp

a075ad8bc50f8c07953edb3e416cde04afae239e3c19519c7b64ab099ec645fa.0.PNG

  • 启动节点隧道
    e88112d94aaa425bc0a751cfd8b61a8809e9c8a6b653e0c27ea0f4f5463ad0c7.0.PNG
  1. 配置1panel服务
  • 打开1panel安装DDNS-GO和OPENRESTY,按照DDNS-GO的要求配置好DNS服务商并回到 隧道列表 | SakuraFrp 复制需要解析到域名的CNAME
    49350a87956404786c8d0b780d057995c77e2b061e21938ad660bf7ecbaf4665.0.PNG
  • 打开DDNS-GO配置IPV4信息,获取IP的方式改为“通过命令获取” ping -c 1 +刚才复制的CNAME 如图所示
    0ed88cdc4cc910c6ef6c33f4bd51f9fa46f999c90fbfbb06d281ff8cedfd8430.0.PNG
  • 配置IPV6信息,获取方式改为“通过接口获取”
    2ac5aa5a8c75fa637308fdd296c8e7b67cb5e7677bfb837f72944c0fdb559ae1.0.PNG

    通过这样配置之后我们的服务器就通过我们绑定的域名暴露到公网了,接下来我们就要开始解决不能获取用户真实IP的问题了。
  • 在1panel内创建网站,并配置启用HTTPS
    861c8035bacf35dcb8c03ac2749543db21624fbbbf398fc842d0ceabc1648c17.0.PNG
  • 点击配置文件,并在 listen 80; listen 443 ssl http2; 后面分别添加proxy_protocol ,最终变为 listen 80 proxy_protocol; listen 443 ssl http2 proxy_protocol; server{}内添加real_ip_header proxy_protocol;real_ip_recursive on;set_real_ip_from 127.0.0.1; 便可完成获取用户真实IP的操作。
    59acfb3f0f4aee10af3ce5d7f3ec8b01e4332d70aa9cf9ad6229e38b97ad38e1.0.PNG

配置文件实例:

server {
    listen 80 proxy_protocol;  #  proxy_protocol添加在listen之后
    listen 443 ssl http2 proxy_protocol; #  proxy_protocol添加在listen之后
    listen [::]:80  ; 
    listen [::]:443 ssl http2  ; 
    server_name xxx.xxxxx.com; 
    index index.php index.html index.htm default.php default.htm default.html; 
    proxy_set_header Host $host; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-Forwarded-Host $server_name; 
    proxy_set_header X-Real-IP $remote_addr; 

 #  添加下面这三行代码到这里
 #  real_ip_header proxy_protocol; #  启用 PROXY 协议支持
 #  real_ip_recursive on; #  递归处理 PROXY 协议中的 IP 地址
 #  set_real_ip_from 127.0.0.1; #  这里的127.0.0.1表示可信的代理服务器 IP 地址
 #  添加上面这三行代码到这里
    
    proxy_http_version 1.1; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection $http_connection; 
    access_log /xxx/sites/xxx.xxx.com/log/access.log main; 
    error_log /xxx/sites/xxx.xxx.com/log/error.log; 
    ......
}

通过上面的过程即可实现本地服务的双栈访问。例如本站就是通过这样的方式实现的,访问速度还是蛮快的吧

0

评论 (0)

取消