如何为 IPv6 地址配置 tinyproxy 的上游?
以下不起作用。
Upstream "[2001:xxxx:xxx:xx:xxx:xxxx:xxxx:380f]:8888"
更新
我收到以下错误:Unable to parse config file. Not starting.
答案1
上游的正确语法是:
Upstream http "[2001:xxxx:xxx:xx:xxx:xxxx:xxxx:380f]:8888"
你根本就错过了http
。
答案2
我试过
upstream http "[fe80::1]:8888"
但我也收到一个错误:
ERROR: Syntax error on line 157
Unable to parse config file. Not starting.
看起来 tiniyproxy(至少版本 1.11.1)不支持 IPv6 地址。
src/conf.c:
#define IP "((([0-9]{1,3})\\.){3}[0-9]{1,3})"
...
#ifdef UPSTREAM_SUPPORT
STDCONF (upstream,
"(" "(none)" WS STR ")|" \
"(" "(http|socks4|socks5)" WS \
"(" USERNAME /*username*/ ":" PASSWORD /*password*/ "@" ")?"
"(" IP "|" ALNUM ")"
":" INT "(" WS STR ")?" ")", handle_upstream),
#endif
正则表达式#definedIP
仅匹配数字 IPv4 地址。
我修改了 conf.c 以包含 IPv6 地址:
STDCONF (upstream,
"(" "(none)" WS STR ")|" \
"(" "(http|socks4|socks5)" WS \
"(" USERNAME /*username*/ ":" PASSWORD /*password*/ "@" ")?"
"(" IP "|" "\\[" IPV6 "\\]" "|" ALNUM ")"
":" INT "(" WS STR ")?" ")", handle_upstream),
并且我还从配置语句中删除了双引号:
upstream http [fe80::1]:8888
现在,tinyproxy 启动时不会对其配置文件产生任何抱怨。但我没有检查上游连接是否真的有效,或者是否需要其他修复才能使用 IPv6 地址作为上游代理。我的主要怀疑是,我可能需要从数字 IPv6 地址中删除方括号。