利用ipv6实现公网ip

Posted 1y0ng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用ipv6实现公网ip相关的知识,希望对你有一定的参考价值。

背景

之前很羡慕别人能够有属于自己的个人博客,自己也想拥有,搭建个人博客首先就要有一台个人服务器,要搭建个人服务器得先有公网ip,然而目前公网IPv4资源紧缺,部分运营商是不会随意将公网ip提供给个人的,这就有些难受了

偶然发现的ipv6

今天在网上冲浪的时候,突然看到一篇文章,文章中提到“十四五”期间IPv6规模部署任务和目标——2025年底县级以上政府网站完成率达到95%以上。说明在不久的未来,ipv6将替代ipv4成为主流,在查询了相关资料以后,发现目前大多数网络设备都是支持ipv6的,并且由于ipv6非常广泛,不需要使用nat去区分内外网,电脑上获取到的ipv6可以直接在公网上访问。

首先我们判断自己的网络有没有ipv6,直接在命令窗口中输入ipconfig

 如果出现ipv6地址,并且开头不是fe80,那么此时你就已经获取到了一个公网ipv6地址了,如果没有,那么请打开路由器配置网页,一般直接在浏览器中输入网关ip就可以了,登录账号以后,打开路由器的ipv6功能,这里用的是小米的路由器,其他的路由器大家可以自行搜索如何开启ipv6

在打开ipv6功能以后再次输入ipconfig查看是否获取到ipv6的地址,也可以通过访问ipv6测试来看自己是否开启ipv6功能

 到这里路由器的相关配置已经结束了,但我们还是无法在公网中访问到ipv6,这是因为营业商的光猫中对ipv6进行了保护,禁止外网访问我们的ipv6地址,所以我们要对光猫进行配置,电脑浏览器访问192.168.1.1,这里要输入超级管理员的账号和密码登录才能使用高级功能,而如何获取超级管理员的账号和密码大家可以自行搜索,这里以电信为例登录

 在安全——防火墙中将防火墙等级改到低关闭启用ipv6 session,

在网络设置中选择INTERNET连接并选择ipv4&ipv6

ipv6配置

在状态——网络侧信息中查看ipv6的地址如下图所示则说明配置成功

 到这里光猫的配置就结束了

然后我们开始测试,这里使用phpstudy开启apache的80服务

 

设置防火墙的入站规则,开启80端口

 通过IPV6版_在线tcping_tcp延迟测试_持续ping_禁ping_tcping_端口延迟测试

对自己的ipv6进行测试

 全都响应了就说明ipv6公网配置成功了

 到这里我们就成功获得了一个能在公网访问的ipv6地址,可以在相关的端口配置服务

(记得之前三大营业商为了防止服务器满天飞而产生的监管困难,将ipv6的80、443、8080等常见端口给封锁了,但刚才测试了说明ipv6的80端口是可用的,大家有时间可以试试其他的端口)

一些小缺陷

1.目前暴露在公网的ipv6并不是所有人都可以访问的,只有自己的设备开启了ipv6功能上网才可以访问(一般手机使用移动数据连接是可以访问ipv6的,如果是连接wifi的话需要配置路由器开启ipv6功能)大家可以访问IPv6地址查询 | IP查询(ipw.cn)进行测试自己的设备是否能访问ipv6

2.当前电脑使用的ipv6地址是临时ipv6地址,每一次重启电脑或者重新联网临时ipv6地址都会刷新

(可以在命令窗口中输入 netsh interface IPv6 set privacy state=disable 关闭)

接下来的目标

1.购买域名,通过域名访问公网ipv6

2.在linux系统中配置ipv6公网地址

 大佬的文章

天降公网ip | 你也许已经有公网IP了_Wuuconix的博客-CSDN博客_wsl 公网ip

IPv6 实用教程 - 腾讯云开发者社区-腾讯云

 如何搭建ipv6服务器,服务器端搭建DDNS服务的方法-小新网

无需公网IP,在家使用IPV6和电信光猫进行内网穿透以搭建远程主机

ipv4的公网IP弄起来还是比较麻烦,所以不管是搭建私人NAS还是远程登陆主机都总是需要进行内网穿透。一般的方案都是用花生壳这类的商用服务,然而这些服务一方面又贵又慢还有流量限制,另一方面还要进行把三代信息都盘出去的实名认证

1G到5G一个月。。。。够干嘛的

现在姑且利用ipv6可以全球ping的特性提供一种实现内网穿透的方法,目前只是用于远程登陆和控制,或许之后可以用于更多的服务器功能。我的方案非常业余而且粗糙,望各位大佬不吝赐教。


