TechnitiumSoftware / DnsServer

Technitium DNS Server
https://technitium.com/dns/
GNU General Public License v3.0
4.51k stars 431 forks source link

ISSUE: Change of Web Service IP in Docker/Podman not possible #974

Closed FlossFarrier closed 2 months ago

FlossFarrier commented 4 months ago

Hey.

I'd like to bind the Web Service to a certain interface/ip but it is not possible.

By default the Web Service is bound to all interfaces and IPs. When I try to change the IP to a single one via the Web UI, I get the following error:

Error! Failed to save settings: web service local end point '192.168.53.1:5380' failed to bind (AddressAlreadyInUse). Address already in use

So maybe the script should first stop the Web Service entirely in order to free all bindings and then re-bind to the new single one.

ShreyasZare commented 4 months ago

Thanks for the feedback. When using docker you should configure this at the container level itself since the network adapter on the host system are not directly available inside the container.

fuomag9 commented 2 months ago

Thanks for the feedback. When using docker you should configure this at the container level itself since the network adapter on the host system are not directly available inside the container.

In my case I'm using docker via host mode and it still doesn't work, and DNS_SERVER_WEB_SERVICE_LOCAL_ADDRESSES=192.168.6.10 is ignored as I set it not on the first boot

Also the server seems to really bind only on one interface, even tho via ss -tuplns it's listening on everything. But by having two IP addresses 192.168.6.10 and 192.168.1.2 it's only replying on 192.168.1.2 ("latest" network interface)

ShreyasZare commented 2 months ago

Thanks for the feedback. When using docker you should configure this at the container level itself since the network adapter on the host system are not directly available inside the container.

In my case I'm using docker via host mode and it still doesn't work, and DNS_SERVER_WEB_SERVICE_LOCAL_ADDRESSES=192.168.6.10 is ignored as I set it not on the first boot

Also the server seems to really bind only on one interface, even tho via ss -tuplns it's listening on everything. But by having two IP addresses 192.168.6.10 and 192.168.1.2 it's only replying on 192.168.1.2 ("latest" network interface)

The environment variables are only used on the first time when there is no DNS config available. Once the DNS server start for the first time, it will use these variables and save new config files. After that those variables are never used. Any change you need after that must be done only via the GUI/API.

I would suggest that you try the config again and see if that works. There is nothing that can be done in code since it works already on Linux without any issues.

If you still have the issue and unable to fix it then share screenshots of your config either here or via email to support@technitium.com so as to understand the issue better and help you get it working.

fuomag9 commented 2 months ago

docker compose

services:
  technitium:
    container_name: technitium
    hostname: technitium
    image: technitium/dns-server:latest
    network_mode: "host"
    ports:
      - "5380:5380/tcp" #DNS web console (HTTP)
      # - "53443:53443/tcp" #DNS web console (HTTPS)
      - "53:53/udp" #DNS service
      - "53:53/tcp" #DNS service
      - "67:67/udp" #DHCP service
    environment:
      - DNS_SERVER_DOMAIN=technitium #The primary domain name used by this DNS Server to identify itself.
      - DNS_SERVER_ADMIN_PASSWORD=password #DNS web console admin user password.
      - DNS_SERVER_LOG_USING_LOCAL_TIME=true #Enable this option to use local time instead of UTC for logging.
    volumes:
      - ./config:/etc/dns
    restart: always

Admin panel image

Failure to change image

DHCP config (leases works on both interfaces)

image

proxmox network config:

image

ShreyasZare commented 2 months ago

Thanks for the details. I am not sure how the ports config would work in host mode. You would need to remove it to make it work.

The issue of AddressAlreadyInUse that you see is due to an issue with the port test that is being done. The next update will have that issue fixed.

For now there is a workaround if changing the port to something different like 5381 with the new local addresses and once the change is saved, you can then change back the port to 5380.

ShreyasZare commented 2 months ago

Technitium DNS Server v13 is now available that fixes this issue. Do update and let me know your feedback.