admin 管理员组

文章数量: 1184232

概述

  • 在非局域网环境想要访问家中局域网机器的方案:
  • 方案一:运营商侧开通固定IP,现在一般很少提供给家用宽带,所以文中不提及这种方案
  • 方案二:使用内网穿透
  • 方案三:搭建虚拟局域网
  • 方案四:域名绑定IPV6(推荐)

方案二

使用花生壳等第三方提供的软件,优点是简单方便,但是缺点也很明显:流量较少、带宽较低。也可充值解锁更高的体验

frp内网穿透工具

  • 需要一台公网服务器作为出入口

  • 安装frp的方法网上很多,这里我们提供docker以及docker-compose的方法,没有docker基础的小伙伴可以去我docker文章了解或者使用别的原生安装方式

  • 源码地址

  • docker镜像地址

服务端frps

步骤

  • 任意位置创建文件夹frps
  • 在文件夹下创建文件frps.ini
[common]
# 监听端口
bind_port = 7000
# 面板端口
dashboard_port = 7500
# 登录面板账号设置
dashboard_user = admin
dashboard_pwd = 密码
# 设置http及https协议下代理端口(非重要)
vhost_http_port = 7080
vhost_https_port = 7081

# 身份验证
token = 12345678
  • 运行容器
    服务器镜像:snowdreamtech/frps
    重启:always
    网络模式:host
docker run --restart=always --network host -d -v /usr/local/docker-mapping/frps/frps.ini:/etc/frp/frps.ini --name frps snowdreamtech/frps

本地中转端frpc

  • 任意位置创建文件夹frpc
  • 在文件夹下创建文件frpc.ini
[common]
# server_addr为FRPS服务器IP地址
server_addr = xxx.xxx
# server_port为服务端监听端口,bind_port
server_port = 7000
# 身份验证
token = 12345678

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 2288

# [ssh] 为服务名称,此处设置为,访问frp服务端的2288端口时,等同于通过中转服务器访问127.0.0.1的22端口。
# type 为连接的类型,此处为tcp
# local_ip 为中转客户端实际访问的IP 
# local_port 为目标端口
# remote_port 为远程端口
  • 下载镜像:
docker pull snowdreamtech/frpc
  • 若是报“Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker”,修改dns服务器地址:vim /etc/sysconfig/network-scripts/ifcfg-ens33 这里换成你自己的网卡,然后添加dns地址114,或者8.8.8.8
  • 若还是报错,查看是否有文件vim /etc/resolv.conf,若有也加上(未测试,网上资料这么说)
  • 运行容器
docker run --restart=always --network host -d -v /root/docker-compose/frpc/frpc.ini:/etc/frp/frpc.ini --name frpc snowdreamtech/frpc

服务器镜像:snowdreamtech/frpc
重启:always
网络模式:host

也可以使用docker-compose的方式 安装FRP中转端(推荐)

  • docker-compose.yml
version: '3'
services:
  frpc:
    image: snowdreamtech/frpc
    container_name: frpc
    restart: always
    network_mode: host
    volumes:
    - ./frpc.ini:/etc/frp/frpc.ini
  • 启动容器
docker-compose up -d
  • 参考文章
    https://gitee/fairyworld/natserver/
    https://blog.csdn/qq_38983728/article/details/103595506
    https://blog.csdn/lu1171901273/article/details/122667174
    https://gitee/spoto/natserver(新)

方案三

搭建虚拟局域网,文中介绍组件:Zerotier
目前没有找到能够自行搭建总服务器的办法,都会走官方服务器,网络没有办法得到保证,所以也没有深入去研究,不过对于网络要求没那么高的用户来说也够用

服务端

  • 创建(伪)根服务器ztncui
  • 项目地址:https://github/Jonnyan404/zerotier-planet
docker run --restart=on-failure:3 -d --name ztncui -e HTTP_PORT=4000 -e HTTP_ALL_INTERFACES=yes -e ZTNCUI_PASSWD=mrdoc.fun -p 4000:4000 keynetworks/ztncui
  • 初始账号密码为:admin mrdoc.fun
  • 更改密码后,创建一个网络
  • 网络id
  • 生成内网ip

创建 moon 服务器

  • 项目地址:https://github/jonnyan404/docker-zerotier-moon
  • 创建容器
docker run --name zerotier-moon -d -p 9993:9993 -p 9993:9993/udp -v /usr/local/docker-mapping/zerotier/:/var/lib/zerotier-one jonnyan404/zerotier-moon -4 xxx.xxx.xxx.xxx公网ip
  • 打开公网服务器的9993端口,tcp和udp全部打开
  • 查看moon ID
