App Connector domains not resolved via MagicDNS on Linux (systemd-resolved split DNS not configured)
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 48/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- github-actions, linux
- Lĩnh vực
- devops, networking
Hướng nghiên cứu
Bắt đầu từ luồng kết nối Linux của tailscale-action và kiểm tra cách các miền App Connector được cung cấp thông qua netmap của node cũng như cách systemd-resolved được cấu hình. Sử dụng kịch bản Ubuntu runner để xác minh rằng chỉ các miền App Connector được định tuyến qua tailscale0, DNS bên ngoài vẫn hoạt động và các route mạng con khả dụng trước khi action hoàn tất.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Problem
When using the tailscale/github-action with App Connectors, DNS queries for App Connector domains are not automatically routed through MagicDNS (100.100.100.100) on Ubuntu GHA runners. This means the App Connector never intercepts DNS, never injects subnet routes, and connections to internal resources (e.g., AWS RDS via App Connector) fail silently.
Root Cause
On Linux with systemd-resolved, Tailscale needs to configure split DNS so that App Connector domain queries go through the tailscale0 interface (MagicDNS). Currently this doesn't happen automatically.
The only way to force DNS through MagicDNS is resolvectl domain tailscale0 '~.', but this routes all DNS through MagicDNS, breaking external resolution (github.com, AWS APIs, OIDC endpoints, etc.) — which is not viable in CI.
On macOS/Windows, Tailscale integrates with the OS DNS stack more tightly and this works transparently.
Expected Behavior
After tailscale-action connects, App Connector domains should be resolvable without manual intervention. Ideally:
- The action reads App Connector domain config from the node's netmap
- Configures
resolvectlto route only those domains throughtailscale0- e.g.,
resolvectl domain tailscale0 '~rds.amazonaws.com'for RDS endpoints
- e.g.,
- Waits for subnet route injection before completing
Current Workaround
We had to implement a manual workaround in our composite action:
- name: Verify DB connectivity via Tailscale App Connector
shell: bash
run: |
# 1. Query MagicDNS directly (bypass systemd-resolved)
RDS_IP=$(dig +short @100.100.100.100 "$RDS_HOST" | tail -1)
# 2. Wait for Tailscale to inject subnet route
for i in $(seq 1 5); do
if ip route show table 52 | grep -q "$RDS_IP"; then break; fi
sleep 2
done
# 3. Verify TCP connectivity
for i in $(seq 1 5); do
if bash -c "echo > /dev/tcp/$RDS_IP/3306" 2>/dev/null; then break; fi
sleep 2
done
# 4. Add to /etc/hosts so tools can connect by hostname
echo "$RDS_IP $RDS_HOST" | sudo tee -a /etc/hosts
This is fragile, requires knowledge of Tailscale internals (table 52, MagicDNS IP), and defeats the purpose of App Connector's transparent DNS interception.
Environment
- Runner: Ubuntu 24.04 (both standard GHA and Blacksmith runners)
- tailscale/github-action: v4
- Use case: Connecting to AWS RDS (Aurora MySQL) via App Connector from GHA for database migrations
- ACL: App Connector domains configured in
nodeAttrswithtailscale.com/app-connectors
Related Issues
- #129 — DNS not working (same symptom, different workaround)
- #101 — Unreliable DNS during container builds (overlapping root cause with
resolv.confordering) - #51 — General DNS issues with Tailscale on GHA
- tailscale/tailscale#16384 — Exit node doesn't respect App Connector DNS
- Ngôn ngữ chính
- TypeScript
- Star
- 938
- Fork
- 137
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của tailscale/github-action
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
tailscale/github-action#283 · 1 bình luận · 1 reaction ·
-
fr
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 68/100
tailscale/github-action#317 ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 48/100
tailscale/github-action#316 · 2 bình luận ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 52/100
tailscale/github-action#315 ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 76/100
tailscale/github-action#313 · 1 reaction ·
Tất cả issue của tailscale/github-action
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
Eynzof/Hermes-CN-Desktop#610 ·
-
[Bug]: Matrix progress drafts fail with "Matrix runtime not initialized" during tool activity Đang mởbug clawsweeper:linked-pr-open clawsweeper:needs-live-repro clawsweeper:no-new-fix-pr impact:message-loss issue-rating: 🐚 platinum hermit P2 regression
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
Client support matrix inclusion Đang mởenhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
calcite-components needs triage refactor
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Esri/calcite-design-system#15203 ·
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 78/100
fullcalendar/fullcalendar#8106 ·