[client] Custom DNS cannot resolve CNAME records. #1776

Closed
opened 2025-11-20 06:06:28 -05:00 by saavagebueno · 15 comments
Owner

Originally created by @Cikaros on GitHub (Apr 4, 2025).

Originally assigned to: @nazarewk on GitHub.

I encountered issues while attempting to configure a CNAME record for custom DNS, as the netbird client does not support CNAME resolution on Windows and Linux. However, it is quite strange that using PowerShell's Resolve-DnsName can query the correct CNAME record, while nslookup.exe and browsers are unable to resolve it properly.

Originally created by @Cikaros on GitHub (Apr 4, 2025). Originally assigned to: @nazarewk on GitHub. I encountered issues while attempting to configure a CNAME record for custom DNS, as the netbird client does not support CNAME resolution on Windows and Linux. However, it is quite strange that using PowerShell's `Resolve-DnsName` can query the correct CNAME record, while `nslookup.exe` and browsers are unable to resolve it properly.
saavagebueno added the bugdns labels 2025-11-20 06:06:28 -05:00
Author
Owner

@Cikaros commented on GitHub (Apr 4, 2025):

After testing, Record A can be parsed normally.

@Cikaros commented on GitHub (Apr 4, 2025): After testing, Record A can be parsed normally.
Author
Owner

@Cikaros commented on GitHub (Apr 4, 2025):

In MacOS, both A records and CNAME records are resolving normally.

@Cikaros commented on GitHub (Apr 4, 2025): In MacOS, both A records and CNAME records are resolving normally.
Author
Owner

@nazarewk commented on GitHub (Apr 7, 2025):

FYI: this will get fixed at as part of https://github.com/netbirdio/netbird/pull/3614

@nazarewk commented on GitHub (Apr 7, 2025): FYI: this will get fixed at as part of https://github.com/netbirdio/netbird/pull/3614 - https://github.com/netbirdio/netbird/commit/392967ec671d6e8250c7ea5b4f3af949020b8cd8
Author
Owner

@Cikaros commented on GitHub (Apr 8, 2025):

#3614

The problem still exists in version netbird v0.40.0.

@Cikaros commented on GitHub (Apr 8, 2025): > #3614 The problem still exists in version netbird v0.40.0.
Author
Owner

@nazarewk commented on GitHub (Apr 8, 2025):

@Cikaros should probably ask this immediately, but is it related to the Nameservers or Network Resources DNS configuration?

@nazarewk commented on GitHub (Apr 8, 2025): @Cikaros should probably ask this immediately, but is it related to the `Nameservers` or `Network` `Resources` DNS configuration?
Author
Owner

@Cikaros commented on GitHub (Apr 9, 2025):

Image

It should not be an issue related to the configuration of Network and Resources, as the A record of the custom DNS settings can be resolved correctly.

@Cikaros commented on GitHub (Apr 9, 2025): <img width="896" alt="Image" src="https://github.com/user-attachments/assets/0b6290bb-e0bc-4045-bf56-e6a8deec8334" /> It should not be an issue related to the configuration of Network and Resources, as the A record of the custom DNS settings can be resolved correctly.
Author
Owner

@nazarewk commented on GitHub (Apr 9, 2025):

Seems like you're setting up a Nameserver feature, this should only do 2 things:

  • periodically check reachability of the DNS server
  • register it with the operating system
  • EDIT: forward queries to upstream

NetBird does not proxy/modify/forward DNS queries going through Nameserver: they go directly to the server and back.
The only way NetBird could interact with Nameserver would be when you route it's IP address through the VPN, but that still would do nothing more than forwarding UDP/TCP packets back and forth.

Are you sure your DNS server is configured correctly to serve/forward/resolve the CNAME queries for the given domains? Can you test it directly?

EDIT: actually I was wrong here, we DO forward the DNS packets through locally running resolver.