基本背景是电信的光猫在安装的时候往往会直接使用 路由模式 而且 直接启用自带的路由器 ,所以要先破解路由器获得路由器的修改权限,将ipv6访问控制的防火墙关闭,把主机的ipv6地址暴露在公网。同时由于这个ipv6地址并不是固定的,使用ddns服务要钱要备案又违背我的初衷,所以使用一个脚本定期将主机的ipv6地址更新到我自己的GitHub仓库里面。


首先登陆这个网站http://test-ipv6.com/检查一下主机接入的网是否支持ipv6:

这里是10/10分,支持

随便找台连接光猫自带的路由器网络的电脑,在浏览器输入192.168.1.1登陆电信光猫自带的路由器:(地址可能因人而异,请以光猫背面信息为准)

你可能会看见这个界面

然而直接登陆这个用户是不够的,因为我们需要进入超级管理员系统才可以修改光猫自带路由器的防火墙。通常来说你可以用这个密码来登陆:

NE7jA%5m

如果这个密码不可用,那么请参考这篇文章来获取路由器超级管理员的密码。

http://www.xgiu.com/dianxin-guangmao-jiemi

获取密码之后,直接将密码输入密码栏然后登陆即可,你应该可以看到这个界面:

说明已经成功进入了光猫的后台,可以对光猫进行任何修改了。

警告:在对光猫进行任何修改之前建议往光猫中插入一枚U盘进行备份,否则自行修改的配置很有可能无法改回来也无法使用。

在这里选择备份

然后将光猫的防火墙的ipv6 session选项关闭:

     记得要保存!!

警告:在这步之后你的局域网相当于暴露在外,有一定的网络安全风险

在这之后,从外部网络应该就可以ping到主机了:

然而这还不够,通常来说ipv6地址也并不是固定的,那么当地址重新分配的时候,就没有办法再远程找到主机了。也就是说可能过上两个月这个地址就连不上了。

对此,采用一种简单粗暴的方法。写一个通过crontab来定时运行的shell脚本,将主机的ipv6地址写入一个文本文件,然后通过git推送到github上面。当ipv6的地址改变时,直接上github看新的主机地址就可以了。

首先随便找个位置建一个文件夹ServerControl,然后在里面初始化一个git仓库:

mkdir ServerControl
cd ServerControl
git init

在git中添加一个远程仓库:

git remote add <仓库名> <仓库的ssh地址>

然后建立一个文件夹RemoteControl,进入里面并且新建脚本GitGetIp.sh和存放ipv6地址的IpConfig.txt

touch README.md
mkdir RemoteControl
cd RemoteControl
touch IpConfig.txt
touch GitGetIp.sh

文件结构大概是这样:

脚本GitGetIp.sh,内容如下:

#!/bin/bash
cd /home/a24/ServerControl/RemoteControl
date >> IpConfig.txt 
ifconfig >> IpConfig.txt
cd /home/a24/ServerControl
git add .
git commit -m "_______New_______"
git push ServerGit

运行这个脚本将会将ifconfig命令获取到的网络地址命令写入IpConfig.txt这个文本文件里,然后将整个文件夹都推到github仓库中。但是,在IP地址变化之后你并不能登入主机运行这个脚本,因此我们需要让这个脚本自动运行。(可以直接用DDNS,但是这个方案的好处是不用申请域名也不用实名认证也不用花钱)

这里使用crontab命令:

crontab -e

然后根据提示随便选择一个文件修改配置,这里以选择第一个文件为例:

在最后一行加上

05 14 * * * sh /home/<你的用户名字>/<脚本路径>/ServerControl/RemoteControl/GitGetIp.sh

这代表在每天的14点05分运行脚本GitGetIp.sh。值得注意的是,如果想要执行bash脚本,命令中的sh不能漏

至此,你应该就可以每天在github你的仓库里看到你的远程主机的ip地址了,

红框里面的就是你的主机的ipv6地址,可以在cmd里以这个地址来进行远程ssh连接

ssh -p22 <用户名>@<ipv6地址>

第一次登陆要输入yes和密码

或者用putty:

常见问题:

外网ping不通:

外网的登陆者先在这里http://test-ipv6.com/检查一下是不是支持ipv6的网:

这是不支持的状况

通常来讲手机网络都是支持ipv6的,因此你可以使用手机热点

然后就可以ping通了:

外网可以ping但是ssh会出现timeout报错:

在调整防火墙这个步骤时可能开启了 ipv6 session防护功能,取消勾选然后重新保存就可以了。

以上是关于利用ipv6实现公网ip的主要内容,如果未能解决你的问题,请参考以下文章

计算机网络基础之笔记二(TCP/IP)

NAT原理总结

python+阿里云实现动态域名解析(DDNS)

python+阿里云实现动态域名解析(DDNS)

服务访问公网 dns解析错误

无需公网IP,在家使用IPV6和电信光猫进行内网穿透以搭建远程主机