1.ikeʵ?现源?Դ??
2.WireGuard 教程:使用 DNS-SD 进行 NAT-to-NAT 穿透
ikeʵ??Դ??
第一,首先可以肯定的现源是,你的电脑之所以会出现这么多的毛病,都是现源由于那个可移动硬盘所引起的。所以,现源可以确定你的现源系统并米什么问题。。现源菠菜gpk源码下载。现源
至于你说的现源‘桌面很干净上面一个图标也没有’,这很可能是现源因为那些蠕虫病毒已经破坏了系统文件夹里的explorer.exe。“然后所有和网络有关的现源exe文件如qq、rtx(bqq)、现源飞信等都打不开了,现源接着用nod杀毒什么也杀不出来”你说的现源这个嘛~应该也是那些病毒更改了系统里面的注册表,导致所有联网的现源程序和杀毒工具都不能运行。这样它才可以肆无忌惮的现源来破坏你系统里面的文件。这很有可能就是你杀毒不够彻底,米能杀死所有的毒吧。本人觉得,诺顿并不怎么好的。建议你还是用卡巴或者驱逐舰吧。这驱逐舰也挺厉害的。偶现在用的就是驱逐舰。。。。
第二,conime.exe 这个进程并不是什么病毒,所以你米必要去关注它咯。当然如果有很多和它相同名字的进程,那肯定就是病毒了。下面给你介绍一下这个进程的一些基本情况吧。
conime - conime.exe - 进程信息
进程文件: conime 或者 conime.exe
进程名称: conime
描述:
conime.exe是输入法编辑器相关程序。注意:conime.exe同时可能是一个bfghost1.0远程控制后门程序。此程序允许攻击者访问你的计算机,窃取密码和个人数据。建议立即删除此进程。
出品者: 微软
属于: Microsoft
系统进程: 否
后台程序: 否
使用网络: 否
硬件相关: 否
常见错误: 未知N/A
内存使用: 未知N/A
安全等级 (0-5): 4
间谍软件: 否
广告软件: 否
病毒: 否
木马: 否
--------------------------------------
conime.exe进程说明:conime.exe是输入法编辑器,允许用户使用标准键盘就能输入复杂的字符与符号! conime.exe同时可能是一个bfghost1.0远程控制后门程序。此程序允许攻击者访问你的计算机,窃取密码和个人数据。建议立即删除此进程。”
以前总是不知什么时候这个进程就悄悄启动了,后来才发现往往在运行cmd.exe之后会出现。但是conime.exe并不是cmd.exe的子进程,它的的父进程ID并没有在任务管理器中显示。
conime经常会被病毒利用感染,建议删除。可以用冰遁或手动删除(删除前要结束进程)
不过,删除之后,在CMD就不能输入中文了,如果有这个需要的怎么帮助阅读源码朋友就不要删除它了。
文件位置:
C:\WINDOWS\system\conime.exe
C:\WINDOWS\system\dllcache\conime.exe
第三,下面偶就给你的所有进程作一个仔细的分析吧!!
一、ALG.EXE
进程文件: alg.exe
进程名称: Application Layer Gateway Service
进程类别:其他进程
英文描述:
alg.exe is a part of the Microsoft Windows operating system. It is a core process for Microsoft Windows Internet Connection sharing and Internet connection firewall. This program is important for the stable and secure running of your computer and should
中文参考:
alg.exe是微软Windows操作系统自带的程序。它用于处理微软Windows网络连接共享和网络连接防火墙。应用程序网关服务,为 Internet 连接共享和 Windows 防火墙提供第三方协议插件的支持。该进程属 Windows 系统服务。这个程序对你系统的正常运行是非常重要的。
出品者:Microsoft Corp.
属于:Microsoft Windows Operating System
如果此文件在C:\windows\alg.exe:
这是一个病毒样本eraseme_.exe 释放到系统中的。
C:\windows\alg.exe偷偷潜入系统后,下次开机时会遇到1-2次蓝屏重启。
特点:
1、C:\windows\alg.exe注册为系统服务,实现启动加载。
2、C:\windows\alg.exe控制winlogon.exe进程。因此,在WINDOWS下无法终止C:\windows\alg.exe进程。
3、在IceSword的“端口”列表中可见C:\windows\alg.exe打开5-6个端口访问网络。
4、C:\windows\alg.exe修改系统文件ftp.exe和tftp.exe。与原系统文件比较,病毒改动后的ftp.exe和tftp.exe文件大小不变,但MD5值均变为df8dca0cbd5beeb0d3b(见附图)。系统原有的正常文件ftp.exe和tftp.exe被改名为backup.ftp和backup.tftp,存放到C:\WINDOWS\system\Microsoft\目录下。
手工杀毒流程:
1、清理注册表:
(1)展开:HKLM\System\CurrentControlSet\Services
删除:Application Layer Gateway Services(指向 C:\windows\alg.exe)
(2)展开:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
将SFCDisable的建值改为dword:
(3)展开:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
删除:"SFCScan"=dword:
(4)展开:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions
删除:"v7b5x2s1i4h3"="//, : PM"
2、重启系统。显示隐藏文件。
3、删除C:\windows\alg.exe。
4、在C:\WINDOWS\system\Microsoft\目录下找到backup.ftp,改名为ftp.exe;找到backup.tftp,改名为tftp.exe。然后,将ftp.exe和tftp.exe拖拽到system文件夹,覆盖被病毒改写过的ftp.exe和tftp.exe。
alg.exe是什么病毒?
正常的alg.exe是windows自带的程序,只是有可能被病毒感染或者被伪装; 字串7
alg - alg.exe - 进程信息
进程文件: alg 或者 alg.exe
进程名称: Application Layer Gateway Service
描述:
alg.exe是微软Windows操作系统自带的程序。它用于处理微软Windows网络连接共享和网络连接防火墙。这个程序对你系统的正常运行是非常重要的。
字串5
C:\windows\alg.exe病毒:
这是一个病毒样本eraseme_.exe(样本来自“剑盟”)释放到系统中的。瑞星今天的病毒库不报。 字串1
C:\windows\alg.exe偷偷潜入系统后,下次开机时会遇到1-2次蓝屏重启。源码阅读使用技巧
字串9
特点:
1、C:\windows\alg.exe注册为系统服务,实现启动加载。
2、C:\windows\alg.exe控制winlogon.exe进程。因此,在WINDOWS下无法终止C:\windows\alg.exe进程。
3、在IceSword的“端口”列表中可见C:\windows\alg.exe打开5-6个端口访问网络。
4、C:\windows\alg.exe修改系统文件ftp.exe和tftp.exe。与原系统文件比较,病毒改动后的ftp.exe和tftp.exe文件大小不变,但MD5值均变为df8dca0cbd5beeb0d3b(见附图)。系统原有的正常文件ftp.exe和tftp.exe被改名为backup.ftp和backup.tftp,存放到C:\WINDOWS\system\Microsoft\目录下。
字串5
手工杀毒流程:
1、清理注册表:
(1)展开:HKLM\System\CurrentControlSet\Services
删除:Application Layer Gateway Services(指向 C:\windows\alg.exe)
字串1
(2)展开:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
将SFCDisable的建值改为dword: 字串8
(3)展开:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
删除:"SFCScan"=dword:
字串6
(4)展开:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions
删除:"v7b5x2s1i4h3"="//, : PM" 字串8
2、重启系统。显示隐藏文件。
3、删除C:\windows\alg.exe。
4、在C:\WINDOWS\system\Microsoft\目录下找到backup.ftp,改名为ftp.exe;找到backup.tftp,改名为tftp.exe。然后,将ftp.exe和tftp.exe拖拽到system文件夹,覆盖被病毒改写过的ftp.exe和tftp.exe.
二、svchost.exe LOCAL SERVICE
svchost.exe NETWORK SERVICE
svchost.exe NETWORK SERVICE
svchost.exe SYSTEM
svchost.exe SYSTEM
这5个进程是安全的。不是病毒。
正常进程里有5个左右的svchost.exe
svchost.exe,是系统必不可少的一个进程,很多服务都会多多少少用到它,svchost本身只是作为服务宿主,并不实现任何服务功能,需要Svchost启动的服务以动态链接库形式实现,在安装这些服务时,把服务的可执行程序指向svchost,启动这些服务时由svchost调用相应服务的动态链接库来启动服务。
不过要注意的是 由于这个程序本身特的殊性,很多木马制造者也盯上了这个文件!
三、System Idle Process进程的作用是在系统空闲的时候分派CPU的时间,它显示的超过%以上的CPU资源并不是指的它占用了这么多CPU资源,恰恰相反,而是表示有%以上的CPU资源空闲了出来,这里的数字越大表示CPU资源越多,数字越小则表示CPU资源紧张。
四、system
进程文件:System
进程名:System
描述:System - 系统 体制 计划
系统里确实有system这个进程,但注意,它并不是system.exe,可能是构造流程源码分析木马伪装而成的,还是先查查木马吧
进程文件:system.exe
进程名称:system.exe
描述:
system.exe是netcontroller木马病毒生成的文件,出现在c:\windows目录下,建议将其删除。但要系统的system进程区分开来。system进程是没有.exe的,其信息可见:
出品者:未知
属于:未知
系统进程:否
后台进程:否
使用网络:是
硬件相关:是
常见错误:未知
内存使用:未知
安全等级:4
间谍软件:否
广告软件:否
病毒:是
木马:是
system:[ 'sistəm ]
n.
1. 体系;系统[C]
2. 制度,体制[C]
3. 现存社会体制[the S]
4. 秩序,规律[U]
5. 方式,方法[C]
6. 身体,全身[the S]
7. 宇宙,世界[the S]
C语库函数
函数名: system
功 能: 发出一个DOS命令
用 法: int system(char *command);
程序例:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
printf("About to spawn command.com and run a DOS command\n");
system("dir");
return 0;
}
五、smss
进程文件: smss or smss.exe
进程名称: Session Manager Subsystem
描述:
smss.exe是微软windows操作系统的一部分。该进程调用对话管理子系统和负责操作你系统的对话。这个程序对你系统的正常运行是非常重要的。注意:smss.exe也可能是win.ladex.a木马。该木马允许攻击者访问你的计算机,窃取密码和个人数据。请注意此进程所在的文件夹,正常的进程应该是在windows的system和servicepackfiles\i下面。
出品者:microsoft corp.
属于:microsoft windows operating system
系统进程:是
后台进程:是
使用网络:否
硬件相关:否
常见错误:未知
内存使用:未知
安全等级:0
间谍软件:否
广告软件:否
病毒:否
木马:否
注意:smss.exe进程属于系统进程,这里提到的木马smss.exe是木马伪装成系统进程
如果系统中出现了不只一个smss.exe进程,而且有的smss.exe路径是"%WINDIR%\SMSS.EXE",那就是中了TrojanClicker.Nogard.a病毒,这是一种Windows下的PE病毒,它采用VB6编写 ,是一个自动访问某站点的木马病毒。该病毒会在注册表中多处添加自己的启动项,还会修改系统文件WIN.INI,并在[WINDOWS]项中加入"RUN" = "%WINDIR%\SMSS.EXE"。手工清除时请先结束病毒进程smss.exe,再删除%WINDIR%下的smss.exe文件,然后清除它在注册表和WIN.INI文件中的相关项即可。
六、csrss - csrss.exe
进程文件: csrss 或者 csrss.exe
进程名称: Microsoft Client/Server Runtime Server Subsystem
描述:
csrss.exe是微软客户端/服务端运行时子系统。该进程管理Windows图形相关任务。这个程序对你系统的正常运行是非常重要的。 注意:csrss.exe也有可能是W.Netsky.AB@mm、W.Webus Trojan、Win.Ladex.a等病毒创建的。该病毒通过Email邮件进行传播,当你打开附件时,即被感染。该蠕虫会在受害者机器上建立SMTP服务,用以自身传播。该病毒允许攻击者访问你的计算机,窃取木马和个人数据。这个进程的安全等级是建议立即进行删除。
Client/Server Runtime Server Subsystem,客户端服务子系统,用以控制Windows图形相关子系统。正常情况下在Windows NT4//XP/系统中只有一个CSRSS.EXE进程,正常位于System文件夹中,若以上系统中出现两个(其中一个位于Windows文件夹中),或在Windows 9X/Me系统中出现该进程,则是jpa分页源码详解感染了Trojan.Gutta或W.Netsky.AB@mm病毒。另外,目前新浪利用了系统漏洞传播的一个类似于病毒的小插件,它会产生名为nmgamex.dll、sinaproc.exe、csrss.exe三个常驻文件,并且在系统启动项中自动加载,在桌面产生一个名为“新浪游戏总动园”的快捷方式,不仅如此,新浪还将Nmgamex.dll文件与系统启动文件rundll.exe进行绑定,并且伪造系统文件csrss.exe,产生一个同名的文件与系统绑定加载到系统启动项内,无法直接关闭系统进程后删除。手工清除方法:先先修改注册表,清除名为启动项:NMGameX.dll、csrss.exe,然后删除System\NMGameX.dll、System\sinaproc.exe和Windows\NMWizardA.exe三个文件,再修改Windows文件夹中的csrss.exe文件为任意一个文件名,从新启动计算机后删除修改过的csrss.exe文件。
七、winlogon.exe
是系统必须的文件,并不是病毒,这个文件的作用就是启动和关闭系统的,但是这个文件一定会在WINDOWS\SYSTEM下,如果出现在别的文件夹下,那可能就是病毒了。
八、Services.exe
进程文件: services 或者 services.exe
进程名称: Windows Service Controller
描述:
services.exe是微软Windows操作系统的一部分。用于管理启动和停止服务。该进程也会处理在计算机启动和关机时运行的服务。这个程序对你系统的正常运行是非常重要的,正常的services.exe应位于%System%文件夹中,也就是在进程里用户名显示为“system”,不过services也可能是W.Randex.R(储存在%systemroot%\system\目录)和Sober.P (储存在%systemroot%\Connection Wizard\Status\目录)木马。该木马允许攻击者访问你的计算机,窃取密码和个人数据。该进程的安全等级是建议立即删除。
九、lsass.exe
是1个系统进程, 文件位于C:\windows\System 目录下. 你看任务管理器进程列表有多于1个lsass.exe, 可以搜索硬盘上所有叫lsass.exe的文件, 除了system目录下那个, 别的都可以删除.
进程文件: lsass or lsass.exe
进程名称: 本地安全权限服务
描 述: 这个本地安全权限服务控制Windows安全机制。管理 IP 安全策略以及启动 ISAKMP/Oakley (IKE) 和 IP 安全驱动程序等。
介 绍:这是一个本地的安全授权服务,并且它会为使用winlogon服务的授权用户生成一个进程。这个进程是通过使用授权的包,例如默认的msgina.dll来执行的。如果授权是成功的,lsass就会产生用户的进入令牌,令牌别使用启动初始的shell。其他的由用户初始化的进程会继承这个令牌的。而windows活动目录远程堆栈溢出漏洞,正是利用LDAP 3搜索请求功能对用户提交请求缺少正确缓冲区边界检查,构建超过个"AND"的请求,并发送给服务器,导致触发堆栈溢出,使Lsass.exe服务崩溃,系统在秒内重新启动。
十、spoolsv.exe
这个是 系统自带的服务,作用是将文件下载到打印机以便斥候打印。如果你的电脑不需要打印功能,可以关闭这个服务。
关闭方法:
我的电脑->管理->服务和应用程序->服务->print spooler
右键,属性,停止,同时启动类型改为禁用 就可以了。
⑾、stormliv.exe
官方说是解码器的更新程序 进入控制面板---管理工具---服务---Contrl Center of Storm Media---禁用 可以禁止随系统启暴风影音的一个进程 运行msconfig,到进程管理里面把那个进程前的对勾取消了就,下次就不在启动了 在你看片的时候它还会自动起来的` 在 控制面板 的 管理工具 中打开 服务 找到Contrl Center of Storm Media 双击 在服务状态下点 停止 在启动类型中选 已禁用 以后再启动系统就不会加载了
⑿、smagent.exe
进程名称:smagent
描述:smagent.exe是analog devices声卡驱动程序。
⒀、TTraveler.exe
QQ自带的浏览器TT的进程
⒁、 ctfmon或ctfmon.exe
进程名称: Alternative User Input Services
描述: 控制Alternative User Input Text Processor (TIP)和Microsoft Office语言条。Ctfmon.exe提供语音识别、手写识别、键盘、翻译和其它用户输入技术的支持。
常见错误: N/A
是否为系统进程: 否
CTFMON.EXE是Office自动加载的文字服务,安装Office XP后,部分输入法变得非常难用,卸载Office XP后,它在控制面板中生成的文字服务仍然存在,任务栏中的输入法也没有恢复。目前,禁止文字服务自动加载的常用方法有三种:
1.从系统配置实用程序(msconfig.exe)里移除CTFMON.EXE,这个方法并不能真正禁用文字服务,因为当启动Office程序时,文字服务还会自动加载。
2.在“开始→运行”中键入“regedit.exe”,打开“注册表编辑器”,展开分支“HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Run”,将CTFMON.EXE项更名为“INTERNAT.EXE”即可。但此方法在启动Office后也会失效。
3.以Windows XP为例介绍第三种方法的操作步骤:首先退出所有的Office 程序,进入“控制面板→添加/删除程序”,选择“Microsoft Office XP”项,点击“更改”;在维护模式对话框里选择“添加或删除功能”,然后点击“下一步”;展开“Office共享功能”,点击“中文可选用户输入方法”项,选择“不安装”,点击“更新”;然后进入“控制面板→区域和语言选项”,进入“语言”选项卡,点击“详细信息”,在已安装服务列表中,将除英语(美国)之外的其他输入法一一删除;最后点击“开始→运行”,键入“Regsvr.exe /U msimtf.dll”注销Msimtf.dll,接着键入“Regsvr.exe /U Msctf.dll”注销Msctf.dll。这种方法效果不错,但是操作太繁琐。
其实笔者还有个简单实用的方法,就是更名。Office自动加载CTFMON.EXE时只能靠文件名来判断哪个程序是它所需要的,所以我们只需将系统目录(如“系统盘符\WINDOWS\System\”)下的CTFMON.EXE更名为INTERNAT.EXE(或者我们想让系统自动加载的其他程序)即可。
==============================
枪毙ctfmon.exe,恢复你的默认输入法!
如果你的win系统装了officeXP或以上版本,它会在你和系统里留下一个可误的ctfmon.exe,这真的是一个恶魔,曾经困扰了无数的网友。今天我决意执起正义之剑,斩妖除魔,还网友一个纯洁的中英文输入空间!
在对它行刑之前,我先来宣读一下他的罪状:
1. 无论你打开什么窗口,总会弹出一个输入法工具体,并且默认是中文输入,非常讨厌。
2. 它替换了原来的区域和输入法设置,并以一个文字服务的设置取而代之,而且不能设置默认的输入法。
3. 结束掉原来的输入法工具进程internat.exe,并令他不能在开机时起动。
4. 将自己放在开机时启动的程序列表中,除非修改注册表,否则无法去除。
5. 像病毒一样有重生能力,当你把ctfmon.exe删了以后,他又会随着Office的启动而重新生成。
6. 当你结束了ctfmon.exe后,经常会出现输入法切换快捷键乱掉的情况。
好,经最高程序员审判庭批准,现对ctfmon.exe执行死行,立即执行!
第一步:右击任务栏空白处,点“任务管理器”。
第二步:找到ctfmon.exe,并终止它。
第三步:在系统目录下的system目录下找到ctfmon.exe,删除掉。
第四步:写一个最简单的api程序(代码见附录),编译后放到ctfmon.exe所在目录,并更名为ctfmon.exe。
第五步:点击“开始”菜单,点击“运行”,输入internat.exe后点击确定。
第六步:重起计算机。
⒂、explorer.exe
是一个系统环境进程
它是控制系统在某个环境下正常运行的进程.
比如,如果把这个进程删除,你将会看到桌面空白一片 所有图标和任务栏都不见了.它就是控制这些能正常工作的进程!
⒃、wuauclt.exe
是Windows XP的自动更新进程.卡巴斯基的主动防御很严格,卡巴报警是因为像wuauclt.exe这些无毒的软件运行时需要注入其它进程,这种行为是入侵行为,因为它未经允许,同时把这些软件定义为风险软件。 风险软件不一定是病毒,几乎%的软件不可能独立运行,都需要其他程序的支持,注入行为不可避免,类似的报警行为还有禁止访问注册表,自行运行浏览器(很多软件安装完之后都会弹出自己的网站)等等。 关闭卡巴斯基的主动防御功能,就可以了....你若想让卡巴斯基的主动防御功能开启,那你就等更新完成了再开启.
⒄、SRCDNoti.exe:
是超级兔子魔法设置相关程序
所在位置:*:\Program Files\Super Rabbit\MagicSet\SRCDNoti.exe(*为你的安装盘)
呵呵。最后还是建议你重装下系统吧。那么多的问题,要是偶,早就烦死了。呵呵
WireGuard 教程:使用 DNS-SD 进行 NAT-to-NAT 穿透
原文链接: fuckcloudnative.io/post...
WireGuard 是由 Jason A. Donenfeld 等人创建的下一代开源 *** 协议,旨在解决许多困扰 IPSec/IKEv2、Open*** 或 L2TP 等其他 *** 协议的问题。 年 1 月 日,WireGuard 正式合并进入 Linux 5.6 内核主线。
利用 WireGuard 我们可以实现很多非常奇妙的功能,比如跨公有云组建 Kubernetes 集群,本地直接访问公有云 Kubernetes 集群中的 Pod IP 和 Service IP,在家中没有公网 IP 的情况下直连家中的设备,等等。
如果你是第一次听说 WireGuard,建议你花点时间看看我之前写的 WireGuard 工作原理。然后可以参考下面两篇文章来快速上手:
如果遇到某些细节不太明白的,再去参考 WireGuard 配置详解。
本文将探讨 WireGuard 使用过程中遇到的一个重大难题:如何使两个位于 NAT 后面(且没有指定公网出口)的客户端之间直接建立连接。
WireGuard 不区分服务端和客户端,大家都是客户端,与自己连接的所有客户端都被称之为Peer。
1. IP 不固定的 Peer
WireGuard 的核心部分是 加密密钥路由(Cryptokey Routing),它的工作原理是将公钥和 IP 地址列表(AllowedIPs)关联起来。每一个网络接口都有一个私钥和一个 Peer 列表,每一个 Peer 都有一个公钥和 IP 地址列表。发送数据时,可以把 IP 地址列表看成路由表;接收数据时,可以把 IP 地址列表看成访问控制列表。
公钥和 IP 地址列表的关联组成了 Peer 的必要配置,从隧道验证的角度看,根本不需要 Peer 具备静态 IP 地址。理论上,如果 Peer 的 IP 地址不同时发生变化,WireGuard 是可以实现 IP 漫游的。
现在回到最初的问题:假设两个 Peer 都在 NAT 后面,且这个 NAT 不受我们控制,无法配置 UDP 端口转发,即无法指定公网出口,要想建立连接,不仅要动态发现 Peer 的 IP 地址,还要发现 Peer 的端口。
找了一圈下来,现有的工具根本无法实现这个需求,本文将致力于不对 WireGuard 源码做任何改动的情况下实现上述需求。
2. 中心辐射型网络拓扑
你可能会问我为什么不使用 中心辐射型(hub-and-spoke)网络拓扑?中心辐射型网络有一个 *** 网关,这个网关通常都有一个静态 IP 地址,其他所有的客户端都需要连接这个 *** 网关,再由网关将流量转发到其他的客户端。假设 Alice 和 Bob 都位于 NAT 后面,那么 Alice 和 Bob 都要和网关建立隧道,然后 Alice 和 Bob 之间就可以通过 *** 网关转发流量来实现相互通信。
其实这个方法是如今大家都在用的方法,已经没什么可说的了,缺点相当明显:
本文想探讨的是Alice 和 Bob 之间直接建立隧道,中心辐射型(hub-and-spoke)网络拓扑是无法做到的。
3. NAT 穿透
要想在Alice 和 Bob 之间直接建立一个 WireGuard 隧道,就需要它们能够穿过挡在它们面前的 NAT。由于 WireGuard 是通过 UDP 来相互通信的,所以理论上 UDP 打洞(UDP hole punching) 是最佳选择。
UDP 打洞(UDP hole punching)利用了这样一个事实:大多数 NAT 在将入站数据包与现有的连接进行匹配时都很宽松。这样就可以重复使用端口状态来打洞,因为 NAT 路由器不会限制只接收来自原始目的地址(信使服务器)的流量,其他客户端的流量也可以接收。
举个例子,假设Alice 向新主机 Carol 发送一个 UDP 数据包,而 Bob 此时通过某种方法获取到了 Alice 的 NAT 在地址转换过程中使用的出站源 IP:Port,Bob 就可以向这个 IP:Port(2.2.2.2:) 发送 UDP 数据包来和 Alice 建立联系。
其实上面讨论的就是完全圆锥型 NAT(Full cone NAT),即一对一(one-to-one)NAT。它具有以下特点:
大部分的 NAT 都是这种 NAT,对于其他少数不常见的 NAT,这种打洞方法有一定的局限性,无法顺利使用。
4. STUN
回到上面的例子,UDP 打洞过程中有几个问题至关重要:
RFC 关于 STUN(Session Traversal Utilities for NAT,NAT会话穿越应用程序)的详细描述中定义了一个协议回答了上面的一部分问题,这是一篇内容很长的 RFC,所以我将尽我所能对其进行总结。先提醒一下,STUN 并不能直接解决上面的问题,它只是个扳手,你还得拿他去打造一个称手的工具:
STUN 本身并不是 NAT 穿透问题的解决方案,它只是定义了一个机制,你可以用这个机制来组建实际的解决方案。 — RFC
STUN(Session Traversal Utilities for NAT,NAT会话穿越应用程序)STUN(Session Traversal Utilities for NAT,NAT会话穿越应用程序)是一种网络协议,它允许位于NAT(或多重NAT)后的客户端找出自己的公网地址,查出自己位于哪种类型的 NAT 之后以及 NAT 为某一个本地端口所绑定的公网端口。这些信息被用来在两个同时处于 NAT 路由器之后的主机之间建立 UDP 通信。该协议由 RFC 定义。
STUN 是一个客户端-服务端协议,在上图的例子中,Alice 是客户端,Carol 是服务端。Alice 向 Carol 发送一个 STUN Binding 请求,当 Binding 请求通过 Alice 的 NAT 时,源 IP:Port 会被重写。当 Carol 收到 Binding 请求后,会将三层和四层的源 IP:Port 复制到 Binding 响应的有效载荷中,并将其发送给 Alice。Binding 响应通过 Alice 的 NAT 转发到内网的 Alice,此时的目标 IP:Port 被重写成了内网地址,但有效载荷保持不变。Alice 收到 Binding 响应后,就会意识到这个 Socket 的公网 IP:Port 是 2.2.2.2:。
然而,STUN 并不是一个完整的解决方案,它只是提供了这么一种机制,让应用程序获取到它的公网 IP:Port,但 STUN 并没有提供具体的方法来向相关方向发出信号。如果要重头编写一个具有 NAT 穿透功能的应用,肯定要利用 STUN 来实现。当然,明智的做法是不修改 WireGuard 的源码,最好是借鉴 STUN 的概念来实现。总之,不管如何,都需要一个拥有静态公网地址的主机来充当信使服务器。
5. NAT 穿透示例
早在 年 8 月...