@nazarewk commented on GitHub (Apr 9, 2025): Seems like you're setting up a `Nameserver` feature, this should ~only do 2 things~: - periodically check reachability of the DNS server - register it with the operating system - EDIT: forward queries to upstream NetBird does not proxy/modify/forward DNS queries going through `Nameserver`: they go directly to the server and back. The only way NetBird could interact with `Nameserver` would be when you route it's IP address through the VPN, but that still would do nothing more than forwarding UDP/TCP packets back and forth. Are you sure your DNS server is configured correctly to serve/forward/resolve the CNAME queries for the given domains? Can you test it directly? EDIT: actually I was wrong here, we DO forward the DNS packets through locally running resolver.
Author
Owner

@Cikaros commented on GitHub (Apr 9, 2025):

This is the result I obtained in Windows 11.

PS C:\Users\Cikar> netbird status --detail
...
OS: windows/amd64
Daemon version: 0.40.0
CLI version: 0.40.0
Management: Connected to https://xxx.xxx.top:443
Signal: Connected to https://xxx.xxx.top:443
Relays:
  [stun:xxx.xxx.site:3478] is Available
  [stun:xxx.xxx.site:3478] is Available
  [stun:xxx.top:3478] is Available
  [turn:xxx.top:3478?transport=udp] is Available
Nameservers:
  [8.8.8.8:53, 8.8.4.4:53] for [.] is Available
  [172.18.0.xx:53] for [npu.local, cikaros.local, ymkj.local] is Available
FQDN: cikaros-mini.netbird.local
NetBird IP: 100.7x.6x.8x/16
Interface type: Userspace
Quantum resistance: true (permissive)
Networks: -
Forwarding rules: 0
Peers count: 5/9 Connected
PS C:\Users\Cikar> nslookup gitea.npu.local
服务器:  UnKnown
Address:  100.7x.255.254

名称:    gitea.npu.local

PS C:\Users\Cikar> Resolve-DnsName gitea.npu.local

Name                           Type   TTL   Section    NameHost
----                           ----   ---   -------    --------
gitea.npu.local                CNAME  0     Answer     npu.netbird.local


PS C:\Users\Cikar> ping gitea.npu.local
Ping 请求找不到主机 gitea.npu.local。请检查该名称,然后重试。
PS C:\Users\Cikar> ping npu.netbird.local

正在 Ping npu.netbird.local [100.7x.6x.1x] 具有 32 字节的数据:
来自 100.7x.6x.1x 的回复: 字节=32 时间<1ms TTL=64
来自 100.7x.6x.1x 的回复: 字节=32 时间=1ms TTL=64

100.7x.6x.1x 的 Ping 统计信息:
    数据包: 已发送 = 2,已接收 = 2,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 1ms,平均 = 0ms

@Cikaros commented on GitHub (Apr 9, 2025): This is the result I obtained in Windows 11. ``` PS C:\Users\Cikar> netbird status --detail ... OS: windows/amd64 Daemon version: 0.40.0 CLI version: 0.40.0 Management: Connected to https://xxx.xxx.top:443 Signal: Connected to https://xxx.xxx.top:443 Relays: [stun:xxx.xxx.site:3478] is Available [stun:xxx.xxx.site:3478] is Available [stun:xxx.top:3478] is Available [turn:xxx.top:3478?transport=udp] is Available Nameservers: [8.8.8.8:53, 8.8.4.4:53] for [.] is Available [172.18.0.xx:53] for [npu.local, cikaros.local, ymkj.local] is Available FQDN: cikaros-mini.netbird.local NetBird IP: 100.7x.6x.8x/16 Interface type: Userspace Quantum resistance: true (permissive) Networks: - Forwarding rules: 0 Peers count: 5/9 Connected PS C:\Users\Cikar> nslookup gitea.npu.local 服务器: UnKnown Address: 100.7x.255.254 名称: gitea.npu.local PS C:\Users\Cikar> Resolve-DnsName gitea.npu.local Name Type TTL Section NameHost ---- ---- --- ------- -------- gitea.npu.local CNAME 0 Answer npu.netbird.local PS C:\Users\Cikar> ping gitea.npu.local Ping 请求找不到主机 gitea.npu.local。请检查该名称,然后重试。 PS C:\Users\Cikar> ping npu.netbird.local 正在 Ping npu.netbird.local [100.7x.6x.1x] 具有 32 字节的数据: 来自 100.7x.6x.1x 的回复: 字节=32 时间<1ms TTL=64 来自 100.7x.6x.1x 的回复: 字节=32 时间=1ms TTL=64 100.7x.6x.1x 的 Ping 统计信息: 数据包: 已发送 = 2,已接收 = 2,丢失 = 0 (0% 丢失), 往返行程的估计时间(以毫秒为单位): 最短 = 0ms,最长 = 1ms,平均 = 0ms ```
Author
Owner

