Hướng dẫn đầy đủ: Cài đặt Tailscale Exit Node trên MikroTik RouterOS v7¶
Tổng quan¶
Tài liệu này hướng dẫn chi tiết cách cài đặt và cấu hình Tailscale Exit Node trên MikroTik RouterOS v7 sử dụng container. Exit Node cho phép route toàn bộ internet traffic của các thiết bị Tailscale qua MikroTik router, hoạt động như một VPN server[1].
Yêu cầu hệ thống¶
Phần cứng và phần mềm¶
- RouterOS v7.6 trở lên (hỗ trợ container)
- Architecture: x86_64, ARM64, hoặc ARM32v7
- RAM: Tối thiểu 512MB (khuyến nghị 1GB+)
- Storage: Tối thiểu 2GB cho container và image cache
- Internet connection: Kết nối internet ổn định với IP public
Kiểm tra cấu hình hiện tại¶
# Kiểm tra version và architecture
/system resource print
# Kiểm tra disk space
/disk print
/system resource print
Bước 1: Chuẩn bị RouterOS¶
Kích hoạt Container Mode¶
# Enable container device mode
/system/device-mode/update container=yes
# Thông báo: Phải reboot trong vòng 5 phút
# Thực hiện HARD REBOOT qua hypervisor (đối với CHR)
Quan trọng: Với MikroTik CHR, phải thực hiện hard power cycle qua hypervisor, không được dùng soft reboot từ RouterOS.
Xác minh container đã kích hoạt¶
Bước 2: Thiết lập mạng cho Container¶
Tạo Virtual Ethernet Interface¶
Tạo Bridge và cấu hình IP¶
# Tạo bridge cho container
/interface/bridge/add name=dockers
# Gán IP cho bridge
/ip/address/add address=172.17.0.1/16 interface=dockers
# Thêm veth vào bridge
/interface/bridge/port add bridge=dockers interface=veth1
Cấu hình NAT cho container¶
# NAT cho container traffic ra ngoài
/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.17.0.0/16 out-interface-list=WAN comment="Container NAT"
Bước 3: Thiết lập Storage¶
Sử dụng external storage (khuyến nghị)¶
# Format external disk (nếu chưa có)
/disk format sata1 file-system=ext4 label=storage
# Tạo cấu trúc thư mục
/file add name=sata1/containers type=directory
/file add name=sata1/containers/tailscale type=directory
/file add name=sata1/pull type=directory
/file add name=sata1/mounts type=directory
/file add name=sata1/mounts/tailscale type=directory
Cấu hình Container Registry¶
# Sử dụng external storage cho image cache
/container/config set registry-url=https://registry-1.docker.io tmpdir=sata1/pull
Bước 4: Tạo Tailscale Auth Key¶
Trong Tailscale Admin Console¶
- Truy cập Tailscale Admin Console
- Vào Settings → Keys
- Tạo Auth Key với cấu hình:
- Reusable:
true(để có thể setup lại) - Ephemeral:
false(persistent device) - Pre-approved:
true(tự động approve) - Tags: Tùy chọn gắn tag
Auth key có dạng: tskey-abcdef1432341818[1]
Bước 5: Cấu hình Environment Variables¶
Tạo environment cho Exit Node¶
# Xóa envs cũ (nếu có)
/container/envs remove [find name="tailscale"]
# Cấu hình Exit Node
/container/envs/add name="tailscale" key="TS_AUTH_KEY" value="tskey-your-auth-key-here"
/container/envs/add name="tailscale" key="TS_EXTRA_ARGS" value="--advertise-exit-node"
/container/envs/add name="tailscale" key="TS_HOSTNAME" value="mikrotik-exit-node"
/container/envs/add name="tailscale" key="TS_STATE_DIR" value="/var/lib/tailscale"
/container/envs/add name="tailscale" key="TS_AUTH_ONCE" value="true"
Tạo Mount Point¶
# Mount point cho persistent state
/container/mounts/add name="tailscale" src="sata1/mounts/tailscale" dst="/var/lib/tailscale"
Bước 6: Tạo và khởi động Container¶
Sử dụng Official Tailscale Image¶
# Tạo container với official image
/container add remote-image=tailscale/tailscale:latest interface=veth1 envlist=tailscale root-dir=sata1/containers/tailscale mounts=tailscale start-on-boot=yes hostname=mikrotik dns=8.8.8.8,8.8.4.4 logging=yes
Khởi động container¶
# Kiểm tra trạng thái
/container print
# Start container
/container start 0
# Xem logs để debug (nếu cần)
/log print where topics~"container"
Bước 7: Cấu hình Firewall và Routing¶
FastTrack và Firewall Rules (RouterOS v7)¶
# FastTrack cho performance
/ip firewall filter add chain=forward action=fasttrack-connection connection-state=established,related hw-offload=yes comment="FastTrack Exit Node" place-before=0
# Accept established/related
/ip firewall filter add chain=forward action=accept connection-state=established,related comment="Accept established/related" place-before=1
# Allow Tailscale exit traffic
/ip firewall filter add chain=forward src-address=100.64.0.0/10 action=accept comment="Allow Tailscale Exit Traffic"
# Allow return traffic
/ip firewall filter add chain=forward dst-address=100.64.0.0/10 action=accept comment="Allow return traffic"
# Drop invalid connections
/ip firewall filter add chain=forward connection-state=invalid action=drop comment="Drop invalid"
NAT Rules cho Exit Node¶
# Masquerade Tailscale traffic ra internet
/ip firewall nat add chain=srcnat action=masquerade src-address=100.64.0.0/10 out-interface-list=WAN comment="Tailscale Exit Node NAT"
# Route Tailscale network qua container
/ip route add dst-address=100.64.0.0/10 gateway=172.17.0.2 comment="Route to Tailscale container"
Bước 8: Approve Exit Node¶
Trong Tailscale Admin Console¶
- Vào Machines page
- Tìm mikrotik-exit-node device
- Click menu "..." → "Edit route settings"
- Bật "Use as exit node"
- Click "Save"
Container sẽ hiển thị Exit Node badge khi được approve[1].
Bước 9: Sử dụng Exit Node¶
Trên client devices¶
Windows/Mac/Linux:
# Enable exit node
tailscale up --exit-node=mikrotik-exit-node
# Hoặc sử dụng IP
tailscale up --exit-node=100.x.x.x
Mobile Apps: 1. Mở Tailscale app 2. Vào Exit Node section 3. Chọn mikrotik-exit-node 4. Toggle "Allow LAN access" nếu cần truy cập local network[3]
Xác minh kết nối¶
Bước 10: Monitoring và Tối ưu¶
Script monitor performance¶
/system script add name=monitor-exit-node source={
:local fasttrackcount [/ip firewall filter get [find comment="FastTrack Exit Node"] bytes];
:local exittraffic [/ip firewall nat get [find comment="Tailscale Exit Node NAT"] bytes];
:log info ("FastTrack: " . $fasttrackcount . " bytes, Exit traffic: " . $exittraffic . " bytes");
}
# Chạy mỗi 10 phút
/system scheduler add name=exit-monitor interval=10m on-event=monitor-exit-node
Tối ưu performance¶
# Tăng connection tracking limits
/ip firewall connection tracking set max-entries=32768
# Enable TCP optimizations
/ip settings set tcp-syncookies=yes rp-filter=loose
# Hardware offload (nếu hỗ trợ)
/interface ethernet set [find] l2mtu=1598
Troubleshooting¶
Container không start¶
Kiểm tra logs:
Nguyên nhân thường gặp: - AUTH_KEY hết hạn hoặc không hợp lệ - Architecture mismatch (image không tương thích) - Thiếu mount point hoặc permissions
Exit Node không hoạt động¶
Kiểm tra kết nối:
# Test từ container
/container shell 0
ping 8.8.8.8
# Kiểm tra routing
/ip route print where dst-address=100.64.0.0/10
# Xem active connections
/ip firewall connection print where src-address~"100.64"
Performance issues¶
Monitoring tools:
# Bandwidth usage
/interface monitor-traffic [find where list=WAN] duration=30s
# CPU usage
/system resource print
# Container resource usage
/container print stats
Security Considerations¶
Firewall protection¶
# Rate limiting (tùy chọn)
/ip firewall filter add chain=forward src-address=100.64.0.0/10 connection-limit=50,32 action=drop comment="Rate limit exit traffic"
# Geo-blocking malicious IPs
/ip firewall address-list add list=blocked-countries address=0.0.0.0/0
/ip firewall filter add chain=forward dst-address-list=blocked-countries action=drop
DNS filtering¶
# Redirect DNS qua MikroTik
/ip firewall nat add chain=dstnat protocol=udp dst-port=53 src-address=100.64.0.0/10 action=redirect to-ports=53 comment="DNS Redirect"
# Cấu hình DNS servers
/ip dns set allow-remote-requests=yes servers=1.1.1.1,8.8.8.8
Backup và Recovery¶
Backup cấu hình¶
# Export cấu hình
/export file=tailscale-exit-node-backup.rsc
# Backup container data
/file print where name~"sata1/mounts/tailscale"
Recovery procedures¶
# Recreate container nếu bị lỗi
/container remove 0
/container add remote-image=tailscale/tailscale:latest interface=veth1 envlist=tailscale root-dir=sata1/containers/tailscale mounts=tailscale start-on-boot=yes hostname=mikrotik dns=8.8.8.8,8.8.4.4 logging=yes
Kết luận¶
Với hướng dẫn này, bạn đã thành công thiết lập MikroTik RouterOS v7 làm Tailscale Exit Node, cho phép route toàn bộ internet traffic của các thiết bị Tailscale qua router này. Exit Node cung cấp:
- Bảo mật cao: Mã hóa end-to-end cho tất cả internet traffic
- Flexibility: Có thể bật/tắt exit node từ từng client device
- Performance: Sử dụng FastTrack để tối ưu throughput
- Scalability: Hỗ trợ multiple concurrent connections
Đảm bảo thường xuyên cập nhật Tailscale container image và monitor performance để duy trì hoạt động ổn định của hệ thống.
Sources [1] Exit nodes (route all traffic) https://tailscale.com/kb/1103/exit-nodes [2] Tailscale for Mikrotik Container https://github.com/Fluent-networks/tailscale-mikrotik [3] Use exit nodes https://tailscale.com/kb/1408/quick-guide-exit-nodes [4] Tailscale Node on MikroTik https://www.reddit.com/r/Tailscale/comments/rwrpzu/tailscale_node_on_mikrotik/ [5] Tailscale Exit Node - Setup and Configuration https://www.youtube.com/watch?v=HFTqo_ts0iw [6] Netflix over Tailscale (ExitNode) - Containers https://forum.mikrotik.com/t/netflix-over-tailscale-exitnode/163754 [7] FR: Mikrotik Plugin tailscale package · Issue #6743 https://github.com/tailscale/tailscale/issues/6743 [8] Subnet routers · Tailscale Docs https://tailscale.com/kb/1019/subnets [9] Using Tailscale with your firewall https://tailscale.com/kb/1181/firewalls [10] [2025] How to Set Up Tailscale: Network and Exit Node ... https://www.youtube.com/watch?v=IFmsItEmxmU