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一样配置即可
写在最后
- 本方案适合有一定计算机常识的同学操作。
- 仅技术交流,不对由此产生的任何损失负责。
- 有什么问题可以留言。
版权声明:本文标题:公网访问一站式解决方案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1766118549a3438978.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论