@Cikaros commented on GitHub (Apr 9, 2025):

I do not understand the principle of Netbird. May I ask how I should conduct the test?

@Cikaros commented on GitHub (Apr 9, 2025): I do not understand the principle of Netbird. May I ask how I should conduct the test?
Author
Owner

@nazarewk commented on GitHub (Apr 9, 2025):

The Address: 100.7x.255.254 in the result of nslookup suggests you might have also configured a Network Resource with a domain on top of a Nameserver.

By the looks of it the gitea.npu.local gets resolved on a routing peer to the npu.netbird.local CNAME, but then the client might have trouble mapping npu.netbird.local to an IP address.

Can you share more information about your Network Resources configuration?

You could also run following commands to see the config of Windows OS looking for both npu.local and netbird.local entries:

  • netbird networks ls
  • Get-DnsClientNrptRule
  • Get-DnsClientNrptPolicy

You could also try:

  • Resolve-DnsName -Name gitea.npu.local -Server 100.7x.255.254
  • Resolve-DnsName -Name gitea.npu.local -Server 172.18.0.xx
  • Resolve-DnsName -Name npu.netbird.local & repeat with specific servers
  • repeat with -Servers
@nazarewk commented on GitHub (Apr 9, 2025): ~The `Address: 100.7x.255.254` in the result of `nslookup` suggests you might have also configured a `Network Resource` with a domain on top of a `Nameserver`.~ By the looks of it the `gitea.npu.local` gets resolved on a routing peer to the `npu.netbird.local` `CNAME`, but then the client might have trouble mapping `npu.netbird.local` to an IP address. Can you share more information about your Network Resources configuration? You could also run following commands to see the config of Windows OS looking for both `npu.local` and `netbird.local` entries: - `netbird networks ls` - `Get-DnsClientNrptRule` - `Get-DnsClientNrptPolicy` You could also try: - `Resolve-DnsName -Name gitea.npu.local -Server 100.7x.255.254` - `Resolve-DnsName -Name gitea.npu.local -Server 172.18.0.xx` - `Resolve-DnsName -Name npu.netbird.local` & repeat with specific servers - repeat with `-Server`s
Author
Owner

@Cikaros commented on GitHub (Apr 9, 2025):

PS C:\Users\Cikaros> netbird networks ls

  - ID: DNS
    Network: 172.18.0.xx/32
    Status: Selected
PS C:\Users\Cikaros> Get-DnsClientNrptRule


Name                             : {31008AE5-D0EA-4521-A936-37C69F3A121E}
Version                          : 2
Namespace                        : {npu.local}
IPsecCARestriction               :
DirectAccessDnsServers           :
DirectAccessEnabled              : False
DirectAccessProxyType            :
DirectAccessProxyName            :
DirectAccessQueryIPsecEncryption :
DirectAccessQueryIPsecRequired   :
NameServers                      : 100.7x.255.254
DnsSecEnabled                    : False
DnsSecQueryIPsecEncryption       :
DnsSecQueryIPsecRequired         :
DnsSecValidationRequired         :
NameEncoding                     : Disable
DisplayName                      :
Comment                          :



