- Published on
家庭网络搭建
- Authors

- Name
- MissTree
家庭服务搭建
想要外网可以访问家庭的服务器,就需要搭建服务器和获取外网可以访问ip。服务器可以使用linux系列的Debian、Ubuntu、centos(经典,但后续没有维护)等系统。ip分为ipv4和ipv6,ipv4是目前最常用的ip地址,但是ipv4数量有限并且在2019年的时候已经分配完了,而且购买一个ipv4需要额外费用。ipv6是国家比较推广的ip地址,目前已经开始普及,电信、移动和联通基本都支持。
光猫桥接
其实光猫桥接和光猫直连没什么区别,只是光猫桥接可以实现光猫和路由器的连接,这样路由器就可以作为光猫的网关,实现光猫和路由器的连接。 建议进行光猫桥接,提高网络性能。
必备:准备一个路由器,一根网线,光猫桥接后就相当于简单的将光信号转化为电信号(数字信号)外加桥接时的配置,光猫之前的全部功能就得到释放。将光猫桥接后,光猫就可以作为路由器的网关,实现光猫和路由器的连接。
首先 通过宽带运营商提供的宽带账号密码登录光猫后台,然后进行光猫桥接设置。或者直接联系宽带运营商进行设置。还可以让宽带师傅帮你设置。
设置的时候注意:
- 要求设置ipv6模式:ipv4+ipv6,否则光猫桥接后路由器无法支持分配公网ipv6,即时路由支持分配ipv6地址。我们需要ipv6地址作为服务器的公网地址。

服务域名
从阿里云、腾讯云、华为云等云厂商购买的服务器,一般会提供一个域名,用于访问服务器。然后再域名的dns解析设置中,添加一条记录,将域名解析到服务器的公网ip地址。这样就可以通过域名访问服务器了。若是没有ipv4地址,就需要将域名解析到服务器的公网ipv6地址。
永久IPV6地址
首先要了解下ISP服务商提供的ipv6服务。

注意:首先路由器支持ipv6地址分配,否则服务器是不会生成ipv6地址。
配置遇到的坑
配置 /etc/network/interfaces 的示例
# 自动启用 enp7s0 接口, enp7s0 为 ip addr show 命令中显示的有线接口名称
auto enp7s0
# IPv4 配置(设置静态本地ip)
iface enp7s0 inet static
address 192.168.3.2
netmask 255.255.255.0
gateway 192.168.3.1
dns-nameservers 8.8.8.8 8.8.4.4
# IPv6 配置(静态或动态)
iface enp7s0 inet6 static
# 使用第一个全局 IPv6 地址
address 2409:xxxx:xxxx:aaf0:80cc:1212:a023:2
netmask 128
# 使用第二个全局 IPv6 地址
address 2409:xxxx:xxxx:aaf0:ed79:74bb:bd6a:8ae9
netmask 64
# 可以只设置一个ipv6地址,也可以设置多个ipv6地址。
# 网关(通过 ip route show default或者 ip -6 route | grep default 获取)
gateway 2409:xxxx:xxxx:aaf0::1
# DNS 服务器(根据你的网络环境填写)
dns-nameservers 2001:4860:4860::8888 2001:4860:4860::8844
# 配置动态 ipv6
iface eth0 inet6 dhcp
# 阿里dns 服务器
dns-nameservers 2400:3200::1 2400:3200:baba::1
# 查看网卡
cat /etc/resolv.conf
# 查看网卡信息
sudo systemctl restart networking 重启网络服务。
注意:如果重启后ipv6地址没有生成,可能是因为没有安装ifupdown工具。
# 确保 ifupdown 工具已安装
sudo apt install ifupdown
# 在重启服务器之前,手动测试配置是否生效:
sudo ifdown enp7s0
sudo ifup enp7s0
ip link set enp7s0 up
sudo systemctl restart networking
# 检查IPv6地址
ip -6 addr show dev enp7s0
# 检查 ufw 是否支持 IPv6
sudo nano /etc/default/ufw
# 放行IPV6流量
IPV6=yes
# SSH 配置支持 IPv6
sudo nano /etc/ssh/sshd_config
# 添加以下内容
AddressFamily inet6
ListenAddress ::
ListenAddress 0.0.0.0
防止临时IPv6地址生成
sudo nano /etc/sysctl.conf
# 添加以下内容 设置ipv6地址和ipv6网关是静态
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.all.use_tempaddr = 0
net.ipv6.conf.default.use_tempaddr = 0
net.ipv6.conf.enp7s0.use_tempaddr = 0
# 禁用接受路由器通告 注意会影响ping ipv6 地址
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.default.accept_ra = 0
net.ipv6.conf.enp7s0.accept_ra = 0
# 禁用自动配置
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.enp7s0.autoconf = 0
# 保存并退出 执行配置
sudo sysctl -p
# 查看ipv6配置
sudo sysctl net.ipv6
# 查看刚刚的配置
sudo sysctl net.ipv6.conf.enp7s0
sudo systemctl restart networking
# 重启服务
sudo reboot
# 允许 HTTP
sudo ufw allow 80/tcp
# 允许 HTTPS
sudo ufw allow 443/tcp
sudo ufw allow 8080/tcp
sudo ufw allow 10086/tcp
# 查看防火墙状态、规则
sudo ufw status verbose
允许 ICMPv6 回显请求(用于 ping6 操作)
sudo ufw allow in icmpv6 type echo-request
385 sudo ufw allow in proto ipv6-icmp
387 sudo apt install tcpdump
388 sudo tcpdump -i enp7s0 icmp6
426 sudo journalctl -xe
history -c # 清除历史记录, 但是不会清除当前终端的历史记录
> ~/.bash_history # 清除历史记录,但是不会清除当前终端的历史记录
rm ~/.bash_history # 清除历史记录,但是不会清除当前终端的历史记录
常见问题
链接超时或出错
- tabby输入局域网ip,显示连接超时:
解决办法:
- 在输入的ip前面加账户名:root@192.168.1.3
- 拔掉路由器电源重新连接:替换路由器可能引起的问题
设置的ipv6地址外网访问无效
设置好固定IPV6地址后,在一些测试网站 http://ipv6-test.ch/、 https://v6.qjcq.net 去测试,发现没问题,但是外网访问无效,就是移动网络 ping IPV6地址无法ping通,或者在阿里域名解析设置好IPV6地址进行生效检测,进行ping测试的时候丢包100%。
思考:
- 在测试网站测试没问题,ISP运营商网络基本没问题,现在基本都提供了IPV6网络地址。
- 路由器也是支持IPV6网络的设置的,部分老旧路由器不支持IPV6设置,但是可以进行路由器刷机,例如刷个openWrt。
- 路由器和电脑的防火墙都是关闭的
后来在百度上搜索到光猫也是需要关闭IPV6防火墙的 
但是还是不行,最后在百度上搜索到了一个解决方案,修改两个光猫配置。

