From a16fa269e94cc55da81d3f9a1569a321c44997a2 Mon Sep 17 00:00:00 2001 From: Paper-Dragon <2678885646@qq.com> Date: Tue, 2 Jun 2026 14:28:20 +0800 Subject: [PATCH 1/2] =?UTF-8?q?Refactor=20Dockerfile=20directory=20creatio?= =?UTF-8?q?n=20and=20enhance=20UDP=20stream=20handling=20in=20lib.rs=20?= =?UTF-8?q?=EF=BC=8C=20fixed=20=20`--dns=20virtual`=20not=20work=20in=20do?= =?UTF-8?q?cker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 9 ++++----- src/lib.rs | 10 +++++++++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index f7aafdc..559f809 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,11 +25,10 @@ FROM rust:latest AS musl-builder && rustup target add "$ARCH-unknown-linux-musl" \ && cargo build --release --target "$ARCH-unknown-linux-musl" - RUN mkdir /.etc \ - && touch /.etc/resolv.conf \ - && mkdir /.tmp \ - && chmod 777 /.tmp \ - && chmod +t /.tmp + RUN mkdir -p etc tmp \ + && touch etc/resolv.conf \ + && chmod 777 tmp \ + && chmod +t tmp #################################################################################################### ## Alpine image diff --git a/src/lib.rs b/src/lib.rs index b7be42c..88daa3b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -139,7 +139,15 @@ async fn create_tcp_stream(socket_queue: &Option>, peer: Socket async fn create_udp_stream(socket_queue: &Option>, peer: SocketAddr) -> std::io::Result { match &socket_queue { - None => UdpStream::connect(peer).await, + None => { + let bind_addr = match peer { + SocketAddr::V4(_) => SocketAddr::from(([0, 0, 0, 0], 0)), + SocketAddr::V6(_) => SocketAddr::from(([0, 0, 0, 0, 0, 0, 0, 0], 0)), + }; + let socket = UdpSocket::bind(bind_addr).await?; + socket.connect(peer).await?; + UdpStream::from_tokio(socket, peer).await + } Some(queue) => { let socket = queue.recv_udp(peer.ip().into()).await?; socket.connect(peer).await?; From 699fc2e60b464985ea790d2fbb2bc62a7d50bfc3 Mon Sep 17 00:00:00 2001 From: ssrlive <30760636+ssrlive@users.noreply.github.com> Date: Tue, 2 Jun 2026 15:46:53 +0800 Subject: [PATCH 2/2] use UNSPECIFIED --- src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 88daa3b..ade5305 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -141,8 +141,8 @@ async fn create_udp_stream(socket_queue: &Option>, peer: Socket match &socket_queue { None => { let bind_addr = match peer { - SocketAddr::V4(_) => SocketAddr::from(([0, 0, 0, 0], 0)), - SocketAddr::V6(_) => SocketAddr::from(([0, 0, 0, 0, 0, 0, 0, 0], 0)), + SocketAddr::V4(_) => SocketAddr::from((std::net::Ipv4Addr::UNSPECIFIED, 0)), + SocketAddr::V6(_) => SocketAddr::from((std::net::Ipv6Addr::UNSPECIFIED, 0)), }; let socket = UdpSocket::bind(bind_addr).await?; socket.connect(peer).await?;