The port 53 is already used on windows by some other services
Hi,
I am on windows 10 Family v 22h2 docker desktop 4.21.1 DSP version 3.16.0 https://github.com/mageddo/dns-proxy-server/releases/tag/3.16.0-snapshot
I cannot launch the app via docker or via executable manually. It is because the port 53 is already in use by some windows services https://superuser.com/questions/1633432/why-windows-10-has-a-svchost-process-that-listen-on-port-53 https://answers.microsoft.com/en-us/windows/forum/all/solved-unable-to-stop-internet-connection-sharing/b01e1ebc-4f9d-4bf6-8d15-37a782fa03ff
I cant turn off this service cause it is used by HyperV, so I cannot launch docker if I turn it off.
here are the logs for the docker run
2023-08-25 18:04:10 16:04:10.522 [main ] INF com.mageddo.dnsproxyserver.config.Configs l=166 m=build status=configuring, configFile=/app/conf/config.json
2023-08-25 18:04:10 16:04:10.538 [main ] INF com.mageddo.dnsproxyserver.docker.EventListener l=33 m=onStart status=binding-docker-events, dockerConnected=false
2023-08-25 18:04:10 16:04:10.540 [main ] INF c.mageddo.dnsproxyserver.server.dns.UDPServerPool l=31 m=start Starting UDP server, addresses=/0.0.0.0:53
2023-08-25 18:04:10 16:04:10.552 [Thread-4 ] INF com.mageddo.dnsproxyserver.server.dns.TCPServer l=50 m=start0 status=tcpServerStarting, port=53
2023-08-25 18:04:10 16:04:10.552 [main ] INF c.mageddo.dnsproxyserver.server.dns.ServerStarter l=32 m=start status=startingDnsServer, protocol=UDP_TCP, port=53
2023-08-25 18:04:10 16:04:10.556 [main ] INF com.mageddo.http.WebServer l=134 m=start status=startingWebServer, port=5380
2023-08-25 18:04:15 16:04:15.539 [Thread-2 ] WAR c.m.d.dnsconfigurator.DnsConfigurators l=58 m=lambda$configurationHook$0 status=failedToConfigureAsDefaultDns, path=/host/etc/systemd/resolved.conf,/host/etc/resolv.conf,/etc/systemd/resolved.conf,/etc/resolv.conf, msg=Could not initialize class com.github.dockerjava.transport.DomainSocket
2023-08-25 18:04:15 java.lang.NoClassDefFoundError: Could not initialize class com.github.dockerjava.transport.DomainSocket
2023-08-25 18:04:15 at com.github.dockerjava.transport.UnixSocket.get(UnixSocket.java:29)
2023-08-25 18:04:15 at com.github.dockerjava.httpclient5.ApacheDockerHttpClientImpl$2.createSocket(ApacheDockerHttpClientImpl.java:153)
2023-08-25 18:04:15 at org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:125)
2023-08-25 18:04:15 at org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:409)
2023-08-25 18:04:15 at org.apache.hc.client5.http.impl.classic.InternalExecRuntime.connectEndpoint(InternalExecRuntime.java:164)
2023-08-25 18:04:15 at org.apache.hc.client5.http.impl.classic.InternalExecRuntime.connectEndpoint(InternalExecRuntime.java:174)
2023-08-25 18:04:15 at org.apache.hc.client5.http.impl.classic.ConnectExec.execute(ConnectExec.java:135)
2023-08-25 18:04:15 at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
2023-08-25 18:04:15 at org.apache.hc.client5.http.impl.classic.ExecChainElement$1.proceed(ExecChainElement.java:57)
2023-08-25 18:04:15 at org.apache.hc.client5.http.impl.classic.ProtocolExec.execute(ProtocolExec.java:172)
2023-08-25 18:04:15 at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
2023-08-25 18:04:15 at org.apache.hc.client5.http.impl.classic.ExecChainElement$1.proceed(ExecChainElement.java:57)
2023-08-25 18:04:15 at org.apache.hc.client5.http.impl.classic.HttpRequestRetryExec.execute(HttpRequestRetryExec.java:93)
2023-08-25 18:04:15 at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
2023-08-25 18:04:15 at org.apache.hc.client5.http.impl.classic.ExecChainElement$1.proceed(ExecChainElement.java:57)
2023-08-25 18:04:15 at org.apache.hc.client5.http.impl.classic.ContentCompressionExec.execute(ContentCompressionExec.java:128)
2023-08-25 18:04:15 at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
2023-08-25 18:04:15 at org.apache.hc.client5.http.impl.classic.ExecChainElement$1.proceed(ExecChainElement.java:57)
2023-08-25 18:04:15 at org.apache.hc.client5.http.impl.classic.RedirectExec.execute(RedirectExec.java:116)
2023-08-25 18:04:15 at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
2023-08-25 18:04:15 at org.apache.hc.client5.http.impl.classic.InternalHttpClient.doExecute(InternalHttpClient.java:178)
2023-08-25 18:04:15 at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:67)
2023-08-25 18:04:15 at com.github.dockerjava.httpclient5.ApacheDockerHttpClientImpl.execute(ApacheDockerHttpClientImpl.java:191)
2023-08-25 18:04:15 at com.github.dockerjava.httpclient5.ApacheDockerHttpClient.execute(ApacheDockerHttpClient.java:9)
2023-08-25 18:04:15 at com.github.dockerjava.core.DefaultInvocationBuilder.execute(DefaultInvocationBuilder.java:228)
2023-08-25 18:04:15 at com.github.dockerjava.core.DefaultInvocationBuilder.get(DefaultInvocationBuilder.java:202)
2023-08-25 18:04:15 at com.github.dockerjava.core.DefaultInvocationBuilder.get(DefaultInvocationBuilder.java:74)
2023-08-25 18:04:15 at com.github.dockerjava.core.exec.ListContainersCmdExec.execute(ListContainersCmdExec.java:44)
2023-08-25 18:04:15 at com.github.dockerjava.core.exec.ListContainersCmdExec.execute(ListContainersCmdExec.java:15)
2023-08-25 18:04:15 at com.github.dockerjava.core.exec.AbstrSyncDockerCmdExec.exec(AbstrSyncDockerCmdExec.java:21)
2023-08-25 18:04:15 at com.github.dockerjava.core.command.AbstrDockerCmd.exec(AbstrDockerCmd.java:35)
2023-08-25 18:04:15 at com.mageddo.dnsproxyserver.docker.DpsContainerManager.findDpsContainer(DpsContainerManager.java:99)
2023-08-25 18:04:15 at com.mageddo.dnsproxyserver.docker.DpsContainerManager.findDpsContainerIP(DpsContainerManager.java:113)
2023-08-25 18:04:15 at com.mageddo.dnsproxyserver.dnsconfigurator.DpsIpDiscover.findDpsIP(DpsIpDiscover.java:25)
2023-08-25 18:04:15 at com.mageddo.dnsproxyserver.dnsconfigurator.DnsConfigurators.findIpAddr(DnsConfigurators.java:70)
2023-08-25 18:04:15 at com.mageddo.dnsproxyserver.dnsconfigurator.DnsConfigurators.lambda$configurationHook$0(DnsConfigurators.java:50)
2023-08-25 18:04:15 at [email protected]/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:577)
2023-08-25 18:04:15 at [email protected]/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358)
2023-08-25 18:04:15 at [email protected]/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
2023-08-25 18:04:15 at [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
2023-08-25 18:04:15 at [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
2023-08-25 18:04:15 at [email protected]/java.lang.Thread.run(Thread.java:1589)
2023-08-25 18:04:15 at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:775)
2023-08-25 18:04:15 at org.graalvm.nativeimage.builder/com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:203)
Here are the logs for the executable's run
18:05:43.457 [main ] INF com.mageddo.dnsproxyserver.config.Configs l=166 m=build status=configuring, configFile=C:\Users\OZ\programs\Windows-X64\conf\config.json
18:05:43.493 [main ] INF com.mageddo.dnsproxyserver.docker.EventListener l=33 m=onStart status=binding-docker-events, dockerConnected=true
18:05:43.493 [main ] INF c.m.dnsproxyserver.docker.DpsContainerManager l=40 m=setupNetwork status=dpsNetwork, active=false
18:05:43.493 [main ] INF com.mageddo.dnsproxyserver.docker.EventListener l=41 m=onStart status=autoConnectDpsNetworkDisabled, dpsNetwork=false, dpsNetworkAutoConnect=false
18:05:43.500 [main ] INF c.mageddo.dnsproxyserver.server.dns.UDPServerPool l=31 m=start Starting UDP server, addresses=/0.0.0.0:53
18:05:43.501 [main ] INF c.mageddo.dnsproxyserver.server.dns.ServerStarter l=32 m=start status=startingDnsServer, protocol=UDP_TCP, port=53
18:05:43.501 [Thread-12 ] INF com.mageddo.dnsproxyserver.server.dns.TCPServer l=50 m=start0 status=tcpServerStarting, port=53
18:05:43.501 [Thread-11 ] ERR com.mageddo.dnsproxyserver.server.dns.UDPServer l=46 m=start0 status=dnsServerStartFailed, address=/0.0.0.0:53, msg=Address already in use: bind
java.net.BindException: Address already in use: bind
at org.graalvm.nativeimage.builder/com.oracle.svm.core.jni.functions.JNIFunctions$NewObjectWithObjectArrayArgFunctionPointer.invoke(JNIFunctions.java)
at org.graalvm.nativeimage.builder/com.oracle.svm.core.jni.functions.JNIFunctions.ThrowNew(JNIFunctions.java:882)
at [email protected]/sun.nio.ch.Net.bind0(Net.java)
at [email protected]/sun.nio.ch.Net.bind(Net.java:555)
at [email protected]/sun.nio.ch.DatagramChannelImpl.bindInternal(DatagramChannelImpl.java:1247)
at [email protected]/sun.nio.ch.DatagramChannelImpl.bind(DatagramChannelImpl.java:1217)
at [email protected]/sun.nio.ch.DatagramSocketAdaptor.bind(DatagramSocketAdaptor.java:111)
at [email protected]/java.net.DatagramSocket.createDelegate(DatagramSocket.java:1427)
at [email protected]/java.net.DatagramSocket.<init>(DatagramSocket.java:328)
at com.mageddo.dnsproxyserver.server.dns.UDPServer.start0(UDPServer.java:36)
at [email protected]/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:577)
at [email protected]/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at [email protected]/java.lang.Thread.run(Thread.java:1589)
at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:775)
at org.graalvm.nativeimage.builder/com.oracle.svm.core.windows.WindowsPlatformThreads.osThreadStartRoutine(WindowsPlatformThreads.java:178)
18:05:43.540 [main ] INF com.mageddo.http.WebServer l=134 m=start status=startingWebServer, port=5380
18:05:48.640 [Thread-1 ] INF c.m.d.dnsconfigurator.DnsConfigurators l=112 m=getInstance0 usingDnsConfigurator=DnsConfiguratorDefault
Same on MacOS, trying to run the docker service.
Hey, it's really troublesome because Windows hasn't an option to specify a custom port, what you can do is try like @kassi said and run DPS inside a container pointing windows to the to the container IP instead.
Closing this issue, feel free to reopen it when you are able to respond