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

文章介绍了如何利用IPv6的特性,通过修改光猫路由器设置,关闭防火墙的IPv6session选项,实现内网设备的远程访问。并通过编写脚本结合GitHub自动更新IPv6地址,避免动态IP带来的连接问题,整个过程无需依赖昂贵且有限制的第三方内网穿透服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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防护功能,取消勾选然后重新保存就可以了。

### 如何将程序烧录到STM32F103C8T6最小系统板 #### 准备工作 为了成功地将程序烧录到STM32F103C8T6最小系统板上,需准备以下工具材料: - STM32F103C8T6最小系统板 - ST-Link V2 或者其他兼容的ST-Link调试器/编程器 - USB数据线用于连接计算机与ST-Link设备 - 开发环境(如Keil MDK, IAR Embedded Workbench, STM32CubeIDE) #### 烧录过程 对于STM32系列微控制器而言,通常会把Bootloader放置于`0x8000000`地址处[^1]。然而,在实际应用中,大多数情况下并不直接操作Bootloader而是利用现成的开发工具链来完成整个编译链接以及最终的目标文件生成。 当准备好上述提到的所有必要组件之后,可以按照下面的方法来进行固件上传: 1. 将ST-Link通过Micro USB接口连接至个人电脑,并确保驱动已正确安装; 2. 使用跳帽或者杜邦线将ST-Link上的SWDIO、SWCLK、GND、NRST四个信号端子分别对应接到目标板相同名称的位置上去;如果采用的是四针排母形式,则可以直接插上即可[^2]; 3. 打开所使用的集成开发环境(IDE),加载项目工程并构建得到`.hex`或`.bin`格式的目标二进制映像文件; 4. 启动配套提供的Flash Loader Demonstration软件或者其他第三方flasher应用程序,设置好通信参数后点击“Program”按钮执行刷机动作直至提示顺利完成为止。 值得注意的是,除了官方推荐的方式外还可以借助串口实现在线更新功能,不过这往往涉及到额外的设计考量比如电路布局调整以适应UART协议的要求等复杂情况因此这里不做赘述。 ```cpp // 示例:简单的LED闪烁代码片段适用于STM32F103C8Tx芯片 #include "stm32f1xx_hal.h" int main(void){ HAL_Init(); __HAL_RCC_GPIOA_CLK_ENABLE(); // 使能GPIOA时钟 GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.Pin = GPIO_PIN_5; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA,&GPIO_InitStruct); while (true){ HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5); // 切换PA5引脚电平状态 HAL_Delay(500); // 延迟半秒时间 } } ```
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值