可能是光猫的问题,在桥接后和路由器的DHCP冲突了,需要修改光猫的配置。然后重启下路由器,然后外网访问就可以了。在阿里云的域名生效检测也没有问题。 备注:后来发现路由器的防火墙和服务器防火墙可以不关闭,服务器的防火墙开发对应的web访问端口即可。
后续发现固定ipv6地址后,因为获取的ipv6是动态获取然后设置的。移动这边就会设置时效性。导致域名绑定的ipv6无效。后面无奈的用了ddns-go的动态域名解析方式,ip变化更新解析地址。
ddns-go
ddns-go 文档 安装方式有两种,一种是docker,一种是二进制文件。docker安装相对快捷和方便。 服务器端运行ddns-go要设置开机启动,在启动容器的时候设置 --restart=always
使用方式:
- 打开运行的电脑的ip地址:http://localshot:9876。
- 选择对应的域名解析服务商,上传AccessKey ID和AccessKey Secret。
- 勾选IPV6 ,在Domains添加域名,然后保存就可以自动更新域名解析的ip地址了。

远程电脑修改
服务器放在家里不能再外地随时访问电脑的ddns-go,要用到 nginx 代理端口,要在DNS服务商配置一个子域名代理,因为在外网访问服务器电脑不是直接打开ddns-go的设置页面,而是默认打开登录页面,这时候就会出现404页面(因为是宿主机的登录页是没有配置的,当然也可以自行配置登录页路径)。 docker模式的登录页默认账户是root,密码要在配置里面查找,要执行如下步骤:
- 进入容器:
docker exec -it ddns-go sh - 修改配置文件:
nano /root/.ddns-go_config.yaml,nano 要自行安装apk update、apk add nano- 可以修改账户密码和域名
- 保存配置然后
docker restart ddns-go重启容器

ssh修改
除了上面的配置文件修改,还可以通过ssh远程修改配置文件,修改配置文件后重启容器。
ssh -L 9876:localhost:9876 root@[服务器IP] -p 22
# 这样就可以在本地电脑使用 http://localhost:9876 访问ddns-go的配置页面了