From 467ab7edf1d72a34e587ed19d6def404cc6f9787 Mon Sep 17 00:00:00 2001 From: Hermes-1 Date: Sun, 19 Jul 2026 01:22:08 +0300 Subject: [PATCH] fix: default to udp://1.1.1.1 DNS (DoT fails silently, breaks all proxy connections) --- .dockerignore | 2 ++ Dockerfile | 2 +- README.md | 2 +- config_builder.py | 4 ++-- main.py | 4 ++-- 5 files changed, 8 insertions(+), 6 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..19589f1 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +__pycache__ +.git diff --git a/Dockerfile b/Dockerfile index f0b60ff..485c65b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,5 +6,5 @@ RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates COPY --from=sb-bin /usr/local/bin/sing-box /usr/local/bin/sing-box RUN chmod +x /usr/local/bin/sing-box WORKDIR /src -COPY entrypoint.py . +COPY . . ENTRYPOINT ["python3", "entrypoint.py"] diff --git a/README.md b/README.md index 589d48f..c9f7d83 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Connect to `socks5://localhost:1080`. | `SOCKS_PORT` | no | `1080` | SOCKS5 listen port | | `SOCKS_USER` | no | `""` | Auth username (leave empty to skip auth) | | `SOCKS_PASS` | no | `""` | Auth password | -| `DNS_SERVER` | no | `tls://8.8.8.8` | Upstream DNS resolver address | +| `DNS_SERVER` | no | `udp://1.1.1.1` | Upstream DNS resolver address (insecure UDP by default) | | `PICK_STRATEGY` | no | `first` | Node selection: `first` (default) or `random` | | `LOG_LEVEL` | no | `info` | sing-box log level (`debug`, `warn`, `error`) | diff --git a/config_builder.py b/config_builder.py index 54b9f19..c1a3f7b 100644 --- a/config_builder.py +++ b/config_builder.py @@ -23,7 +23,7 @@ def make_dns_server(addr_str: str) -> Dict[str, Any]: Supports: udp://host:port, tls://host(:port), https://host(:port), bare IP/hostname. Args: - addr_str: DNS server address string (e.g. "tls://8.8.8.8", "udp://1.1.1.1:53"). + addr_str: DNS server address string (e.g. "udp://1.1.1.1", "tls://8.8.8.8"). Returns: Dictionary compatible with sing-box DNS server schema. @@ -56,7 +56,7 @@ def build_singbox_config( socks_port: int = 1080, socks_user: str = "", socks_pass: str = "", - dns_server: str = "tls://8.8.8.8", + dns_server: str = "udp://1.1.1.1", log_level: str = "info", ) -> Dict[str, Any]: """Build a complete sing-box JSON configuration. diff --git a/main.py b/main.py index 3a00acd..75da44c 100644 --- a/main.py +++ b/main.py @@ -56,7 +56,7 @@ def run( socks_port: int = 1080, socks_user: str = "", socks_pass: str = "", - dns_server: str = "tls://8.8.8.8", + dns_server: str = "udp://1.1.1.1", pick_strategy: str = "first", log_level: str = "info", config_file_path: str = "/tmp/.sub2socks.json", @@ -159,7 +159,7 @@ def main() -> None: socks_port=int(os.environ.get("SOCKS_PORT", "1080")), socks_user=os.environ.get("SOCKS_USER", ""), socks_pass=os.environ.get("SOCKS_PASS", ""), - dns_server=os.environ.get("DNS_SERVER", "tls://8.8.8.8"), + dns_server=os.environ.get("DNS_SERVER", "udp://1.1.1.1"), pick_strategy=os.environ.get("PICK_STRATEGY", "first"), log_level=os.environ.get("LOG_LEVEL", "info"), )