整理 config 样例文件
GameXG opened this issue · 4 comments
目前的格式比较乱,并且没有标注各个参数的默认值。
需要整理一下。
<客户端dns解析纠正功能
.............................................
例子:
PreHttpPorts=[80,]
PreHttpsPorts=[443,]
这个是默认值,对 80 端口的 http 请求启用,对 443 端口的 tls 连接启用。
.............................................
PreHttpPorts=[0,]
PreHttpsPorts=[0,]
关闭这个功能>
和 DnsResolve=true
之间的关系没搞懂:
假如我开启 dns 解析纠正功能:
PreHttpPorts=[80,] PreHttpsPorts=[443,]
然后代理段的 DnsResolve=true
,那么到底是直接用本地解析的结果还是会被 dns 解析“纠正”?这个纠正是否就是通过代理重新解析?
同理,当 dns 解析纠正功能关闭,而 DnsResolve=false
时又会怎么样?
其实主要问题就是: dns 解析纠正
是否就是舍弃本地 dns 解析结果而通过代理去解析?如果不是,它与 DnsResolve=flase
时有何区别?
一般情况下 “客户端dns解析纠正功能” 是不会用到。只有使用 redsocks、Proxifier 等软件强制全局代理时,redsocks 传递给 TcpRoute 的地址是已经解析后的 ip 地址,这时 TcpRoute 无法获得域名,上游代理更无法获得网站域名,TcpRoute 和上有代理都无法执行任何dns解析了;这时开启这个功能 TcpRoute 将会尝试通过读取http、https头来获得目标网站域名,然后将目标网站的ip地址替换成域名继续进行代理操作。
DnsResolve=true 指的是使用 TcpRoute 进行 DNS 解析,主要用到直连线路上面,代理线路建议设置为 false 。
DnsResolve 设置为 true 时目前将会同时使用本地系统的dns及 hosts 文件进行dns解析,如果解析获得多个 ip 地址,会同时连接多个 ip 地址,最终使用最快建立连接的ip。为false时TcpRoute不会处理dns解析,而会直接将域名传递给上游代理,直连一般是系统进行dns解析并连接一个ip地址;远程代理是直接将域名转发给远程代理,由远程代理进行dns解析。
和 PreHttpPorts 的关系是,如果前端是 redsocks 时 redsocks 传递给 TcpRoute 的地址是 ip 地址而不是域名,这时如果不使用“客户端dns解析纠正功能”那么 TcpRoute 无法获得实际域名,所有dns操作都无法生效, ip 地址无法执行 dns 解析。
不过一般的软件不会出现这种情况,chrome 默认会执行远端dns解析,即将域名传递给TcpRoute,firefox 可以开启远端dns解析(很早之前是默认关闭远端dns解析,现在什么情况就不清楚了)。当开启远端dns解析时 TcpRoute 获得的是域名,“客户端dns解析纠正功能” 没有效果。