PS C:\Users\Cikaros> Get-DnsClientNrptPolicy


Namespace                        : .7x.100.in-addr.arpa
QueryPolicy                      :
SecureNameQueryFallback          :
DirectAccessIPsecCARestriction   :
DirectAccessProxyName            :
DirectAccessDnsServers           :
DirectAccessEnabled              :
DirectAccessProxyType            : NoProxy
DirectAccessQueryIPsecEncryption :
DirectAccessQueryIPsecRequired   : False
NameServers                      : 100.7x.255.254
DnsSecIPsecCARestriction         :
DnsSecQueryIPsecEncryption       :
DnsSecQueryIPsecRequired         : False
DnsSecValidationRequired         : False
NameEncoding                     : Utf8WithoutMapping

Namespace                        : .netbird.local
QueryPolicy                      :
SecureNameQueryFallback          :
DirectAccessIPsecCARestriction   :
DirectAccessProxyName            :
DirectAccessDnsServers           :
DirectAccessEnabled              :
DirectAccessProxyType            : NoProxy
DirectAccessQueryIPsecEncryption :
DirectAccessQueryIPsecRequired   : False
NameServers                      : 100.7x.255.254
DnsSecIPsecCARestriction         :
DnsSecQueryIPsecEncryption       :
DnsSecQueryIPsecRequired         : False
DnsSecValidationRequired         : False
NameEncoding                     : Utf8WithoutMapping

Namespace                        : .ymkj.local
QueryPolicy                      :
SecureNameQueryFallback          :
DirectAccessIPsecCARestriction   :
DirectAccessProxyName            :
DirectAccessDnsServers           :
DirectAccessEnabled              :
DirectAccessProxyType            : NoProxy
DirectAccessQueryIPsecEncryption :
DirectAccessQueryIPsecRequired   : False
NameServers                      : 100.7x.255.254
DnsSecIPsecCARestriction         :
DnsSecQueryIPsecEncryption       :
DnsSecQueryIPsecRequired         : False
DnsSecValidationRequired         : False
NameEncoding                     : Utf8WithoutMapping

Namespace                        : .cikaros.local
QueryPolicy                      :
SecureNameQueryFallback          :
DirectAccessIPsecCARestriction   :
DirectAccessProxyName            :
DirectAccessDnsServers           :
DirectAccessEnabled              :
DirectAccessQueryIPsecEncryption :
DirectAccessQueryIPsecRequired   : False
NameServers                      : 100.7x.255.254
DnsSecIPsecCARestriction         :
DnsSecQueryIPsecEncryption       :
DnsSecQueryIPsecRequired         : False
DnsSecValidationRequired         : False
NameEncoding                     : Utf8WithoutMapping

Namespace                        : .npu.local
QueryPolicy                      :
SecureNameQueryFallback          :
DirectAccessIPsecCARestriction   :
DirectAccessDnsServers           :
DirectAccessEnabled              :
DirectAccessProxyType            : NoProxy
DirectAccessQueryIPsecEncryption :
DirectAccessQueryIPsecRequired   : False
NameServers                      : 100.7x.255.254
DnsSecIPsecCARestriction         :
DnsSecQueryIPsecEncryption       :
DnsSecQueryIPsecRequired         : False
DnsSecValidationRequired         : False
NameEncoding                     : Utf8WithoutMapping


PS C:\Users\Cikaros> Resolve-DnsName -Name gitea.npu.local -Server 100.7x.255.254

Name                           Type   TTL   Section    NameHost
----                           ----   ---   -------    --------
gitea.npu.local                CNAME  0     Answer     npu.netbird.local

QueryType : OPT
TTL       : 0
Section   : Additional
Data      : {}



PS C:\Users\Cikaros> Resolve-DnsName -Name gitea.npu.local -Server 172.18.0.xx

Name                           Type   TTL   Section    NameHost
----                           ----   ---   -------    --------
gitea.npu.local                CNAME  0     Answer     npu.netbird.local

