mirror of
https://github.com/netbirdio/netbird.git
synced 2026-06-12 10:22:25 -04:00
No route between hosts #148
Closed
opened 2025-11-20 05:07:03 -05:00 by saavagebueno
·
18 comments
No Branch/Tag Specified
main
guard-tun-read-panic
ui-refactor
dmitri-event-aggregation
dependabot/go_modules/gorm-2271c8195b
dependabot/go_modules/testcontainers-9a9ed843ba
profile-id-name
fix/exit-node-v6-deselect-propagation
socket-grpc-permissions
ui-refactor-left-click
disable_auto_connect_no_client_stop
fix/mysql-index-migration
feat/getting-started-unified-wizard
dependabot/go_modules/aws-sdk-e0d7f0be02
dependabot/github_actions/actions-1b76ec1a46
dependabot/go_modules/otel-e34c790afd
dependabot/go_modules/pion-04391f0276
dependabot/go_modules/wireguard-dbd6b95108
peer-acl-multi-source
feature/affected-peers
fix/ios-debug-bundle
dependabot/go_modules/github.com/fsnotify/fsnotify-1.10.1
relay-transport-observability
embedded-vnc
windows-dns-firewall
tests/enable-race-on-tests
ui-refactor-gtk3
wasm-websocket-dial
feature/affected-peers-grpc
profile-id
lazyconn-first-packet-fix-v2
claude/focused-gates-VMTgb
feature/immediate-handshake-on-endpoint-change
refactor/mgmt-bootstrap
dependabot/go_modules/github.com/quic-go/quic-go-0.59.1
fix/ios-login-expiry-blackhole
ui-tray-linux-leftclick
dependabot/go_modules/github.com/rs/cors-1.11.1
dependabot/go_modules/github.com/ebitengine/purego-0.10.1
dependabot/go_modules/github.com/c-robinson/iplib-1.0.8
dependabot/go_modules/github.com/redis/go-redis/v9-9.20.0
dependabot/go_modules/github.com/cilium/ebpf-0.21.0
dependabot/go_modules/github.com/coreos/go-iptables-0.8.0
dependabot/go_modules/golang.org/x/mod-0.36.0
dependabot/go_modules/github.com/spf13/pflag-1.0.10
fix/ctx-enrichment
nmap/components-impl
daemon-owner
dependabot/go_modules/github.com/crowdsecurity/crowdsec-1.7.8
client-json-socket
feature/android-client-ssh
feature/ios-ssh
worktree-accept-ra-forwarding
nmap/combined-deploy
task/align_protobuff_toolset
feature/session-extend
add-json-yaml-flags
refactor/ephemeral-cleanup
claude/webtransport-relay-wasm-mUjY9
claude/vnc-udp-feasibility-6KB1U
fix-ssh-authorized-users-multi-rule
fix/wgport-config
drop-candidateviaroutes-filter
e2e-windows-dns-combined
dependabot/go_modules/github.com/Azure/go-ntlmssp-0.1.1
debug-logs
dependabot/go_modules/github.com/jackc/pgx/v5-5.9.2
fix/login-cmd-root-flags
feat/reseller-openapi-spec
github-issue-resolver
add-steamos-support
fix-darwin-uninstaller
flutter-test
dependabot/npm_and_yarn/proxy/web/postcss-8.5.12
ci/freebsd-pkg-bootstrap
cached-serial-check-on-sync
fix-mgmt-cache-bypass-overlay
revert-easyjson-5938
revert-ice-5820
revert-firewalld-5928
refactor/permissions-manager
revert-dns-5935-systemd-resolved
revert-dns-5935-5945
revert-dns-5945-mgmt-cache
feature/log-most-busy-peers
prototype/ui-wails
coderabbitai/utg/8ae8f20
feature/use-peer-fqdn-on-https
dependabot/go_modules/golang.org/x/image-0.38.0
feature/metrics-push-management-control
release/0.68.3
dependabot/go_modules/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream-1.7.8
dependabot/go_modules/github.com/aws/aws-sdk-go-v2/service/s3-1.97.3
add-slack-channel
claude/rdp-token-passthrough-eNcqW
transparent-proxy
fix/macos-stale-route-eexist
crowdsec-selfhosted
fix/remove-otel-units
entire/checkpoints/v1
dependabot/go_modules/github.com/go-jose/go-jose/v4-4.1.4
fix/getting-started
feat/static-connectors-combined-server
feature/use-local-keys-embedded
feature/fleetdm
set-env-only-if-not-fork
feature/expose-has-channel
fix/connection-status-race
fix/filter-cgnat-cni-ice-candidates
feature/check-cert-locker-before-acme
test/proxy-fixes
test/proxy-mtu
prototype/ui-tauri
test/proxy-speed
fix-reused-ports
feat/migrate-to-embedded-idp
feature/add-serial-to-proxy-merged
deploy/proxy-serial
test/connection
feature/disable-legacy-port
feature/flag-to-disable-legacy-port
test/perftest
dependabot/go_modules/github.com/pion/dtls/v3-3.0.11
fix/http-redirect
poc-token-command
dn-reverse-proxy
prototype/reverse-proxy-rename
prototype/reverse-proxy-logs-pagination
feature/client-metrics
prototype/reverse-proxy-clusters
debug-dns-route
fix/win-dns-batch
add-extra-route-logs
job-stream-notify-disconnection-eof
deploy/secrets-manager
trigger-proxy-update
bug/update-ios-client-code-build-tags
sync-client-netmap-serial
log/conn-disconn
nmap/compaction-deploy
ci-win-test
feature/disk-encryption-check
wasm-debug
swap-dns-prio
fix/dex-config
feature/migrate-auto-groups-to-table
dependabot/go_modules/github.com/quic-go/quic-go-0.57.0
nmap/compaction
dex-nocgo-stub
feature/exclude-terraform-from-rate-limiting
test-freebsd
retries-refactor
coderabbitai/docstrings/b7e98ac
feat/integrate-zitadel
bug/ios-hanging-reconection
zitadel-idp
feat/network-map-serial
refactor/get-account-no-users
feat/auto-upgrade
feature/report-high-pat-id
feature/temporary-access-for-resource
fix/nmap-fwrules
dont-restart-dns
prototype/ui
update-gomobile
go-dns-for-ice
wasm-ldflags
test-ldflags
wasmbuild-test
feature/networks-s2s
vk/compare-nmaps
dbg/bothmaps
feature/changeset
reorder-dns-shutdown
fix/relay-reconnection-race
fix/nmap-exitnodes
vk/debug/nmap-both
move-licensed-code
feat/better-daemon-connection-lost-message
feat/auto-update-2
test/timings
refactor/getaccount-raw
tests/nmap-getaccount
refactor/nmap
refactor/nmap-limit-buffer
feature/detect-mac-wakeup
feature/extract-modules
quick-setings
feat/sync-limiter
feature/store-cache-impl
fix-install-version
feature/store-metrics
feature/metrics-on-store
feature/use-gorm-cache
loadtest-signal
unsymmetrical-squash
refactor/reducate-signaling
test/update-reduce
feature/store-cache
feature/remote-debug
cli-ws-proxy-backend-addr
feat/mgmt-map-serial
snyk-fix-d9d0081a4c7f9137bdb59d0d50a141a2
snyk-fix-7415cea5a11acd66753540ca2c598c63
job-yml-update
feature/android-allow-selecting-routes
fix/up-sequence
fix/dns-hash-update
snyk-fix-967adae9863f17f108ce8948d9117b8d
log/getaccount-by-peer
signal-suppressor
dns-exit-node
feature/auto-updates
feature/cache-srv-key
merged-fixes
fix/missed-offers-and-debug
debug-and-fixes
poc-wasm-clean-backend-s2s
test/remote-debug
debug-api
dependabot/go_modules/github.com/docker/docker-28.0.0incompatible
fix/remove-gpo-if-empty
fix/test-freebsd
fix/mysql-setup
fix/remove-logout-btn
handle-existing-domain-user
chore/unify-domain-validation
snyk-fix-c5fafc8a50ce1f29046e25a1fc346185
feat/profile-edit-btn
snyk-fix-a54966211e18d4cf67e5a2757cc006d1
log-short-id
feat/logout-ephemeral
log-checks
batch-wg-ops
nb-interface-default
feat/aws-integration
add/race-test
feature/relay-feature-versioning
fix/systemd-service-logs
poc/preprocessed-map
add-account-onboarding
bind-ipv6
fix/merge-main
logs/peerlogs-addpeer
feature/net-297-network-migration
feature/support-skip-auto-apply-exit-node-routes
set-cmd
set-command-with-cursor
feature/limit-update-channel
stop-using-locking-share
feature/poc-lazy-detection
feature/net-248-removal-of-sync-mutex-locks
test/multiple-peer-logging
preresolve
add-ns-punnycode-support
apply-routes-early
windows-search-domains
fix/connecting-route-filter
feature/management/rest-client/impersonate
debug-local-records
resource-fields-snake-case
test/grpc-rate-limit
traffic-correlation-policy
feature/rest-client-options
feat/events-metrics
feature/buf-cli
test/add-ratelimiter
test/remove-write-lock-on-add-peer
fix/add-peer-semaphore
feature/users-roles-endpoint
mlsmaycon-patch-1
debug-user-role
chore/primary-key-on-networks
feature/update-account-peers-buffer-startup
remove-ubuntu2004-runners
refactor/permissions-no-pat-allowed
ref/logrus-factory
use-conntrack-zone
deploy/permissions-account
feature/lazy-connection-idle
ref/improve-test-cov
restore-pr-3440
test/increase-grpc-timeouts
feat/buffer-account-peers-update
test/networkmapgeneration-changes
feature/base-manager
feature/flow-receiver
chore/benchmark-with-large-runner
refactor/handshake-initiator
client/ui-update-systray-icons
userspace-router
wgwatcher-test
output-if-key-already-exists
fix/relay-reconnection
feature/port-forwarding-client-codecleaning
detached2
test/callbacks-nil-iceconninfo
refactor/optimize-peer-expiration
enable-udp-port-for-docker-template
fix/relay-update
feature/apply-posture-netmap
fix/group-update-existing-resource
conntrack-stats
upgrade-okta-sdk
multi-price
test/conn-stat
set-min-parallel-tests-for-management
dns-interceptor
debug-dns
router-dns
add-static-system-info
debug-0.29.4
debug-0.33.0
account-refactoring
relay/2800_quic
route-get-account-refactoring
test/seed-random-routes
feature/get-account-refactoring
test/reconnect-race-condition
refactor/get-account-usage
feature/add-session-id-to-update-channel
improve-ipv4conn
fix/async-pion-event-handling
debug
add-offload
feature/validate-group-association-debug
fix/limit-conn-for-sqlite
test/engine-iface
test/transaction-for-jwt-sync
fix/engine-stop-in-foreground
feature/add-mysql-support
test-migration
refactor/header-size-values
relay/eliminate-gob
test/signal-dispatcher-with-relay
relay/debug
validate-icon
feature/ipv6-support
use-pre-expanded-peers-map
feature/use-signal-dispatcher
validate/peer-status
add-read-write-times
fix/sync-peer-race
feature/relay-status
netmap
evaluate/network-map-hash
fix/lower-dns-resolve-interval-on-fail
feature/relay
fix/go-mod-version
upgrade-nftables
synology-userspace-mode
fix/use-ip-for-default-routes-on-darwin
fix/proxy_close
enable-release-workflow-on-pr
deploy/peer-performance
feature/permanent-turn
feature/permanent-turn-proxy
deploy/posture-check-sqlite
feature/optimize_sqlite_save
debug-ios-behavior
fix/delete-route-only-after-adding
tshoot/windows-logger
remove-new-routing
refactor/eliminate-repo-dependency
add-arm-to-ci
refactor-demo-account-object
test/abc2
test/abc
send-ssh-rosenpass-config-meta
refactor-demo
ensure-schedule-never-runs-non-positive
feature/peer-validator-groupmgm
feature/peer-validator-fix
fix/include-active-dashboard-users
fix/handle-canceling-schedule
fix/geo-download
debug-google-workspace
yury/resolve-ip-to-location
feature/extend-sysinfo
sqlite-async-peer-status
yury/add-postgresql-store
fix/route
test-build
posture-checks-poc
debug-keycloak-idp
poc/netstack
for-pascal-tmp
peer-logout-management
manual-peer-logout
detached
chore/refactor-management
test/dns-bind
fix/enforce-acl-for-containers
yury/use-sync-map-in-updatechannel
fix/events-key-handling
filter-cache-on-load-account
fix/user-expiration
handle-user-context-cancellation
nb-client-k8s-statefulset
fake-addr
fix/iptables_in_docker
ebpf-debug
update-getting-started-flow-use-postgres
fix/peer_list_notification
feature/device-authentication-with-client-secret
feature/keep_alive
feat-groups-from-jwt
separate_proxy_from_wgconfig
fix/wg_conn
wg_conn_fix
wg_bind_parallel_processing
fix-rollback-get-acls
proxy_cfg_cleanup
performance-improvement-rego
update-lock-log-level
feat-client-side-acl
refactor/move_grpcserver_logic_to_account_manager
feature/event-storage
feature/update-idp-redeeming-invite
feature/api-peer-info
return-groupminimum-setupkey
feature/interface-bind
documentation_enhancement
fix-peer-registration
ssh
users_cache
pass-client-caller
client_caller_type
revert-283-feat-fix-windows-installer
periodic-peer-updates
ebpf
braginini/wasm
v0.72.4
v0.72.3
v0.72.2
v0.72.1
v0.72.0
v0.71.4
v0.71.3
v0.71.2
v0.71.1
v0.71.0
v0.70.5
v0.70.4
v0.70.3
v0.70.2
v0.70.1
v0.70.0
v0.69.0
v0.68.3
v0.68.2
v0.68.1
v0.68.0
v0.67.4
v0.67.3
v0.67.2
v0.67.1
v0.67.0
v0.66.4
v0.66.3
v0.66.2
v0.66.1
v0.66.0
v0.65.3
v0.65.2
v0.65.1
v0.65.0
v0.64.6
v0.64.5
v0.64.4
v0.64.3
v0.64.2
v0.64.1
v0.64.0
v0.63.0
v0.62.3
v0.62.2
v0.62.1
v0.62.0
v0.61.2
v0.61.1
v0.61.0
v0.60.9
v0.60.8
v0.60.7
v0.60.6
v0.60.5
v0.60.4
v0.60.3
v0.60.2
v0.60.1
v0.60.0
v0.59.13
v0.59.12
v0.59.11
v0.59.10
v0.59.9
v0.59.8
v0.59.7
v0.59.6
v0.59.5
v0.59.4
v0.59.3
v0.59.2
v0.59.1
v0.59.0
v0.58.2
v0.58.1
v0.58.0
v0.57.1
v0.57.0
v0.56.1
v0.56.0
v0.55.1
v0.55.0
v0.54.2
v0.54.1
v0.54.0
v0.53.0
v0.52.2
v0.52.1
v0.52.0
v0.51.2
v0.51.1
v0.51.0
v0.50.3
v0.50.2
v0.50.1
v0.50.0
v0.49.0
v0.48.0-dev2
v0.48.0
v0.47.2
v0.47.1
v0.47.0
v0.46.0
v0.45.3
v0.45.2
v0.45.1
v0.45.0
v0.44.0
v0.43.3
v0.43.2
v0.43.1
v0.43.0
v0.42.0
v0.41.3
v0.41.2
v0.41.1
v0.41.0
v0.40.1
v0.40.0
v0.39.2
v0.39.1
v0.39.0
v0.38.2
v0.38.1
v0.38.0
v0.37.2
v0.37.1
v0.37.0
v0.36.7
v0.36.6
v0.36.5
v0.36.4
v0.36.3
v0.36.2
v0.36.1
v0.36.0
v0.35.2
v0.35.1
v0.35.0
v0.34.1
v0.34.0
v0.33.0
v0.32.0
v0.31.1
v0.31.0
v0.30.3
v0.30.2
v0.30.1
v0.30.0
v0.29.4
v0.29.3
0.29.3
v0.29.2
v0.29.1
v0.29.0
v0.28.9
v0.28.8
v0.28.7
v0.28.6
v0.28.5
v0.28.4
v0.28.3
v0.28.2
v0.28.1
v0.28.0
v0.27.10
v0.27.9
v0.27.8
v0.27.7
v0.27.6
v0.27.5
v0.27.4
v0.27.3
v0.27.2
v0.27.1
v0.27.0
v0.26.7
v0.26.6
v0.26.5
v0.26.4
v0.26.3
v0.26.2
v0.26.1
v0.26.0
v0.25.9
v0.25.8
v0.25.7
v0.25.6
v0.25.5
v0.25.4
v0.25.3
v0.25.2
v0.25.1
v0.25.0
v0.24.4
v0.24.3
v0.24.2
v0.24.1
v0.24.0
v0.23.9
v0.23.8
v0.23.7
v0.23.6
v0.23.5
v0.23.4
v0.23.3
v0.23.2
v0.23.1
v0.23.0
v0.22.7
v0.22.6
v0.22.5
v0.22.4
v0.22.3
v0.22.2
v0.22.1
v0.22.0
v0.21.11
v0.21.10
v0.21.9
v0.21.8
v0.21.7
v0.21.6
v0.21.5
v0.21.4
v0.21.3
v0.21.2
v0.21.1
v0.21.0
v0.20.8
v0.20.7
v0.20.6
v0.20.5
v0.20.4
v0.20.3
v0.20.2
v0.20.1
v0.20.0
v0.19.0
v0.18.1
v0.18.0
v0.17.0
v0.16.0
v0.15.3
v0.15.2
v0.15.1
v0.15.0
v0.14.6
v0.14.5
v0.14.4
v0.14.3
v0.14.2
v0.14.1
v0.14.0
v0.13.0
v0.12.0
v0.11.6
v0.11.5
v0.11.4
v0.11.3
v0.11.2
v0.11.1
v0.11.0
v0.10.10
v0.10.9
v0.10.8
v0.10.7
v0.10.6
v0.10.5
v0.10.4
v0.10.3
v0.10.2
v0.10.1
v0.10.0
v0.9.8
v0.9.7
v0.9.6
v0.9.5
v0.9.4
v0.9.3
v0.9.2
v0.9.1
v0.9.0
v0.8.12
v0.8.11
v0.8.10
v0.8.9
v0.8.8
v0.8.7
v0.8.6
v0.8.5
v0.8.4
v0.8.3
v0.8.2
v0.8.1
v0.8.0
v0.7.1
v0.7.0
v0.6.4
v0.6.3
v0.6.2
v0.6.1
v0.6.0
v0.5.11
v0.5.10
v0.5.1
v0.5.0
v0.4.0
v0.3.5
v0.3.4
v0.3.3
v0.3.2
v0.3.1
v0.3.0
v0.2.3
v0.2.2-beta.1
v0.2.1-beta.5
v0.2.0-beta.5
v0.2.0-beta.4
v0.2.0-beta.3
v0.2.0-beta.2
v0.2.0-beta.1
v0.1.0-beta.3
v0.1.0-beta.2
v0.1.0-beta.1
v0.1.0-rc.2
v0.1.0-rc-1
v0.0.8-hotfix-1
v0.0.8
v0.0.7
v0.0.6
v0.0.5
v0.0.4
v0.0.3
v0.0.2
v0.0.1
v0.0.0
Labels
Clear labels
2021 Q4
2022 Q1
2022 Q1
accessibility
acl
agent
agent
Android
Android
api
authentik
automation
azure
battery-usage
bug
cache
client
client-ui
cloud
cloud-only
cloudflare
community
compatibility
config-idp
config-issue
connection
contribution
coturn
cross-vpn
dashboard
data-usage
distribution
dns
docker
documentation
duplicate
enhancement
enhancement
event-stream
feature-request
freebsd
getting-started
go
good first issue
gui
help wanted
home-assistant
idp
inconsistency
integration
integrations
ios
ipv6
jwt
k8s
keycloak
linux
login
macos
management-service
missing-docs
mobile
moved-internal
needs-review
netbird-ui
networking
new-platform
nginx
notification
okta
openwrt
packaging
peer-management
peer-management
peer-management
performance
postgres
posture-checks
psk
pull-request
question
refactor
relay
release
rfc
routes
security
security-related
self-hosting
server
signal
sleep-issue
ssh
ssl
status
store
synology
system-compatibility-issue
test-suite
third-party-integration
triage
triage-needed
troubleshooting
UX
waiting-feedback
windows
wontfix
zitadel
Mirrored from GitHub Pull Request
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
saavagebueno
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: SVI/netbird#148
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @jurgenhaas on GitHub (Jul 13, 2022).
I've installed netbird 0.8.2 on 3 hosts in 3 different locations.
They appear to be online but
netbird statuson each of them doesn't seem to be seeing the other hosts:On 2 of them I've enabled debugging and the log files are here:
bslog1.log
pcweb1.log
I can't ping between the hosts and when trying to ssh into them, I get the error
Error: dial tcp 100.64.94.238:44338: connect: no route to hostAny idea what's wrong?
@mlsmaycon commented on GitHub (Jul 13, 2022):
Hello, @jurgenhaas sorry to see that you are facing some connectivity issues.
Thanks for sending so much information, after seeing your logs, it seems like you have 3 peers with unusual networking setups, all 3 have interfaces with 169 addresses, and 2 with many network ranges (docker|VMs maybe?). With that said, they are attempting to negotiate the best connection path, but can't get into an agreement within 15s and the ICE protocol agent is marking them as failed.
Could you confirm a few things? Are there any outgoing filters blocking UDP traffic in any peer? Also, could tell us if you have any other VPN running on these nodes?
If you think is best, we can move this conversation to our community slack
@jurgenhaas commented on GitHub (Jul 13, 2022):
Thanks @mlsmaycon for getting back to me on this. You're right, there are a lot of docker networks on each of our hosts. I have deleted most of them, so that it's down to 5-6 networks on each host. But that can't be persistant, as we have lots of docker based CI/CD processes, each of which setting up their own internal network dynamically.
Now I get pings between 2 of the 3 hosts. bslog1 is still not playing with us. There should not be any outbound filter being applied on any of the hosts though.
The 2 hosts that can ping each other, still can't ssh into each other although the ssh service is enabled in the netbird account. It responds with an
i/o timeouton port 44338 on either of the 2 hosts. I guess I don't have to open those ports in the firewall as that connection should go through the VPN tunnel, right?Last but not least, no there are no other VPN service running on those hosts.
@mlsmaycon commented on GitHub (Jul 13, 2022):
Ok @jurgenhaas, regarding the interfaces, you can filter them all at once if they match a common prefix, to do that you can update the config file
/etc/netbird/config.jsonand update theIFaceBlackListwith this prefix.Regarding the SSH issue, you can validate the firewall configuration with the following iptables rule:
if that doesn't help you can remove the rule with:
After you apply these changes, could you please share new logs from bslog1 and another peer that it should connect to?
@jurgenhaas commented on GitHub (Jul 14, 2022):
OK, my block list (not black list!) now looks like this:
Is it correct, that
wt0in blocked too?Anyways, here are the new logs:
bslog1.log
pcweb1.log
I now have 4 hosts altogether, 3 of which connect to each other except bslog1.
The
netbird sshconnection now also works, when I open that port on the target machine. Still confused why we need an open port when the ssh should be established through the vpn tunnel.@mlsmaycon commented on GitHub (Jul 14, 2022):
Hello @jurgenhaas, after checking the logs, it seems that bslog1 is restricting outgoing traffic for UDP; this is more or less clear when checking pcweb1 records and seeing the exchange of only a local address from bslog1.
Even though NetBird doesn't require open incoming ports, we still need outgoing UDP traffic to be allowed. We will work on that as this case may appear more in the restricted firewall configuration scenario, but it is still a good reason for us to introduce TCP relaying.
To fix the issue, you can test the following rule:
You can also check if your default OUTPUT chain policy is set to deny with the following command:
You should see a line similar to
Chain OUTPUT (policy ACCEPT)orChain OUTPUT (policy DROP); this is the default behavior of your output chain and if is set to DROP, you may need to manage every outgoing connection.Regarding the SSH access, the issue is very similar, even with the wt0 interface, we still follow the iptables rules. I am currently working on our router feature which will introduce minimal firewall management for traffic coming/going through the interface but is yet, too early for me to give you more details on that.
@jurgenhaas commented on GitHub (Jul 14, 2022):
Very interesting, thanks for all your support on this.
On bslog1, we see this:
As I recalled, there is no outbound filter on that host at all.
Then I recalled, that we also installed
nftableson that host for testing CrowdSec, another exciting open source tool which requires that firewall. I stop nftables and voila, bslog1 connected right away to all the other hosts and things seem to be working great.I guess my next step now should be to try self-hosting the netbird dashboard.
@mlsmaycon commented on GitHub (Jul 14, 2022):
Really great that you found out the issue. Just out of curiosity, was nftables running on the nodes you had to handle ssh access?
For self-hosting we got a quick start guide at https://netbird.io/docs/getting-started/self-hosting
@jurgenhaas commented on GitHub (Jul 14, 2022):
nftables was only running on bslog1, the one host that didn't connect to all the others.
What's interesting now is that I can SSH from my local host into all 3 others. But from the others I can not SSH into any of the other, although they all show being connected to all other hosts with
netbird status. The error message saysdial tcp 100.64.94.238:44338: i/o timeoutThat sounds like some outbound firewall issue, because inbound they should all be OK as I can SSH into them from one of the hosts, here locally. Any idea?
@mlsmaycon commented on GitHub (Jul 14, 2022):
Besides a possible outgoing firewall issue, we can check routing configuration as well.
Could you share the output of
ip route | grep 100from both peers? Also, are they able to ping each other?@jurgenhaas commented on GitHub (Jul 14, 2022):
Sure, here is both the routing info and the iptable config for both hosts:
For the second host I have added outgoing accept rule for port 44338. still no difference.
@mlsmaycon commented on GitHub (Jul 14, 2022):
Hi @jurgenhaas, unless the peers aren't able to ping or you added the rule for 44338 associated with the wrong output interface, all seems ok.
A step-by-step troubleshoot I would do know to get to the bottom of this is:
After checking basic ping works (might neet to allow in iptables), you can use netcat to test the port without the netbird agent:
if that timeout as well, we need to investigate if the traffic gets out of the wt0 interface or it is being dropped on the other node. You can do that by opening 2 new terminal windows, 1 connecting to pcweb1 again and another connecting to bslog1 , once you do that you can run tcpdump as follow:
On pcweb1:
and On bslog1:
Then you can repeat the test with either netcat or the netbird agent bin.
You should see samples from both directions like this:
If you don't see the exchange between both nodes it means that the packets are being dropped on one of the sides. At this point, if you don't see a packet on one of the peers, check its INPUT chain for that initial INPUT rule I've sent you.
@jurgenhaas commented on GitHub (Jul 15, 2022):
This is all somehow strange. When I tried ssh again this morning, it almost worked everywhere. Only bslog1 is still causing issues. Maybe connection negotiations took some time yesterday, so that it didn't work yet.
Now, here is the situation:
The nc-command above has an issue with
-G 5which is not supported, I had to remove that. It times out from pcweb1 to bslog1, but it works from my local host to bslog1 and vice versa.The tcpdump command has several issues. I guess
wg0needs to be replaced withwt0but then I get the outputtcpdump: 'port' modifier applied to ip hostand it quits right away and doesn't do anything.What really confuses me:
That seems to tell, that the firewall does not seem to be the problem because bslog1 can communicate in and out, at least with my local host. But it can't with any of the others. As ping doesn't work either, it could be a routing issue?
@jurgenhaas commented on GitHub (Jul 15, 2022):
One more observation: bslog1 is hosted by Hetzner and it's the only one, where the upstream firewall from Hetzner is enabled with these settings:
All other hosts at Hetzner use iptables and have their settings like this:
I've just provisioned another host at Hetzner with the
allow allsetting and using iptables, and that works fine too.So, the solution seems to be to not use the Hetzner firewall but only iptables. However, that leaves the question why my local host can communicate with bslog1 where all the others can't?
@jurgenhaas commented on GitHub (Jul 15, 2022):
Maybe this helps to explain it:
on my local host,
netbird status --detailshows that the connection type to all other hosts is P2P and that it's a direct connection. for bslog1 it shows that the connection type is relayed and the connection in NOT direct.on all the other hosts, the connection type to bslog1 is also relayed but the connection is direct.
Maybe that's the problem that a relayed connection can not be direct?
@mlsmaycon commented on GitHub (Jul 15, 2022):
Hi @jurgenhaas Hetzner firewall explains the issue. It is a stateless firewall, which means that it doesn't keep track between in/out packets.
In this case, you may add to this server firewall an UDP port range equals to the result of:
This range is used by the processes when negotiating connections. If 51820 is not part of this range, you can also create a rule for it as well.
You can remove the rule number 9 from your screenshot because the NetBird SSH traffic going through this firewall will be encapsulated in Wireguard packets.
@jurgenhaas commented on GitHub (Jul 15, 2022):
That was it, thanks a lot. I had to restart the netbird service though in order to get connected.
What I still don't understand, why my local host was able to ssh into bslog1 even before that new firewall rule. Otherwise this is ready to be closed from my point of view.
Great support @mlsmaycon 🥇
@mlsmaycon commented on GitHub (Jul 15, 2022):
That is great @jurgenhaas.
Regarding the issue, I fear that you didn't have established a proper connection between peers in Hetzner and the bslog1 because NetBird attempt to switch to the native interface without proxy when it sees hosts with public IPs. I opened another issue to verify this logic here #393
@v1rusnl commented on GitHub (Nov 6, 2024):
I would suggest to edit the Netbird docs section regarding Hetzner ( https://docs.netbird.io/selfhosted/selfhosted-guide#hetzner ) . The determination in the docs implies, that Hetzners firewall is stateless in any case, but that is not true (in meanwhile). It's just used in the dedicated server packages.
The Hetzner cloud packages use stateful firewalling, see https://docs.hetzner.com/cloud/firewalls/faq , so there is no need to open additional port ranges. Proof: I use Netbird in one of those packages (CAX11).