跳转至

基础连接参数

本章节介绍 gonc 最基础的网络连接功能。如果你使用过传统的 netcat,这部分内容会让你倍感亲切。


💻 客户端与服务端模式

gonc 的工作模式取决于是否指定了监听参数。

客户端模式 (Client)

默认情况下,gonc 运行在主动连接模式。

语法:

gonc [选项] <目标主机> <目标端口>

参数 说明 示例
<host> <port> 位置参数目标地址和端口。 gonc 192.168.1.1 80
-remote 指定目标 (可选)如果不希望使用位置参数,可以使用此选项显式指定目标。 gonc -remote 192.168.1.1:80
-local 绑定本地网卡 (可选)如果你有多个IP,可明确使用哪个IP外连。 gonc -local 192.168.1.2:0 -remote 192.168.1.1:80

为什么需要 -remote ?

在编写复杂的 Shell 脚本时,位置参数容易混淆。使用 -remote 可以让命令意图更清晰。例如: gonc -remote baidu.com:443 -tls

服务端模式 (Server)

语法:

gonc -l [端口]
参数 作用 说明
-l 监听模式 (Listen) 开启服务端,绑定本地端口等待连接。
-local 绑定本地地址 格式为 ip:port。如果只指定端口 (如 -l 8080),默认绑定 0.0.0.0。使用 -local 127.0.0.1:8080 可限制只允许本机访问。
-k, -keep-open 保持监听 传统netcat客户端断开后服务端会退出。开启此选项后,服务端会保持运行,等待下一个客户端连接(类似守护进程)。
-U Unix Domain Socket 监听或连接 Unix Socket 文件而非 TCP/UDP 端口。

示例:

客户端断开后,gonc 立即退出。

gonc -l 8080

适合作为服务运行。

gonc -k -l 8080

假如你有个IP是192.168.1.5,可以限定绑定在 192.168.1.5。

gonc -l -local 192.168.1.5:8080


🔄 传输协议控制

控制底层传输协议和 IP 版本。

参数 说明 备注
(默认) TCP 协议 如果不指定 -u,默认为 TCP。
-u UDP 协议 使用无连接的 UDP 传输。
-4 强制 IPv4 DNS 解析和连接建立仅使用 IPv4。
-6 强制 IPv6 DNS 解析和连接建立仅使用 IPv6。
-dns 自定义 DNS 指定 DNS 服务器地址 (如 8.8.8.8:53),绕过系统默认 DNS。
-tls/-tls10~-tls13 自定义 tls版本 支持1.0至1.3
-kcp KCP 协议 使用基于UDP的稳定传输协议
-psk 共享密钥 当配合tls时,psk用于派生证书和身份认证。否则用于加密数据。
-mux -mux-l 多路复用 先建立一个会话,-mux-l在本地监听端口模拟一个入口。

UDP 注意事项

使用 -u 模式时,由于 UDP 是无状态的,gonc 依靠 -udp-timeout (默认 300秒) 来判定空闲的会话何时结束。


🌍 代理支持 (Proxy)

gonc 原生支持通过前置代理连接TCP/UDP目标,也支持通过代理监听TCP端口。

-x 参数详解

语法:

gonc -x "[选项] <proxy_ip>:<port>" <target> <target_port>
  • 支持协议:SOCKS5 (默认), HTTP Connect。
  • 支持加密:代理连接本身支持 TLS 和 PSK 加密。

查看-x的所有子选项(gonc -x "-h"):

gonc -x "-h"
-x Usage: [options] <host:port>
Or:    [options]  <host> <port>

Options:
  -4    Use IPv4 (default is tcp)
  -6    Use IPv6
  -kcp
        KCP over udp
  -psk string
        Pre-shared key for deriving TLS certificate identity (anti-MITM); also key for TCP/KCP encryption
  -tls
        Enable TLS encryption
  -u    UDP socket

Examples:
  -x "-tls -psk randomString <host:port>"

常见用法示例:

-X connect指定HTTP代理协议 连接 Google。

gonc -X connect -x 127.0.0.1:9050 google.com 80

通过本地 Tor 连接 Google。

gonc -x 127.0.0.1:9050 google.com 80

请求代理持续监听8000。如果配合-e ":nc 127.0.0.1 80"相当于把本地的80端口暴露到代理服务器的8000端口上。

gonc -x server-ip:1080 -k -l 8000

连接需要账号密码的 SOCKS5 代理。

gonc -x 192.168.1.1:1080 -auth "user:simplekey123" 10.0.0.1 80

高级用法:如果代理服务器也是 gonc 搭建的加密 SOCKS5 (-e :s5s -tls -psk):

# 这里的 -x 字符串中包含了连接代理所需的 TLS 和 PSK 参数
gonc -x "-tls -psk mykey 1.2.3.4:1080" 10.0.0.5 22

辅助参数 说明
-x2 备用代理仅适用 -p2p 模式,当尝试P2P失败时,自动回退使用的代理地址。
-X 指定代理协议默认为 SOCKS5。可选值:connect (HTTP HTTPS代理)。
-auth 代理认证格式 user:password

📊 输出与日志

参数 说明
-v 详细模式 (Verbose)默认开启。显示连接建立、断开、P2P 打洞进度等日志。如果用于脚本管道,建议关闭或重定向 stderr。
-P / -progress 传输进度条显示实时传输速度和流量统计。在传输文件时非常有用。

效果演示:

$ gonc -P -send bigfile.iso 192.168.1.2 8888
OUT: 45.2 MiB (47392122 bytes), 11.5 MiB/s | 00:00:04