Unix domain socket 又叫 IPC(inter-process communication 进程间通信) socket,用于实现同一主机上的进程间通信。socket 原本是为网络通讯设计的,但后来在 socket 的框架上发展出一种 IPC 机制,就是 UNIX domain socket。虽然网络 socket 也可用于同一台主机的进程间通讯(通过 loopback 地址 127.0.0.1),但是 UNIX domain socket 用于 IPC 更有效率:不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程。这是因为,IPC 机制本质上是可靠的通讯,而网络协议是为不可靠的通讯设计的。

0.2.0之后的版本中,NAP增加了unix_domain_socket插件以实现对Unix domain socket的代理。

如果你还不知道如何使用NAP,务必先阅读: 内网穿透NAP使用教程

通过NAP代理本地Unix domain socket非常简单。

在配置文件中增加一个tcp代理:

[tcp]
plugin = unix_domain_socket
plugin_unix_path = your_unix_domain_socket.sock

plugin固定为unix_domain_socket, plugin_unix_path 为本机 Unix domain socket 文件的路径,比如 docker的 Unix domain socket 通常在 /var/run/docker.sock

启动NAP客户端:

NAP使用unix_domain_socket插件

通过terminal提示的域名即可和Unix domain socket进行通信。