Ubuntu To Ubuntu Connection Test

From wiki karavi
Revision as of 15:47, 6 July 2026 by Karavi (talk | contribs)
Jump to navigation Jump to search

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.1
  • REMOTE_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 (ترتیب پیشنهادی)

  1. Ping tunnel endpoints (Step 1)
  2. curl IP test (Step 2)
  3. ping 8.8.8.8 via tunnel (Step 3)
  4. iperf3 throughput (Step 4) — optional for quality
  5. tcpdump — if x-ui issue (Step 5)