公网IPV6访问家庭设备,实现文件共享
一直有建个自己的服务器的需求,可以文件共享可以建个网址之类的。服务器好安装,但是想要随时随地访问就不行了。
可能会说租个云服务器不就行了吗?贵而且到期之后的数据和搭建的东西还要备份。
于是想IPV6+自己的闲置电脑安装Linux就可以实现。完全免费,文件访问开一个Samba服务即可。
缺点是只能终端有IPV6才能访问,即纯IPV6站点只能使用有IPV6地址的终端访问,IPV4访问不了。
不过手机流量一般是IPV6.手机访问是没问题的。
所需
公网IPV6
闲置机器
域名
理论
IPV6直接访问家庭的设备。ipv6除了fe80开头的链路地址是内网的其他的基本都是公网,链路地址实际上是是机器的mac地址。因为地址一直在变,重新开个机,路由器重启一下,可能就变了。所以需要一个域名来定位自己的IPV6地址。
步骤
获取自己的IPV6地址
家庭网络中一般是猫和路由器配合。
现在(23年)一般家用宽带都开通了IPV6,是否有IPV6全看路由器是否支持IPV6了,而不需要猫的超级管理员账号密码去改桥接。
我的路由器随便买的IP-link的ax3000. 进入路由器界面开启IPV6
在windows下打开cmd终端输入ipconfig,查看是否获取了。
如果有本地ipv6链路地址,没有IPV6地址,路由器也设置,大概率你所在的地方的运营商是没有开IPV6的。 这一步比较看运气,所在的区域很重要,用的运营商也很重要。
验证IPV6地址
如果有了IPV6,可以使用PHPstudy这个软件验证,开启的是否正常。
开启apache服务,这个默认支持IPV6访问,Nginx还需要修改配置文件。
创建网站
点击管理 修改 端口,因为运营商把80端口封了。
浏览器访问,你应该是欢迎界面,我改过主页了。格式 [IPV6_adr]:8080 。注意IPV6出入站规则和防火墙问题。
闲置机器安装Linux
使用ventoy制作一个系统U盘,把ubuntu的镜像放进去即可,进入BIOS启动项选择U盘启动,之后按照提示安装即可。也可以是直接使用Windows系统搭建自己的服务,所谓道之道,非常道。
找个免费域名
百度搜索 阿里域名 腾讯域名 基本上都是新注册首年免费。我用的是阿里的。
域名解析
这里是阿里云,点击右上角控制台进入
左上角三个横
域名
进入点击解析
主机记录,可以@记录可以www记录,一个带www,一个直接域名访问。
AAAA解析,指向一个IPV6地址即可,记录值输入自己此时的IPV6。
域名验证
域名解析生效需要几分钟时间。格式 域名:端口号
服务器上ddns服务
这个定时给域名服务器上报自己的IPV6地址,之后一直访问域名即可了。 主要有这几个
ddns-watchdog
ddns-go
我用的是ddns-go,在服务器上搭建一个go环境,按照git仓库里面的readme搭建即可。
安装go环境--知乎的
在源代码使用 make build 生成本地编译后的 ddns-go 可执行文件。
sudo ./ddns-go -s install
安装服务即可。
然后在服务器上打开172.0.0.1:9876,配置即可。创建自己的AccessKey ID,复制到此处。
设置启用IPV6,关闭IPV4,如图设置,或者看自己情况。写上自己的域名。
成功后右上角的日志会一直有提醒的,
可以配置相关的配置文件,达到自己的满意,具体的看github主页即可。
可以重启服务器和路由器更换IP地址,验证ddns服务是否正常。
安装Samba服务
烂大街了,直接写了个自动化的shell脚本,是Ubuntu系统用的,其他系统自己修改。Samba自身支持IPV6。
#!/bin/bash # 安装 Samba sudo apt update -y sudo apt install -y samba # 备份并配置 Samba sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak sudo tee -a /etc/samba/smb.conf >/dev/null <<EOF [shared_folder] path = /home/shared_folder available = yes valid users = user1,user2 read only = no browseable = yes public = yes writable = yes EOF # 创建共享文件夹 sudo mkdir -p /home/shared_folder # 设置共享文件夹权限 sudo chown nobody:nogroup /home/shared_folder sudo chmod 777 /home/shared_folder # 添加用户并设置密码 users=("user1" "user2") for user in "${users[@]}"; do read -s -p "Enter password for ${user}: " password echo read -s -p "Confirm password for ${user}: " confirm_password echo if [[ "${password}" != "${confirm_password}" ]]; then echo "Passwords do not match. Please try again." exit 1 fi sudo useradd -m "${user}" echo -e "${password}\n${password}" | sudo smbpasswd -s -a "${user}" done # 重启 Samba 服务 sudo systemctl restart smbd.service
此脚本开了两个用户,user1 和 user2 密码自己填。
验证Samba服务
在内网直接验证即可。 文件资源管理器 ,右击我的电脑,映射网络驱动器即可。密码自己设置的自己填。
成功
域名访问
和上步同样的步骤,把ip地址换成域名即可。 之后可以在其他有IPV6的地方的访问了。
手机访问
手机可以看下状态信息有没有IPV6地址,我移动的有可能换个基站就没有IPV6了。
手机使用开源软件cx文件管理器即可。
网络添加新位置即可访问。
通过域名访问的Samba。
优化
服务器有时候会有临时IPV6这个东西可以使用下面的命令去掉。
# 使用sudo去执行 cat >> /etc/sysctl.conf <<EOT net.ipv6.conf.all.use_tempaddr=0 net.ipv6.conf.default.use_tempaddr=0 EOT sysctl -p
通过域名访问自己的服务器
配置/etc/ssh/sshd_config文件即可通过IPV6访问,记得改下端口防止入侵。
完结
现在可以使用手机随时随地访问了家里的文件了,还多了个服务器。 其实不难,主要看心情。