Name      : .
QueryType : OPT
TTL       : 0
Section   : Additional
Data      : {}



PS C:\Users\Cikaros> Resolve-DnsName -Name npu.netbird.local -Server 8.8.8.8

Name                                           Type   TTL   Section    IPAddress
----                                           ----   ---   -------    ---------
npu.netbird.local                              A      300   Answer     100.7x.xx.xxx


PS C:\Users\Cikaros> Resolve-DnsName -Name npu.netbird.local

Name                                           Type   TTL   Section    IPAddress
----                                           ----   ---   -------    ---------
npu.netbird.local                              A      300   Answer     100.7x.xx.xxx

@Cikaros commented on GitHub (Apr 9, 2025): ``` PS C:\Users\Cikaros> netbird networks ls - ID: DNS Network: 172.18.0.xx/32 Status: Selected PS C:\Users\Cikaros> Get-DnsClientNrptRule Name : {31008AE5-D0EA-4521-A936-37C69F3A121E} Version : 2 Namespace : {npu.local} IPsecCARestriction : DirectAccessDnsServers : DirectAccessEnabled : False DirectAccessProxyType : DirectAccessProxyName : DirectAccessQueryIPsecEncryption : DirectAccessQueryIPsecRequired : NameServers : 100.7x.255.254 DnsSecEnabled : False DnsSecQueryIPsecEncryption : DnsSecQueryIPsecRequired : DnsSecValidationRequired : NameEncoding : Disable DisplayName : Comment : PS C:\Users\Cikaros> Get-DnsClientNrptPolicy Namespace : .7x.100.in-addr.arpa QueryPolicy : SecureNameQueryFallback : DirectAccessIPsecCARestriction : DirectAccessProxyName : DirectAccessDnsServers : DirectAccessEnabled : DirectAccessProxyType : NoProxy DirectAccessQueryIPsecEncryption : DirectAccessQueryIPsecRequired : False NameServers : 100.7x.255.254 DnsSecIPsecCARestriction : DnsSecQueryIPsecEncryption : DnsSecQueryIPsecRequired : False DnsSecValidationRequired : False NameEncoding : Utf8WithoutMapping Namespace : .netbird.local QueryPolicy : SecureNameQueryFallback : DirectAccessIPsecCARestriction : DirectAccessProxyName : DirectAccessDnsServers : DirectAccessEnabled : DirectAccessProxyType : NoProxy DirectAccessQueryIPsecEncryption : DirectAccessQueryIPsecRequired : False NameServers : 100.7x.255.254 DnsSecIPsecCARestriction : DnsSecQueryIPsecEncryption : DnsSecQueryIPsecRequired : False DnsSecValidationRequired : False NameEncoding : Utf8WithoutMapping Namespace : .ymkj.local QueryPolicy : SecureNameQueryFallback : DirectAccessIPsecCARestriction : DirectAccessProxyName : DirectAccessDnsServers : DirectAccessEnabled : DirectAccessProxyType : NoProxy DirectAccessQueryIPsecEncryption : DirectAccessQueryIPsecRequired : False NameServers : 100.7x.255.254 DnsSecIPsecCARestriction : DnsSecQueryIPsecEncryption : DnsSecQueryIPsecRequired : False DnsSecValidationRequired : False NameEncoding : Utf8WithoutMapping Namespace : .cikaros.local QueryPolicy : SecureNameQueryFallback : DirectAccessIPsecCARestriction : DirectAccessProxyName : DirectAccessDnsServers : DirectAccessEnabled : DirectAccessQueryIPsecEncryption : DirectAccessQueryIPsecRequired : False NameServers : 100.7x.255.254 DnsSecIPsecCARestriction : DnsSecQueryIPsecEncryption : DnsSecQueryIPsecRequired : False DnsSecValidationRequired : False NameEncoding : Utf8WithoutMapping Namespace : .npu.local QueryPolicy : SecureNameQueryFallback : DirectAccessIPsecCARestriction : DirectAccessDnsServers : DirectAccessEnabled : DirectAccessProxyType : NoProxy DirectAccessQueryIPsecEncryption : DirectAccessQueryIPsecRequired : False NameServers : 100.7x.255.254 DnsSecIPsecCARestriction : DnsSecQueryIPsecEncryption : DnsSecQueryIPsecRequired : False DnsSecValidationRequired : False NameEncoding : Utf8WithoutMapping PS C:\Users\Cikaros> Resolve-DnsName -Name gitea.npu.local -Server 100.7x.255.254 Name Type TTL Section NameHost ---- ---- --- ------- -------- gitea.npu.local CNAME 0 Answer npu.netbird.local QueryType : OPT TTL : 0 Section : Additional Data : {} PS C:\Users\Cikaros> Resolve-DnsName -Name gitea.npu.local -Server 172.18.0.xx Name Type TTL Section NameHost ---- ---- --- ------- -------- gitea.npu.local CNAME 0 Answer npu.netbird.local Name : . QueryType : OPT TTL : 0 Section : Additional Data : {} PS C:\Users\Cikaros> Resolve-DnsName -Name npu.netbird.local -Server 8.8.8.8 Name Type TTL Section IPAddress ---- ---- --- ------- --------- npu.netbird.local A 300 Answer 100.7x.xx.xxx PS C:\Users\Cikaros> Resolve-DnsName -Name npu.netbird.local Name Type TTL Section IPAddress ---- ---- --- ------- --------- npu.netbird.local A 300 Answer 100.7x.xx.xxx ```
Author
Owner

