aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorGravatar zfl9 <zfl9.com@gmail.com> 2023-04-15 20:56:40 +0800
committerGravatar GitHub <noreply@github.com> 2023-04-15 20:56:40 +0800
commitee385fd3e0b6ab27ab8fb49f378c729db912ee79 (patch)
tree70e92dc0e4d09ea684d63d8235f98f5414489acf /README.md
parentupdate makefile (diff)
downloaddns2tcp-ee385fd3e0b6ab27ab8fb49f378c729db912ee79.tar.gz
dns2tcp-ee385fd3e0b6ab27ab8fb49f378c729db912ee79.tar.bz2
dns2tcp-ee385fd3e0b6ab27ab8fb49f378c729db912ee79.zip
Update README.md
Diffstat (limited to 'README.md')
-rw-r--r--README.md36
1 files changed, 24 insertions, 12 deletions
diff --git a/README.md b/README.md
index c644ffc..4dfacc8 100644
--- a/README.md
+++ b/README.md
@@ -1,24 +1,33 @@
# dns2tcp
-一个 DNS 实用工具,用于将 DNS 查询从 UDP 模式转换为 TCP 模式。当然 pdnsd、dnsforwarder 也支持该功能,但是它们通常都有着较为繁杂的配置,而很多时候我们只是需要使用它们的 udp2tcp 功能而已,因此有了 `dns2tcp`。`dns2tcp` 设计的非常简洁以及易用,它不需要任何配置文件,直接在命令行参数中指定一个 **本地 UDP 监听地址** 以及一个 **远程 DNS 服务器地址**(该 DNS 服务器支持 TCP 查询)即可,没有任何多余的功能。
+
+一个 DNS 实用工具,用于将 DNS 查询从 UDP 转为 TCP。当然 pdnsd、dnsforwarder 等工具也能实现该功能,但它们通常都有着较为繁杂的配置,而很多时候我们只是需要使用它们的 udp2tcp 功能而已,因此有了 `dns2tcp`。`dns2tcp` 设计的非常简洁以及易用,它不需要任何配置文件,直接在命令行参数中指定一个 **本地 UDP 监听地址** 以及一个 **远程 DNS 服务器地址**(该 DNS 服务器支持 TCP 查询)即可,没有任何多余的功能。
## 如何编译
+
+> 为了方便使用,[releases](https://github.com/zfl9/dns2tcp/releases) 页面发布了静态链接(musl)二进制。
+
```bash
git clone https://github.com/zfl9/dns2tcp
cd dns2tcp
make && sudo make install
```
-dns2tcp 默认安装到 `/usr/local/bin/dns2tcp`,可安装到其它目录,如 `make install DESTDIR=/opt/local/bin`。<br>
+
+dns2tcp 默认安装到 `/usr/local/bin/dns2tcp`,可安装到其它目录,如 `make install DESTDIR=/opt/local/bin`。
+
交叉编译时只需指定 CC 变量,如 `make CC=aarch64-linux-gnu-gcc`(若报错,请先执行 `make clean`,然后再试)。
## 如何运行
+
```bash
-dns2tcp -L"127.0.0.1#5353" -R"8.8.8.8#53"
+# sh/bash 可以不加引号,zsh 等必须加引号,防止转义'#'字符
+dns2tcp -L "127.0.0.1#5353" -R "8.8.8.8#53"
```
-- `-L` 选项指定本地监听地址,该监听地址接受 UDP 形式的 DNS 查询。
+
+- `-L` 选项指定本地监听地址,该监听地址接受 UDP 协议的 DNS 查询。
- `-R` 选项指定远程 DNS 服务器地址,该 DNS 服务器应支持 TCP 查询。
-- 该例子中,dns2tcp 会将从 `127.0.0.1#5353` 地址收到 dns query 转换为 tcp 形式的 dns query,然后与 `8.8.8.8#53` 服务器建立 TCP 连接,连接建立后,会将此 dns query 发送给 `8.8.8.8#53`,然后等待 `8.8.8.8#53` 的 dns reply,收到完整 packet 后,将其转换为 udp 形式的 dns reply,最后将其发送给与之关联的请求客户端,并释放 TCP 连接及相关数据。
-## 其它参数
+## 全部参数
+
```bash
usage: dns2tcp <-L listen> <-R remote> [-s syncnt] [-6rafvVh]
-L <ip#port> udp listen address, this is required
@@ -33,10 +42,13 @@ usage: dns2tcp <-L listen> <-R remote> [-s syncnt] [-6rafvVh]
-h print help information of dns2tcp and exit
bug report: https://github.com/zfl9/dns2tcp. email: zfl9.com@gmail.com
```
-`-s`:对`TCP`套接字启用`TCP_SYNCNT`选项,其值将影响`TCP`连接超时时间,但其并不等于超时时间,具体请谷歌。<br>
-`-6`:对`UDP`套接字启用`IPV6_V6ONLY`选项,此选项与`IPv4-mapped IPv6 address`有关系,请谷歌以了解详细情况。<br>
-`-r`:对`UDP`套接字启用`SO_REUSEPORT`选项,此选项在`Linux 3.9+`才有(打过相应内核补丁除外),用于多进程负载均衡。<br>
-`-a`:对`TCP`套接字启用`TCP_QUICKACK`选项,此选项在`Linux 2.4.4+`才有,和`TCP_NODELAY`(默认启用)类似但不完全相同。<br>
-`-f`:对`TCP`套接字启用`TCP_FASTOPEN`选项,此特性在`Linux 3.7+`才有,若要`TFO`生效,需配置`net.ipv4.tcp_fastopen`。
-Enjoy it!
+`-s`:对`TCP`套接字设置`TCP_SYNCNT`,其值将影响`TCP`连接超时时间。
+
+`-6`:对`UDP`套接字设置`IPV6_V6ONLY`,建议始终启用,把 v4 和 v6 监听严格区分开。
+
+`-r`:对`UDP`套接字设置`SO_REUSEPORT`,用于多进程负载均衡,Linux 3.9+ 开始可用。
+
+`-a`:对`TCP`套接字设置`TCP_QUICKACK`,与`TCP_NODELAY`(默认启用)类似,详情可谷歌或man文档。
+
+`-f`:对`TCP`套接字设置`TCP_FASTOPEN`,用于客户端 TFO,别忘了配置内核参数`net.ipv4.tcp_fastopen`。