• 内网穿透方法汇总


    内网穿透

    1.ddns原理和使用条件

    电信宽带:通过难过光猫拨号,得到的如果是私网的IP,可以通过10000号投诉,从而得到公网IP(浮动IP,每次拨号会分配一个IP,可以通过ddns实现通过域名绑定,每次拨号成功就会和动态的公网IP进行域名绑定)

    移动宽带:通过难过光猫拨号,得到的只能是私网IP(10网段的唯一IP),投诉也不能得到公网IP,因为便宜。(不能使用ddns,只能通过软件来实现,类似聊天软件,登录的时候就是把公网IP和登录的转换端口发送到服务器,别人发消息就会根据nat找到主机)

    ddns使用必须要拨号得到公网IP才行(路由器的拨号得到私网IP,路由器是不能看到对应的公网IP的,因此就不能使用ddns),因此想要简单的通过ddns(动态dns)功能使用openvpn建立vpn是不能实现的,openvpn的服务端必须要有公网的IP,固定的公网IP最好,不固定的动态IP可以通过ddns来实现动态解析。

    ddns原理:ddns部署在路由器中,当路由器中的IP发生变化,及时通过配置的账号和密码(token)调用API去实时更新域名对应的新的IP,做到动态解析域名的效果(注意:ddns只能够对部署设备上配置相关网口实现动态域名解析,比如配置在路由器上,能够对WAN和LAN的IP进行动态解析,不能把路由器连接的主机的IP进行动态解析,针对有公网ipv4,则可以设置ipv4端口转发,从而实现访问到连接路由的机器,而对于ipv6,目前可以在软路由中安装luci-app-socatg 实现ipv6转私网ipv4,前提是要有软路由或者刷openwrt固件的路由,)。

    image-20231009010533700

    2.内网穿透的方法

    1. 拥有固定的公网IP,可以直接进行端口映射或者vpn进行内网穿透

    2. 拨号得到动态公网IP,通过ddns实现动态域名解析,需要注册ddns的服务商得到域名,然后在路由器或者光猫中设置ddns(具体在哪里设置要看光猫的模式和路由器的模式),并进行端口映射,访问域名添加端口就可以到达指定的内网。

    3. 拨号获得动态公网IP,通过ddns实现动态域名解析,需要注册ddns的服务商得到域名,然后在路由器或者光猫中设置ddns(具体在哪里设置要看光猫的模式和路由器的模式),通过部署openvpn服务器,通过openvpn客户端直接访问私网IP就可以直接到到达内网。**(原理是部署openvpn的时候,会在服务器生成证书和自己的IP或者ddns等,openvpn客户端需要根据服务器的证书和IP进行配置,连接openvpn的服务器的时候,验证证书,从而建立加密通道(虚拟的网桥),因为是通讯是加密的,第一次连接客户端的时候会记住转发的路径,后续的通讯都是队IP头加密的,因此每个节点看不到目的IP,然后按照预先定义的路径转发,就直达内网了,此时客户端会有一个虚拟的网卡,IP为openvpn服务器内网网段的IP,和openvnp服务器形成了专用的通道(类似专线),效率高,安全性高)**缺点是自己两边都要部署openvpn服务器才能使用,并且需要公网IP,可以使用第三方的openvpn,自己不需要构建服务器,但是使用的时候还是需要登录客户端,服务器建立两端的虚拟网卡,通过虚拟网桥把两端连在同一个虚拟局域网内。而且对于账号有2-3个连接(一个账号同事允许在2-3台设备登录)限制。

    4. 利用反向代理(lvs nginx haproxy)隐藏了服务器的IP,访问公网,实际数据包发往了私网。

    5. 利用专用的内网穿透软件:ZeroTier ngrok 花生壳等(基本原理的都是类似登录聊天软件一样,访问服务器,把自己的访问路径中的nat转换对应的公网IP+端口信息发到服务器,另一台设备根据公网IP+端口访问局域网设备。核心就是端口映射。)

    因为没有公网IPv4,且基本的内网穿透效果不是很稳定,最终选择了IPv6的方法实现内网穿透

    3.利用IPv6 实现内网穿透(严格来说是利用每个设备的公网IPv6访问)

    运营商分配给家庭宽带的IP4是私网IP且是动态的,但是给的IPv6是公网的动态IP,因此可以直接通过ipv6结合ddns实现直接访问内网。

    windows通过公网IPv6访问共享桌面。

    1.被访问主机开启远程桌面

    image-20231008213518667

    2.获取自己的ipv6地址

    直接调出终端输入ipconfig
    
    这里会出现三个IPv6地址,
    1. 第一个
    这是一个全局单播IPv6地址,用于这个接口在外部网络的通信。它可以被全球其他主机访问,是这个接口的稳定地址。
    2.第二个
    这是一个临时IPv6地址,用于替代上面的全局地址在发起连接时使用,保护主机的隐私。它会定期随机生成,不稳定。
    3. 第三个
    这是一个链路本地地址,用于主机在本地链路范围内的通信。%5表示这是eth5接口上的地址。它只在本地有效,不能用于互联网通信。
    总结一下:
    - 全局地址:用于外部通信,稳定的地址。
    - 临时地址:定期变更,保护隐私。
    - 本地地址:仅本地链路内有效。 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    IPv6地址的补充

    IPv6 临时地址和全局地址作为动态地址,有以下主要区别:
    1. 生命周期不同
    - 临时地址的生命周期很短,通常每天或每周重生成。
    - 全局动态地址的生命周期跟租期相关,可使用较长时间,如数月。
    2. 使用场景不同
    - 临时地址用于隐藏设备真实地址(因为生命周期短,频繁更换,从而隐藏全局地址)。
    - 全局动态地址用于正常的网络通信。
    3. 获取方式不同 
    - 临时地址完全随机生成。
    - 全局动态地址由服务器分配。
    4. 可控性不同
    - 临时地址不可控制,按策略自动生成。
    - 全局动态地址可以通过续租或固定控制。
    5. 可达性不同
    - 临时地址不可直接寻址(利用全局地址找到目标主机,然后具体的通讯是根据系统生成的临时地址进行,这里的寻址指的是客户端选寻找全局IP进入互联网阶段)。
    - 全局动态地址可被直接访问。
    
    IPv6 通过临时地址实现IP地址隐藏的基本机制如下:
    1. 设备会在其IPv6全局单播地址的基础上,随机生成多个临时地址。
    2. 在发起外部连接时,源地址字段使用临时地址,而不是真实的全局地址。
    3. 数据包在传输过程中,源地址会被设备自动替换回真实全局地址。
    4. 对端收到数据包时,只会看到临时地址,而无法看到设备实际的全局地址。
    5. 对端返回的数据包会发回到临时地址。
    6. 设备收到返回的数据包时,再将目标地址从临时地址替换为全局地址。
    7. 这样在整个过程中,对端只能看到临时地址,难以获知设备的实际全局地址。
    8. 临时地址会定期更新,使得地址难以被追踪。
    
    Pv6 地址隐藏的主要目的就是隐藏客户端的地址,以防止用户被追踪或定位。
    而对于服务器来说,采取的隐藏方式则不同:
    1. 客户端需要隐藏源地址,使用临时地址。
    2. 服务器需要公开全局地址,保证可寻址。
    3. 服务器不能使用临时地址,否则客户端无法主动连接。
    4. 服务器通过反向代理等手段隐藏内部实际地址。
    5. 对外只公开必要的全局地址前缀和入口地址。
    所以,您的概括非常准确地总结了IPv6地址隐藏的主要方式:
    - 客户端主要隐藏自己地址。
    - 服务器主要通过反向代理等手段隐藏内部拓扑和实际地址。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    image-20231008213707615

    3.此时可以通过IPv6访问局域网的主机(但是因为是动态的ip,所以要配合ddns服务器进行动态解析)

    直接通过ipv6地址(全局地址或者临时地址)连接远程桌面

    image-20231008232830965

    4.申请注册dns,实现ddns

    1.云解析DNS: 云解析DNS是一种在云计算环境下运行的DNS服务。它通常由云服务提供商提供,用户可以通过云服务提供商的控制面板或API动态地管理域名解析记录。云解析DNS服务通常用于负载均衡、高可用性和域名管理等需求,它不仅可以实现静态的域名解析,还可以实现动态的负载均衡和灵活的域名配置。
    
    2.DDNS(Dynamic Domain Name System): DDNS是一种用于动态IP地址的DNS服务。它通常用于家庭网络或小型企业网络,因为这些网络通常使用的是动态IP地址(由ISP分配的IP地址可能会定期更改)。DDNS服务允许用户将一个动态的IP地址与一个固定的域名相关联,当用户的公共IP地址发生变化时,DDNS服务会自动更新DNS记录,确保域名始终映射到正确的IP地址。DDNS服务通常需要一个客户端软件或者网络设备来定期更新IP地址。
    
    所以,虽然两者都涉及到动态地管理域名解析,但DDNS主要用于解决动态IP地址的问题,而云解析DNS则是一种在云计算环境下提供动态域名解析服务的服务类型。
    
    在路由器中设置ddns,可以选择阿里云的云解析dns,因为云解析dns本身就是动态的dns可以直接使用,
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    ####1.创建域名(实名创建,上传身份正,需要工信部备案)https://wanwang.aliyun.com/domain/1yuan?

    image-20231008230931753

    2.工作台–资源管理–对应的域名资源找到资源,并设置主机域名(次级域名)

    image-20231008231029198

    image-20231008231202957

    3.获取aliyun的accesskey
    1.(管理员账户拥有所有权限,简单但是安全性插)

    image-20231008231343783

    **注意:**刚新建的域名并不会立刻通过难过,等审核通过后域名才能正常访问。

    2.阿里云创建新的账户(专用的ddns账户,更安全,稍微复杂),并授权具体的操作

    image-20231012121458292

    image-20231012121537877

    image-20231012121612461

    image-20231012121922399

    image-20231012123306667

    image-20231012123345745
    在这里插入图片描述

    4.在ImmortalWrt路由器的ddns中填写accesskey和secret,aliyun的服务器以及对应的域名,并通过socatg实现ipv6转局域网ipv4。(https://github.com/big-tooth/luci-app-socatg)

    image-20231018222749858

    image-20231018222317004

    image-20231018222749858

    先安装socat(系统包搜索),再安装socatg(https://github.com/big-tooth/luci-app-socatg)
    image-20231020201526731

    5.访问测试

    windows访问测试

    image-20231008233423857

    手机端访问测试(RD客户端,微软官方软件)

    image-20231020194857781

    image-20231020194951246

    image-20231020195011386

  • 相关阅读:
    IINA for Mac v1.3.5 音视频软件 安装教程(保姆级)
    五万字 | 深入理解Linux内存管理
    【毕业季】研究生学长分享怎样让本科更有意义
    STM32外部复位IC与看门狗冲突,无法复位问题解决方案
    Bash常见快捷键
    java获取全国省市区信息
    【技术推荐】我愿称之为开源界最好用的行为验证码
    Java中判断两个Long类型是否相等
    AMD AFMF不但能用在游戏,也适用于视频
    VEX —— Functions|Transforms and Space
  • 原文地址:https://blog.csdn.net/aa896517050/article/details/133692841