@nazarewk commented on GitHub (Apr 10, 2025):

Looks like it is both configured and working as expected in all instances.

The issue must be with the specific software using different means (old/deprecated system libraries, implementing their resolvers, etc.). I have debugged a similar issue on MacOS recently and learned that coreutils/curl and many others are not updated to use the latest system's resolver, maybe this is a similar case, but for Windows.

@nazarewk commented on GitHub (Apr 10, 2025): Looks like it is both configured and working as expected in all instances. The issue must be with the specific software using different means (old/deprecated system libraries, implementing their resolvers, etc.). I have debugged a similar issue on MacOS recently and learned that coreutils/curl and many others are not updated to use the latest system's resolver, maybe this is a similar case, but for Windows.
Author
Owner

@Cikaros commented on GitHub (Apr 10, 2025):

I understand, which means this issue can only be resolved by the official Windows team...😔

@Cikaros commented on GitHub (Apr 10, 2025): I understand, which means this issue can only be resolved by the official Windows team...😔
Author
Owner

@Cikaros commented on GitHub (Apr 10, 2025):

@nazarewk I would like to ask you privately why you are so knowledgeable about system-level applications and system principles. I am also a developer, but sometimes it is difficult for me to think about these matters, and I do not understand what step I am missing.
If you are willing, please reply to me (Cikaros@qq.com) ; otherwise, please ignore this message. Regardless, I greatly appreciate your response.

@Cikaros commented on GitHub (Apr 10, 2025): @nazarewk I would like to ask you privately why you are so knowledgeable about system-level applications and system principles. I am also a developer, but sometimes it is difficult for me to think about these matters, and I do not understand what step I am missing. If you are willing, please reply to me (`Cikaros@qq.com`) ; otherwise, please ignore this message. Regardless, I greatly appreciate your response.
Author
Owner

@nazarewk commented on GitHub (Apr 10, 2025):

@nazarewk I would like to ask you privately why you are so knowledgeable about system-level applications and system principles. I am also a developer, but sometimes it is difficult for me to think about these matters, and I do not understand what step I am missing.

I used to fiddle with Quality of Service on my WRT54GL router loaded with "custom" Tomato firmware as far back as mid/high school (probably ~2005-2010) to be able to play online games (mostly Warcraft 3/WoW) while other household members browsed the internet/downloaded files on our amazing 1mbps/128kbps connection (we only got ~10/1mbps around 2012) :D
This got me exposed to a lot of (not fully understood back then) networking concepts.

