Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bug: No-Ip ddnskeys support #712

Open
Knokey opened this issue May 7, 2024 · 5 comments
Open

Bug: No-Ip ddnskeys support #712

Knokey opened this issue May 7, 2024 · 5 comments

Comments

@Knokey
Copy link

Knokey commented May 7, 2024

TLDR: Name resolution for No-Ip ddnskeys

  1. Is this urgent: No
  2. DNS provider(s) you use: No-Ip
  3. Program version: 2024-05-06T11:16:06.246Z (commit 542e895)
  4. What are you using to run the container: ansible playbook
  5. Extra information

Logs:

2024-05-07T07:26:31Z INFO Settings summary:
├── HTTP client
|   └── Timeout: 10s
├── Update
|   ├── Period: 5m0s
|   └── Cooldown: 5m0s
├── Public IP fetching
|   ├── HTTP enabled: yes
|   ├── HTTP IP providers
|   |   └── all
|   ├── HTTP IPv4 providers
|   |   └── all
|   ├── HTTP IPv6 providers
|   |   └── all
|   ├── DNS enabled: yes
|   ├── DNS timeout: 3s
|   └── DNS over TLS providers
|       └── all
├── Resolver: use Go default resolver
├── Server
|   ├── Listening address: :8000
|   └── Root URL: /
├── Health
|   ├── Server listening address: 127.0.0.1:9999
|   ├── Healthchecks.io base URL: https://xxxx/ping
|   └── Healthchecks.io UUID: xxxx
├── Paths
|   └── Data directory: /updater/data
├── Backup: disabled
└── Logger
    ├── Level: info
    └── Caller: hidden
2024-05-07T07:26:31Z INFO reading JSON config from file /updater/data/config.json
2024-05-07T07:26:31Z INFO Found 2 settings to update records
2024-05-07T07:26:31Z INFO Reading history from database: domain all.ddnskey.com host @ ipv4
2024-05-07T07:26:31Z INFO Reading history from database: domain xxxx host xxxx ipv4
2024-05-07T07:26:31Z INFO [backup] disabled
2024-05-07T07:26:31Z INFO [healthcheck server] listening on 127.0.0.1:9999
2024-05-07T07:26:31Z INFO [http server] listening on :8000
2024-05-07T07:26:31Z INFO obtaining ipv4 address succeeded after 1 failed try
2024/05/07 07:26:34 "GET http://xxxx/ HTTP/1.0" from 172.17.0.1:52862 - 200 2147B in 334.673µs
2024-05-07T07:31:31Z INFO ipv4 address of all.ddnskey.com is 34.198.182.201 and your ipv4 address  is 93.239.x.x
2024-05-07T07:31:31Z INFO Updating record [domain: all.ddnskey.com | host: @ | provider: noip | ip: ipv4] to use 93.239.x.x
2024-05-07T07:41:31Z INFO ipv4 address of all.ddnskey.com is 34.198.182.201 and your ipv4 address  is 93.239.x.x
2024-05-07T07:41:31Z INFO Updating record [domain: all.ddnskey.com | host: @ | provider: noip | ip: ipv4] to use 93.239.x.x

Configuration file

{
    "settings": [
        {
            "provider": "noip",
            "domain": "all.ddnskey.com",
            "host": "@",
            "username": "xxxx",
            "password": "xxxx",
            "ip_version": "ipv4",
            "ipv6_suffix": "",
            "provide_ip": false
        },
        {
            "provider": "cloudflare",
            "zone_identifier": "xxxx",
            "domain": "xxxx",
            "host": "xxxx",
            "ttl": 600,
            "token": "xxxx",
            "ip_version": "ipv4",
            "ipv6_suffix": ""
        }
    ]
}

Host OS: Ubuntu 22.04.4

I encountered the following problem: Updating the ip for No-Ip with ddnskey works, but ddns updater cannot verify the updated ip. The reason is that it tries to match the updated ip against the ip of api domain of no-ip. With a ddnskey from no-ip, all domains need to access the same url (all.ddnskey.com) and no-ip is matching the domain to upgrade via the ddnskey (username).

A solution would be to an extra field for no-ip where the actual domain that will be updated can be defined. Right now, ddns updater does not know for which domain the ip address has been updated.

Output of the health check:

ERROR program is unhealthy: lookup IP addresses do not match: 34.198.182.201 instead of 93.239.x.x for all.ddnskey.com

Docs for ddnskey at no-ip: https://www.noip.com/support/knowledgebase/how-to-setup-and-use-a-ddns-key

@qdm12
Copy link
Owner

qdm12 commented May 8, 2024

Thanks for creating the issue 👍

A solution would be to an extra field for no-ip where the actual domain that will be updated can be defined.

In that case, wouldn't it be simpler to just update each subdomain in a separate setting block, instead of using all.<your-ddnskey>.com? Or is this not possible 🤔 ?

@qdm12 qdm12 changed the title Bug: Name resolution for No-Ip ddnskeys Bug: No-Ip ddnskeys support May 8, 2024
@Knokey
Copy link
Author

Knokey commented May 8, 2024

Thanks for the response.

No, I think this is not possible. all.ddnskey.com includes no placeholder. Setting this as your domain is mandatory that no-ip can determine you want to update via a ddnskey.

Excerpt from the no-ip documentation:

The DDNS settings may look different depending on what device is being configured, but the following information will be requested:
DDNS Provider: No-IP
Username: Your DDNS Key Username / Email
Password: Your DDNS Key Password
Hostname/Domain: all.ddnskey.com
Server/Server Address: dynupdate.no-ip.com
Not every device will ask you for a server or server address. The service will still work without issue, if the device does not ask for it.

@Arelius-D
Copy link
Sponsor

Arelius-D commented May 9, 2024

Is issue in this post somehow related to why Docker gives the status of this container being (unhealthy)?

I'm asking so I don't go ahead and create a issue if the problem is the same

I attached my docker logs .. and docker inspect.. outputs as .txt files here.

docker inspect.txt
docker logs.txt

@Knokey
Copy link
Author

Knokey commented May 9, 2024

I think your health check issue is different from mine. I get a wrong ip reported, because ddns updater cannot know the hostname that is updated and your health check is timed out.

@Arelius-D
Copy link
Sponsor

I think your health check issue is different from mine. I get a wrong ip reported, because ddns updater cannot know the hostname that is updated and your health check is timed out.

I see, thank you for pointing that out! so I should go ahead and post my problem as a new issue then i suppose Good luck to!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants