Ubuntu To Ubuntu Connection Test
Mikrotik Ubuntu L2TPv3 — Testing Hub and Remote Ubuntu
این صفحه دستورهای تست و عیبیابی تونل L2TPv3 بین Hub Ubuntu و Remote Ubuntu را پوشش میدهد. ترتیب اجرا از ساده به پیشرفته است.
مرتبط: Mikrotik_Ubuntu_L2TPv3
Topology (این سناریو)
| نقش | Public IP (placeholder) | Tunnel IP (placeholder) | Interface |
|---|---|---|---|
| Hub | HUB_PUBLIC_IP |
HUB_TUNNEL_IP/30 |
l2tpeth1 |
| Remote | REMOTE_PUBLIC_IP |
REMOTE_TUNNEL_IP/30 |
l2tpeth0 |
مثال subnet تونل (قابل تغییر در طرح IP شما):
HUB_TUNNEL_IP= 10.0.1.1REMOTE_TUNNEL_IP= 10.0.1.2- Subnet NAT روی Hub:
10.0.1.0/30
Prerequisites (پیشنیاز قبل از تست)
قبل از اجرای تستها موارد زیر باید برقرار باشند:
- سرویس
ql2tpdروی هر دو سرور در وضعیتactive (running)باشد - اینترفیس تونل IP داشته باشد: Hub روی
l2tpeth1، Remote رویl2tpeth0 - روی Hub قوانین NAT و FORWARD برای subnet تونل Remote اعمال شده باشد
- روی Remote policy routing با
from REMOTE_TUNNEL_IP lookup 100فعال باشد - برای تست IP عمومی از سرویس قابل دسترس در شبکه خودتان استفاده کنید (مثال:
https://api.ipnote.ir/myip)
Step 1 — Ping tunnel endpoints (تست لایه تونل)
بررسی میکند بسته ICMP بین دو انتهای تونل بدون خروج به اینترنت رد و بدل میشود.
From Remote to Hub
ping -c 4 HUB_TUNNEL_IP
توضیح: اگر پاسخ با تأخیر پایدار و بدون packet loss دریافت شد، تونل L2TPv3 سالم است.
From Hub to Remote
ping -c 4 REMOTE_TUNNEL_IP
توضیح: پینگ دوطرفه تأیید میکند هر دو سرور اینترفیس تونل را بالا نگه داشتهاند.
| نتیجه | تفسیر |
|---|---|
| 0% packet loss | تونل برقرار است — به مرحله بعد بروید |
| 100% packet loss | ql2tpd، فایروال proto 115 یا IP اینترفیس را بررسی کنید |
Step 2 — IP egress test (تمایز اینترنت عادی و تونل)
مهمترین تست روزمره برای selective routing روی سرور Remote.
Normal internet (بدون تونل) — run on Remote
curl -4 -s "https://api.ipnote.ir/myip"
توضیح: باید IP عمومی خود سرور Remote یعنی REMOTE_PUBLIC_IP نمایش داده شود.
Forced via tunnel — run on Remote
curl -4 --interface l2tpeth0 -s "https://api.ipnote.ir/myip"
توضیح: باید IP عمومی Hub یعنی HUB_PUBLIC_IP برگردد؛ یعنی NAT روی Hub درست است.
| خروجی curl | معنی |
|---|---|
| REMOTE_PUBLIC_IP | ترافیک از WAN مستقیم خارج شده |
| HUB_PUBLIC_IP | ترافیک از تونل و NAT Hub خارج شده |
| timeout / خطا | policy routing Remote یا NAT Hub ناقص است |
Step 3 — Ping internet via tunnel (ICMP از source تونل)
ping -4 -I l2tpeth0 -c 4 8.8.8.8
اجرا روی: Remote
توضیح: بسته با source REMOTE_TUNNEL_IP ارسال میشود و مسیر forward و NAT روی Hub را تأیید میکند.
| نتیجه | تفسیر |
|---|---|
| پاسخ از 8.8.8.8 | forward و NAT روی Hub فعال است |
| 100% loss ولی ping HUB_TUNNEL_IP OK | تقریباً قطعی مشکل NAT یا FORWARD روی Hub است |
Step 4 — Throughput test with iperf3 (تست سرعت بین دو سرور)
اندازهگیری throughput واقعی تونل؛ برای ارزیابی BBR و تنظیمات TCP مفید است.
Install (یکبار روی هر دو سرور)
apt install -y iperf3
Server on Hub
iperf3 -s -B HUB_TUNNEL_IP
توضیح: iperf3 فقط روی آدرس تونل Hub گوش میدهد تا ترافیک تست از WAN عبور نکند.
Upload Remote → Hub
iperf3 -c HUB_TUNNEL_IP -B REMOTE_TUNNEL_IP -t 10
اجرا روی: Remote
توضیح: سرعت ارسال از Remote به Hub را در ده ثانیه اندازه میگیرد؛ Retr باید نزدیک صفر باشد.
Download Hub → Remote (reverse)
iperf3 -c HUB_TUNNEL_IP -B REMOTE_TUNNEL_IP -t 10 -R
اجرا روی: Remote
توضیح: جهت دانلود را تست میکند؛ بدون BBR معمولاً کندتر از آپلود است.
Parallel streams
iperf3 -c HUB_TUNNEL_IP -B REMOTE_TUNNEL_IP -t 10 -P 4
توضیح: چهار اتصال همزمان throughput کل تونل را بهتر نشان میدهد.
| شاخص | مقدار قابل قبول (تقریبی) |
|---|---|
| Throughput | صدها Mbps بسته به لینک |
| Retr | نزدیک 0 — بالا یعنی ازدحام یا MTU |
Step 5 — Live packet capture (tcpdump روی تونل)
tcpdump -ni l2tpeth0 host REMOTE_TUNNEL_IP
اجرا روی: Remote
توضیح: هنگام اتصال کلاینت x-ui یا curl --interface l2tpeth0 باید پکت با source REMOTE_TUNNEL_IP دیده شود.
| مشاهده | معنی |
|---|---|
| پکت REMOTE_TUNNEL_IP → اینترنت | outbound از تونل فعال است |
| هیچ پکتی | routing rule یا inboundTag در x-ui اشتباه است |
Step 6 — L2TP protocol 115 capture (عیبیابی برقراری تونل)
وقتی اینترفیس l2tpeth ساخته میشود ولی DOWN است یا ping صفر است.
ابتدا نام اینترفیس WAN را پیدا کنید:
ip route get 1.1.1.1
مقدار بعد از dev را در دستورات زیر جایگزین کنید.
On Hub
tcpdump -ni WAN_INTERFACE_HUB host REMOTE_PUBLIC_IP and proto 115
توضیح: پکتهای L2TPv3 با encapsulation IP بین Hub و Remote را روی WAN Hub نمایش میدهد.
On Remote
tcpdump -ni WAN_INTERFACE_REMOTE host HUB_PUBLIC_IP and proto 115
توضیح: نام اینترفیس WAN روی Remote ممکن است eth0، ens160 یا غیره باشد.
سپس روی هر دو سرور:
systemctl restart ql2tpd
توضیح: اگر هیچ پکت 115 دیده نشد، فایروال datacenter پروتکل 115 را بلاک میکند.
Step 7 — Quick checklist policy routing (Remote)
ip rule show | grep REMOTE_TUNNEL_IP ip route show table 100 ip -br addr show l2tpeth0
توضیح: بدون rule from REMOTE_TUNNEL_IP lookup 100 و default در table 100، x-ui outbound کار نمیکند.
Step 8 — Quick checklist NAT on Hub
sysctl net.ipv4.ip_forward iptables -t nat -L POSTROUTING -n -v | grep 10.0.1 iptables -L FORWARD -n -v | grep l2tpeth1
توضیح: ip_forward=1 و MASQUERADE برای subnet تونل Remote الزامی است.
Expected results summary (جدول خلاصه)
| Test | Server | Expected on success |
|---|---|---|
| ping HUB_TUNNEL_IP | Remote | 0% packet loss |
| ping REMOTE_TUNNEL_IP | Hub | 0% packet loss |
| curl (no interface) | Remote | REMOTE_PUBLIC_IP |
| curl --interface l2tpeth0 | Remote | HUB_PUBLIC_IP |
| ping -I l2tpeth0 8.8.8.8 | Remote | 0% packet loss |
| iperf3 -c HUB_TUNNEL_IP -B REMOTE_TUNNEL_IP | Remote | high throughput, low Retr |
| Client IP (x-ui via l2tp-out) | Client | HUB_PUBLIC_IP |
Placeholder reference (جدول جایگزینها)
| Placeholder | توضیح | مثال (فقط در استقرار خودتان) |
|---|---|---|
HUB_PUBLIC_IP |
IP عمومی سرور Hub | — |
REMOTE_PUBLIC_IP |
IP عمومی سرور Remote | — |
HUB_TUNNEL_IP |
IP تونل روی Hub | 10.0.1.1 |
REMOTE_TUNNEL_IP |
IP تونل روی Remote | 10.0.1.2 |
WAN_INTERFACE_HUB |
اینترفیس WAN Hub | eth0 |
WAN_INTERFACE_REMOTE |
اینترفیس WAN Remote | ens160 |
Recommended test order (ترتیب پیشنهادی)
- Ping tunnel endpoints (Step 1)
- curl IP test (Step 2)
- ping 8.8.8.8 via tunnel (Step 3)
- iperf3 throughput (Step 4) — optional for quality
- tcpdump — if x-ui issue (Step 5)