When I started learning programming (Python) I used to run IDE on my Windows desktop and remotely executed the code on Ubuntu home server. It took me less time to both learn how to, configure Ubuntu server and set up Python there than trying to do the same properly on an already configured Windows machine. I also quickly got fed up with Ubuntu updates breaking the system (it was my home router at the time) and quickly switched to Arch Linux, which forced me to learn & manually execute every single step of the OS & networking setup. This got me exposed to deploying code and managing a server from the very beginning.

Then I often ended up being the only member of the team who knew how to put an application on the server when I started my career as a Python developer (~2014-2019), then was captivated by Kubernetes and switched to cloud engineer before arriving at NetBird this year.

I was extremely surprised I rarely ever met programmers who knew how to run their apps anywhere except on their own computer. Recruiters would strongly disagree, but in retrospect, I feel there is no shame in not having all of the knowledge until you learn it by chance (like me) or out of necessity when it's required at work.

Switching to Arch was probably the single most important decision in my IT journey, and I would highly suggest that you start with try to run (in a VM maybe) some barebones/manually configured distro to obtain a lot of basic systems/networking knowledge in a short time. Arch Linux & FreeBSD have one of the best documentations there is, but they are not the only DIY systems and the knowledge itself applies 90% the same to all the other Linux distributions (and slightly less to non-Linux systems). I stopped looking through Arch docs at least a few times a month, only ~3 years ago. At this point, I'm running NixOS since ~2020, and I simply already know just enough to get started with configuring any application/service without looking into distribution-specific docs (I still read A LOT of systemd and app-specific docs/codebases)

@nazarewk commented on GitHub (Apr 10, 2025): > [@nazarewk](https://github.com/nazarewk) I would like to ask you privately why you are so knowledgeable about system-level applications and system principles. I am also a developer, but sometimes it is difficult for me to think about these matters, and I do not understand what step I am missing. I used to fiddle with Quality of Service on my WRT54GL router loaded with "custom" Tomato firmware as far back as mid/high school (probably ~2005-2010) to be able to play online games (mostly Warcraft 3/WoW) while other household members browsed the internet/downloaded files on our amazing 1mbps/128kbps connection (we only got ~10/1mbps around 2012) :D This got me exposed to a lot of (not fully understood back then) networking concepts. When I started learning programming (Python) I used to run IDE on my Windows desktop and remotely executed the code on Ubuntu home server. It took me less time to both learn how to, configure Ubuntu server and set up Python there than trying to do the same properly on an already configured Windows machine. I also quickly got fed up with Ubuntu updates breaking the system (it was my home router at the time) and quickly switched to Arch Linux, which forced me to learn & manually execute every single step of the OS & networking setup. This got me exposed to deploying code and managing a server from the very beginning. Then I often ended up being the only member of the team who knew how to put an application on the server when I started my career as a Python developer (~2014-2019), then was captivated by Kubernetes and switched to cloud engineer before arriving at NetBird this year. I was extremely surprised I rarely ever met programmers who knew how to run their apps anywhere except on their own computer. Recruiters would strongly disagree, but in retrospect, I feel there is no shame in not having _all_ of the knowledge until you learn it by chance (like me) or out of necessity when it's required at work. Switching to Arch was probably the single most important decision in my IT journey, and I would highly suggest that you ~start with~ try to run (in a VM maybe) some barebones/manually configured distro to obtain a lot of basic systems/networking knowledge in a short time. Arch Linux & FreeBSD have one of the best documentations there is, but they are not the only DIY systems and the knowledge itself applies 90% the same to all the other Linux distributions (and slightly less to non-Linux systems). I stopped looking through Arch docs at least a few times a month, only ~3 years ago. At this point, I'm running NixOS since ~2020, and I simply already know just enough to get started with configuring any application/service without looking into distribution-specific docs (I still read A LOT of systemd and app-specific docs/codebases)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: SVI/netbird#1776