docker logs zerotier-moon

客户端

windows

  • 官网下载软件
  • 输入网络id
  • 在web管理端同意
  • Windows 客户端加入moon服务器
cd C:\ProgramData\ZeroTier\One
zerotier-cli orbit [moon_id] [moon_id]
  • 查看连接节点
zerotier-cli listpeers

linux

  • 安装
curl -s https://install.zerotier | sudo bash

方案四

这个是目前比较推荐的方案,目前很多设备已经逐步兼容ipv6,且运营商也是免费提供

电脑端

  • 在线测试本机是否支持ipv6,若是下图的结果则说明你的电脑是正常支持ipv6的,若不是则前往网络和共享中心-更改适配器设置-属性-Internet协议版本6(TCP/IPv6)中设置开启

  • 使用ipconfig查看ipv6地址(linux是ifconfig)

  • 此时便可在任意有网络的环境使用这个地址对你的电脑进行访问:[xxxx:8a1e:xxxx:1980:fc3b:9dff:9e1b:xxxx]:端口,若无法访问可能是路由器端禁止了。

路由器端设置

  • 大部分无法访问,还需要对路由器端进行设置
  • 在局域网登录路由器网关配置页面,在路由器底部标签上会有写,例如:192.168.1.1,账号密码标签上有写
  • 每个路由器需要设置的界面也不一样,我这边只需要将 IPv6Session防火墙开关 关掉后重启即可
  • 这里光猫器是用的路由模式,如果你的局域网是基于光猫拓展的路由器,那么需要将光猫设置为桥接模式,让它只负责将光信号转换为电信号,路由的功能则交给后续路由器。如果局域网是基于光猫的,那么就无需操作。
  • 这个时候没有了路由器的拦截,你的电脑已经完全暴露在公网之中,虽然说IPV6数量很大难以被发现,但还是尽量做好电脑的防火墙设置,而且要尽量避免将电脑的IPV6地址告知非信任方。

域名

  • 这里我使用的腾讯云
  • 首先要在域名注册中注册一个域名,有贵的有便宜的,便宜的几块钱一年,看自己的情况选购,记得把自动续费去掉,因为一般第二年嘎嘎贵。
  • 支付成功后需要填写信息审核,这个正常时间段会很快,一小时不到就可以完成
  • 然后进入域名管理或者DNSPOD页面,就能看到自己的域名,点击解析后添加一条记录,主机记录为域名访问的前缀,类型为AAAA代表IPV6,记录值为你的IPV6地址
  • 点击确认,数秒后便可使用你的域名进行访问:demo.你的域名:端口(80等端口一般会被默认禁用,而且IPV6完全暴露公网中,所以尽量避免使用常用端口)

DDNS

  • ipv6默认一般是动态的,重新拨号后地址会变,所以我们需要使用域名+DDNS将访问地址固定
  • 这里我们使用开源项目ddns-go
  • 根据自己的设备配置下载对应的包
  • 下载后解压到自己记得住的位置,然后运行ddns-go程序,会自动打开设置页面,然后填写账号密码后进入(首次进入输入的账号密码则为后续密码,可在页面中修改)
  • 点击 创建 DNSPod Token ,跳转到dnspod页面,点击创建密钥。创建密钥后,将id和token填入DDNS的配置中,然后将IPV4去掉
  • 在IPV6中输入你的域名
  • 点击保存,现在可以重启下路由器测一下是否生效了(DDNS同步会有延迟,需要等待几分钟)
  • 若没有问题,将程序设置为开机自启,则大功告成

LINUX环境

  • 按照自己的设备,下载对应的包
# 将包放在你觉得合适的位置后解压
tar -zxvf ddns-go_6.7.7_linux_x86_64.tar.gz
# 配置成服务,自启动
cd /etc/systemd/system
touch ddns-go.service
vim ddns-go.service
  • ddns-go.service文件内容:
[Unit]
Description=ddns-go

[Service]
ExecStart=nnds-go所在路径

[Install]
WantedBy=multi-user.target
# 服务生效,若非管理员账号则加sudo
systemctl enable ddns-go.service
systemctl start ddns-go.service
  • 此时已经完成,只需要重启电脑测试一下后进入配置页面,像windows一样配置即可

写在最后

  • 本方案适合有一定计算机常识的同学操作。
  • 仅技术交流,不对由此产生的任何损失负责。
  • 有什么问题可以留言。

本文标签: 公网 一站式 解决方案