mirror of
https://github.com/amnezia-vpn/amnezia-client.git
synced 2026-10-15 13:52:15 +00:00
[GH-ISSUE #3083] AmneziaVPN 5.0.1.5 (macOS, arm64): клиенту не присваивается собственный Address из конфига AmneziaWG — интерфейс получает IP шлюза вместо адреса из [Interf… #1427
Open
opened 2026-10-13 20:42:16 +00:00 by bsakaguchi
·
1 comment
No Branch/Tag specified
dev
feat/api-tests
feat/otp-login
fix/show-locked-xray-settings-page-for-servers-without-write-access
fix/serialize-log-record-writes-and-pin-log-date-format-locale
fix/libagw-review-fixes
fix/ios-xray-ipv6-leak
fix/macos-xray-ipv6-leak
feat/add-support-include-split-tunnel
fix/win-xray-app-split-tunneling
fix/bug-when-saving-after-canceling
fix/xray-reconnect-crash
fix/share-empty-config-on-ssh-timeout
fix/ssh-credentials-input
fix/updater-verify-signature
fix/async-ssh-threading
fix/xray-check-inet-and-liveness-monitor
fix/selfhosted-server-installations
feat/add-support-ikev2-macos
fix/icons-different-color-themes
feat/add_support_arm_windows
feat/add-deep-link
feat/fixed-push-notifications-on-VPN-connect-disconnect-2
feat/implement-QR-code-generation-and-scanning
feat/file-password-protection
feature/add-local-proxy
feat/add-support-split-tunnel-macos
feat/tests
fix/android-register-unacknowledged-purchase
fix/share_on_linux
mirroring-to-outside
feat_copy_docker_configs
feat/self-diagnostics-log
feat/amnezia-free-vless-switch
fix/conan_build_android_on_win
fix/linux-reconnect-dns-reliability
fix/windows-connection-stability
fix/linux-reconnect-refactoring
fix/ios-groupidentifier-order
feat/xray-subscription-link
fix/minor-fixes
fix/xray-config-inplace-edit
feat/amnezia-sdk-typed-api
feat/amnezia-sdk-integration
feat/force-update-native
refactor/marketplace-update-popup
feat/force-update
fix/valnurability_dev
chore-xcode-version
fix/empty-i1-i5
build_qt_6_10_1
master
feat/protocol-selection
fix/openvpn_install
feat/locations_change
feat/locations_change_rework
feature/local-proxy-integration
fix/filepicker_atv
fix_valnurability
fix/macos-ne-codesign-4.8.19.0
temp-branch-for-testing
fix/rebased_4_8_19_linux_fix_error
feat/proxy-storage-cache
fix/zeroed-params
fix/killswitch-blocknets-linux
update/translation_RU
fix/self_hosted_reinstall_error
feat/selfhosted-dns
fix/agp_version_up
feat/switch_to_alive_protocol
feat/support_multipeer
server_scripts_update
fix/extended-vless-configuration
chore/apple-ci-cd-macos-versions
feat/add-telemt
fix/android_keystore_read_error
feat/add-mtproxy
chore/bump-qt-version
fix/make_dbus_async
feature/dns
rebase/apple-tv-target-on-conan
fix/outbound_freedom_xray_with_dns_fix
feat/apk_support
feat/fallback-proxy
feat/apple-tv-target
fix/dns_reconnection_issue
feat/fixed-push-notifications-on-VPN-connect-disconnect
fix/linux-firewall
docker-regional-locks
appstore-review-popup
feat/storekit2
fix/uninstall-split-tunnelling-driver
revert-2376-chore/license-file
support_16kb_android
bump_version
feat_add_review_android
bugfix/translation-absence-on-subscription-key-page
feat/location-separation-by-region
bugfix/text-moving-when-resing-window
fix_backup
feature/add-purchase-android
bugfix/moved-text-while-resizing-window
bugfix/incorrect-killswitch-restore-from-backup
fix/backup-exclude-secondary-api-configs
feat/proxy-fields-for-dev-console
bugfix/ovpn-ios-fix
bugfix/linux-bundle-libraries
fix/xray-app-split-win
fix/upload-to-s3
chore/add-release-date-upload
feat_add_webview_support
feature/configuration-transfer-through-qr
feat/bot-key-unlink-device
fix/ad-link-lang-support
fix/qsecuresettings-with-android
feat/add-support-arm64-win
spanish-translations
fix/context-menu
feat/add-system-dns-support
fix/qt6-9-support
fix/qt6_9_support
bugfix/strict-killswitch-ui
android-7
chore/minor-bugfixes
feature/awg-net-fix-macos-wakeup
fixbug/ios18
bugfix/ios-ne-crash
fix/linux-tray-quit-button
cryptpad-support
bugfix/disable-linux-killswitch
fix/minor-ui-fixes
feature/setup-guid-tun2socks
feature/linux-ipsec
feature/ipsec-linux
refactoring/server-config-in-classes
feature/macos-ipsec
fix/ui-fixes-after-merge-with-d20ed4a
chore/focus_control_after_qt_6.9_migration
feature/integrate-xray-as-a-library
maxos-awg-fix
feature/add-new-awg-docker-image
chore/update-3rd-prebuild
feature/test-news
fix/api-conf-files
bugfix/split-tunneling-with-api-config
bugfix/ios-awg-new-fields
feature/special-handshake-2
feat/xray-api-support
fix/desktop-entry
bugfix/shadowsocks-cipher-setting-not-changing
feature/update-tap
bugfix/openvpn_import_fix
feature/ability-to-change-port-after-installing-xray
bugfix/strict-mode-ovpn
bugfix/win-ipv6-ovpn
bugfix/subnet-adress-setting
exception-podman-docker
bugfix/fix-listviewtype-scrolling
bugfix/win-disabled-ipv6
bugfix/win-ipv6-disabled-ovpn
feature/killswitch-strict-mode
feature/awg-network-check
feature/empty-split-tunneling-list
feature/support-info
chore/update-go-version
checking-Linux-version
update_server_scripts
bugfix/button-selection-easy-setup-page
feature/old-api-proxy
patch/user-checking
fix/correcting-version
support-podman
support_podman
user-checking-patch
feature/check-docker-version
feature/allowed-dns-list
without_lsof
chore/error-body
Update-amneziavpn_ru_RU
shiroow-patch-8
shiroow-patch-7
shiroow-patch-6
shiroow-patch-5
shiroow-patch-4
shiroow-patch-3
shiroow-patch-2
shiroow-patch-1
check_sudo_permissions
feature/euphoria
add_next_octet_to_ip_settings
bugfix/mobile-controllers-init
euphoria
bugfix/android-crush
feature/macox-network-extension
bugfix/pre-release-hotfixes
bugfix/ipsec-pfs
chore/ios-site-links
checking_sudo_permissions
feature/android-tv
improve_navigation_cpp
bugfix/linux-firewall-install
fixbug/wireguard-handshake-time
ReadmeRu_full
feature/xray-user-management
feature/subscription-end-date
chore/clang-format
feature/ru-in-readme
chore/increased-api-timeout
chore/deploy-workflow
bugfix/services-list-scroll
wheel_group_suppor
chore/bump-xcode-version
fixbug/mac-network-extension
feature/android-gpb
feature/page-home-drawer-country-selection
checking-sudo-users
bugfix/service-info-from-response
fixbug/build-macos-ne-2
android-qt-6.7.3
fixbug/build-macos-ne
bugfix/wg-windows-log-folder
feature/psk-key-api-request
bugfix/user-management-qml-warnings
fix/macos-network-extension
fixbug/macos-NE-build
bugfix/fixed-isDevEnv-initialization
bugfix/revert-ios-ovpn
feature/tun2socksSrv
fix/disable_singleapp
feature/awg-wg-name-resolving
feature/disable-dhcp
bugfix/allowed-ips-old-configs
feature/goodbyedpi
feature/add-exception-log
refactoring/remove-ipv6-from-default-routes
refactoring/singleapplication-submodule
macos-dirty-build
test/gateway
Update-amneziavpn_fa_IR.ts
bugfix/ipsec-win
fix/xray-custom-port
improve-tab-navigation
test-win-11
feature/android-tv-remote-control-support
KsZnak-patch-1
feature/awg-wg-qr
bugfix/fix-loopback-splittunel
fix/setup_host_firewall
feature/android-xray
feature/openvpn-pass
feature/connection-string
fix/clickable-errors
bugfix/api_1100_fix
feature/graphview
testsvg
feature/update-win-awg
feature/open-as-amnezia
feature/update-mozilla-upstream
bugfix/qr-code-cutting
feature/native-wg-psk
test/awg-centos
bugfix/hide_error
feature/add-uninstaller-checkbox
bugfix/cancel-button-on-install-page
bugfix/anchors-page-home-warning
awg-udptlspipe
button-focus-fix
revert-677-fix/logger
bugfix/Revert_PR_596
bugfix/allowed-ips-api-configs
bugfix/on-escape-pressed
feature/auto-scroll-for-server-selection-list
fix/ui-fixes
translations/update_fa_IR.ts
feature/new-awg-docker-container
bugfix/awg_ipv6_fix
feature/tab-navigation
fix/username-no-autocapitalization
sure
refactoring/servers-model-cleanup
feature/wg-mtu-setup-ios
3rd_adaptation_to_diff_OS
sudo_not_found
test/docker-ce
bugfix/double_clear_server_from_amnezia
fix/android
client/3rd-prebuilt
revert-559-KsZnak-translation-ru-ex
KsZnak-translation-ru-ex
KsZnak-br1
KsZnak-text-change
feature/api-awg
feature/error-code-output
feature/win_x32_builds
text/debug-output
feature/ovpn3-desktop-cli
bugfix/secureqsettings-deadlock
refactoring/change-settings-when-connected
files_check
ArchLinux-support
second_adaptation_to_diff_os
sudo
refactoring/android-build
adaptation_to_different_os
feature/online_installer_for_v4
update_to_r2
bugfix/return-after-installation
feature/custom_drawer_component
bugfix/split-tunneling
bugfix/existing-awg-container
revert-370-feature/custom_drawer_component
bugfix/adapted_awg_questiondrawer
bugfix/updated_drawer_height_pageserverdata
bugfix/translated_new_source_strings_to_chinese
feature/split-tunneling-config
feature/accessibility-support
branch_connectivity_change_fix
feature/ikev2_android
android_ss_transport
bugfix/macos_fixes
feature/nextcloud-support
feature/macos_network_extension
android_pt_transport_source
feature/ios-openvpn3-pluggable-transport-Cloak
bugfix/cloak_for_desktops_fix
arm-build-macos
fix-macos-build-brew
bugfix/ios-build-openvpnadapter-from-source
feature/download-native-wireguard-config-on-connect
feature/v2ray-container
bugfix/dpkg-busy-checking-stuck
feature/online-installer
dev-killswitch
dev-netadapters
5.0.3.0
5.0.2.1
5.0.2.0
5.0.1.5
5.0.0.5
5.0.0.2
4.8.21.0
4.8.19.0
4.8.18.0
4.8.17.0
4.8.16.0
4.8.15.4
4.8.15.0
4.8.14.5
4.8.14.1
4.8.12.9
4.8.12.8
4.8.12.7
4.8.12.6
4.8.11.4
4.8.11.3
4.8.11.2
4.8.11.1
4.8.11.0
4.8.10.0
4.8.9.2
4.8.9.1
4.8.9.0
4.8.8.3
4.8.8.2
4.8.8.1
4.8.7.2
4.8.7.1
4.8.7.0
4.8.6.0
4.8.5.0
4.8.4.5
4.8.4.4
4.8.4.3
4.8.4.2
4.8.4.1
4.8.4.0
4.8.3.2
4.8.3.1
4.8.2.3
4.8.1.9
4.8.1.0
4.8.0.5
4.7.0.0
4.6.0.3
4.6.0.1
4.5.3.0
4.5.0.0
4.4.0.0
4.3.0.0
4.2.1.0
4.2.0.1
4.1.2.0_cloak_pt_experimental
4.1.0.1
4.0.8
3.1.0
3.0.8
3.0.7
3.0.5
2.1.2
2.1.0
2.0.10
2.0.9
2.0.8
2.0.7
2.0.6
2.0.5
2.0.1
2.0
1.9.1
1.9
1.8
1.7
1.6
1.5
1.4
1.3
1.2
1.1
1.0
No labels
pull-request
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference
amnezia-vpn/amnezia-client#1427
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
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 @specialprojectskir-alt on GitHub (Aug 28, 2026).
Original GitHub issue: https://github.com/amnezia-vpn/amnezia-client/issues/3083
Environment
7d4f3e0)72ee32a) — same server, same network, same protocolDescribe the bug
After upgrading from 4.8.21.0 to 5.0.1.5, the VPN connects successfully (handshake completes and status becomes "Connected"), but no traffic passes through the tunnel.
No websites load, and even a raw ping by IP (bypassing DNS) times out.
To Reproduce
ping 1.1.1.1— 100% packet loss / timeout.ping ya.ru— DNS resolution fails because no traffic reaches the configured DNS servers.The issue occurs both with and without site split tunneling enabled.
Root cause found
Comparing the client's exported AmneziaWG configuration against the actual state of the interface after connecting reveals a mismatch.
Config
The
[Interface]section of the exported configuration contains:Actual interface state
While connected on 5.0.1.5,
ifconfigshows:The interface is assigned
10.8.1.1as both the local and point-to-point address, instead of the client's assigned10.8.1.3pointing to the gateway10.8.1.1.The expected state is:
This appears to cause outgoing packets to use the gateway's address as their source address, preventing traffic from being routed correctly despite the WireGuard handshake completing successfully.
Routing
Routing itself appears correct and does not seem to be the cause of the issue:
This is consistent with the standard WireGuard full-tunnel route split.
DNS
DNS is configured correctly at the system level (
scutil --dnsshows1.1.1.1/1.0.0.1).DNS resolution fails because no traffic appears to leave the machine through the tunnel, rather than because of a DNS configuration issue.
Expected behavior
ifconfigshould show:matching the
Addressfield in the AmneziaWG configuration.This is the behavior observed with the previously working version 4.8.21.0.
Additional notes
@HeisLuka commented on GitHub (Sep 9, 2026):
I checked this against current
dev.There are real source-level address handling problems here, but I think one distinction is important before attributing the observed
.1directly to the exported config.First: the exported
.confis not necessarily the active peerFor a self-hosted server, exporting a native AWG configuration currently does not simply serialize the peer that the desktop client is using.
ExportController::generateNativeConfig()calls:and then registers the returned client ID:
For AWG/WireGuard,
createConfig()allocates another peer/client address on the server.Therefore this sequence is possible:
So:
does not by itself prove that the runtime ignored the
Address = 10.8.1.3line.They may be two different peers.
That is worth separating from the actual runtime bug.
Runtime does not use
[Interface] Addressas its authoritative valueFor desktop AWG/WireGuard,
LocalSocketController::activate()obtains the local address from the structured configuration:So the authoritative runtime path is:
It is not:
This matters because the current AWG model stores both representations independently:
toJson()serializesclientIpseparately, andfromJson()restores it separately from the native configuration.I don't see an invariant equivalent to:
being enforced when an existing stored profile is activated.
So a state such as:
is representable by the model.
And if it occurs, the daemon will use:
because
clientIpwins.This creates a dual-source-of-truth problem
At profile creation/import time the two fields are normally generated together.
But after:
there are now two independently persisted copies of the same semantic value.
The useful invariant should be:
rather than:
This is especially relevant to a reported:
upgrade because the configuration model changed substantially between those generations.
I cannot prove from the source alone yet that this exact user's stored
clientIpbecame.1during migration, but current architecture makes that mismatch possible and provides the exact path by which a stale/wrong structured value would reachutun.There is also a separate macOS point-to-point address bug
IPUtilsMacos::addIP4AddressToDevice()receives:and correctly uses that as the local interface address.
So if this function receives:
it does not independently replace it with:
However, the point-to-point destination setup itself is problematic.
The code explicitly creates a
/32mask:and then calculates
ifra_broadaddrfrom the local address:With a
/32:therefore:
So if the correct client address were
.3, this code naturally describes:rather than:
The tunnel peer/gateway is not involved in this calculation.
I also do not see a separate
SIOCSIFDSTADDRoperation establishing the intended point-to-point peer address.serverIpv4Gatewaycannot currently fix that directly eitherThere is another semantic problem in the daemon input.
LocalSocketControllercurrently does:But
hostNamein this configuration represents the public VPN endpoint, e.g.:not the inner tunnel peer/gateway:
So the model currently conflates concepts that should be distinct:
Before wiring
serverIpv4Gatewayinto the macOS point-to-point configuration, its semantics need to be corrected.Why the WireGuard handshake can still succeed
A successful handshake does not validate the inner tunnel address.
The control plane needs approximately:
It can therefore produce:
while the inner interface is configured with an invalid/conflicting source address.
For example:
can still permit encrypted WireGuard transport to the public server endpoint while making the inner routed data plane unusable.
So:
must not be treated as proof that:
One diagnostic would identify the exact
.1originBefore changing anything, I would log these values immediately before sending the activation request to the daemon:
For this report the interesting outcomes are:
Current source makes Case C look much less likely because
IPUtilsMacosdirectly consumesm_deviceIpv4Address.I would also compare the active peer against the server:
and the server
[Interface] Address.If both server interface and the active client claim:
that should be detected as an invalid configuration immediately.
Suggested fix boundary
I would address this as an address-identity contract rather than patching one macOS ioctl.
Conceptually separate:
and give each exactly one owner.
Then:
should be generated from the canonical structured state, or the structured state should be parsed once from the native config.
They should not remain two independently mutable authoritative representations.
Before activation:
should either be guaranteed by construction or validated explicitly.
A mismatch should not silently choose one representation.
macOS should explicitly establish point-to-point semantics
For a desired configuration:
the resulting interface state should deterministically be:
The peer destination should come from an explicit tunnel-peer value.
It should not be derived as the
/32broadcast address of the client IP.Activation should reject address conflicts
At minimum these states should be forbidden:
and:
A connection should fail before
Connectedrather than successfully handshaking with an invalid inner address.Export semantics are also worth making clearer
Because exporting a native config currently creates/registers another client peer, an exported native config should not be used diagnostically as:
unless the UI explicitly offers such an operation.
There are two different actions:
They should ideally have different semantics/naming.
Regression cases
Expected:
Expected:
not silent selection of one copy.
Verify after migration:
all identify the same client.
and stored client:
Expected:
even if the AWG handshake itself would succeed.
Expected:
and diagnostics clearly distinguish the two peers.
The local address and point-to-point peer must remain stable.
must not depend on route mode.
So my current classification would be:
partially confirmed, with two source-confirmed address-state bugs.
What is not yet proven is the exact operation that changed this reporter's active structured
clientIpto10.8.1.1.What is confirmed in current
devis:the runtime client address comes from a structured
clientIp, while the native AWG config stores another copy of the same address with no enforced equality invariant;the macOS
/32interface setup derives the point-to-point destination from the local address itself and does not explicitly use the inner server tunnel address.The three-value diagnostic above should identify the exact
.1origin in one reproduction.