محاصبه و تغییر mtu در میکروتیک برای دیفرگمنت نشدن بسته ها
تنظیم mtu در میکروتیک
2 پاسخ
برای تنظیم MTU به شکلی که دیفرگمنت (Fragmentation) اتفاق نیفته، باید مراحل زیر رو در نظر بگیری:
🔍 ۱. تحلیل مسیر و محاسبه دقیق MTU
در سناریوی تو، مسیر ترافیک شامل این بخشها هست:
- OpenVPN (در میکروتیک)
- GRE6 Tunnel
- 6to4 Tunnel
- روتر دوم و مسیر خروجی اینترنت
هرکدوم از این پروتکلها، یک Overhead دارن که باعث میشه اندازه بستهها کاهش پیدا کنه. اگر MTU بهدرستی تنظیم نشه، ترافیک Fragment میشه که باعث کندی و افزایش Load روی پردازندهها میشه.
✅ اولین کار: پیدا کردن حداکثر MTU بدون Fragmentation
برای این کار، از پینگ با فلگ Don't Fragment (DF) در لینوکس یا ویندوز استفاده کن.
در ویندوز:
ping -f -l 1472 8.8.8.8
در لینوکس:
ping -M do -s 1472 8.8.8.8
🔹 اگر جواب گرفتی، یعنی MTU روی 1500 مشکلی نداره.
🔹 اگر تایماوت شد، عدد رو کم کن و دوباره تست کن، مثلاً 1460، 1450 و… تا بسته بدون Fragment ارسال بشه.
💡 فرمول کلی MTU:
MTU = Maximum Packet Size + Headers
مثلاً:
- OpenVPN Overhead → 40 بایت (بسته به تنظیمات TCP/UDP)
- GRE6 Overhead → 24 بایت
- 6to4 Overhead → 20 بایت
- IPv6 Header → 40 بایت
پس اگر MTU فیزیکی لینک 1500 باشه، MTU مؤثر باید این مقدار کمتر بشه:
MTU = 1500 - (OpenVPN + GRE6 + 6to4 + IPv6)
MTU = 1500 - (40 + 24 + 20 + 40) = 1376
⚙ ۲. تنظیم MTU در OpenVPN و اینترفیسها
🔹 تنظیم MTU در OpenVPN:
در تنظیمات پروفایل OpenVPN در میکروتیک، مقدار MTU رو کم کن:
/interface ovpn-server server
set default-profile=ovpn-profile max-mtu=1376
یا در فایل کانفیگ OpenVPN Client مقدار زیر رو تنظیم کن:
tun-mtu 1376
mssfix 1360
🔹 تنظیم MTU روی اینترفیس GRE6 در میکروتیک:
/interface gre6
set [find] mtu=1376
🔹 تنظیم MTU روی اینترفیس 6to4 در میکروتیک:
/interface 6to4
set [find] mtu=1376
🎯 ۳. تغییر MSS برای جلوگیری از Fragmentation
اگر Change MSS در پروفایل OpenVPN فعال باشه، میکروتیک بهطور خودکار MSS رو تنظیم میکنه. ولی بهتره برای اطمینان، رول Mangle برای تغییر MSS بزنی:
/ip firewall mangle
add action=change-mss chain=forward new-mss=1360 passthrough=yes protocol=tcp tcp-flags=syn
این کار باعث میشه که MSS بهدرستی تنظیم بشه و TCP از مقدار درست استفاده کنه تا از Fragmentation جلوگیری بشه.
🔍 ۴. تست نهایی و اطمینان از تنظیمات
بعد از تنظیم MTU و MSS، میتونی دوباره تست کنی:
🔹 تست MTU با پینگ در میکروتیک:
ping 8.8.8.8 do-not-fragment size=1376
🔹 تست سرعت و بررسی Fragmentation در ویندوز:
netsh interface ipv4 show subinterfaces
🔹 تست در لینوکس برای تشخیص Fragmentation:
tracepath 8.8.8.8
📌 حالا نتیجه
✅ مقدار MTU رو روی 1376 تنظیم کن که با Overheadهای مختلف سازگار باشه.
✅ مقدار MSS رو روی 1360 ست کن تا از Fragmentation جلوگیری کنه.
✅ از رول Mangle برای تغییر MSS استفاده کن.
✅ با ping -M do تست کن تا مطمئن بشی که بستهها Fragment نمیشن.
👨💻 اگه هنوز مشکلی داشتی، خروجی ip route print detail و interface print رو بده تا دقیقتر بررسی کنم
### تنظیم MTU در اوپن وی پی ان
1. MTU در سرور OpenVPN : برای تنظیم MTU در سرور OpenVPN، میتوانید از پارامتر `--mtu` استفاده کنید. مثلا:
```
openvpn --mtu 1400
```
2. MTU در میکروتیک : در میکروتیک، میتوانید MTU را در پروفایل OpenVPN تنظیم کنید :
```
/ppp profile add name="vpn-profile" use-encryption=yes local-address=192.168.8.1 dns-server=8.8.8.8 remote-address=vpn-pool mtu=1400
```
تنظیم MSS در اوپن وی پی ان
1. MSS در سرور OpenVPN : برای تنظیم MSS در سرور OpenVPN، میتوانید پارامتر `--mssfix` را استفاده کنید :
```
openvpn --mssfix 1400
```
MSS در میکروتیک : در میکروتیک، میتوانید MSS را در پروفایل OpenVPN تنظیم کنید :
```
/ppp profile add name="vpn-profile" use-encryption=yes local-address=192.168.8.1 dns-server=8.8.8.8 remote-address=vpn-pool mss=1400
```
MTU و MSS**: MTU (Maximum Transmission Unit) و MSS (Maximum Segment Size) باید هماهنگ باشند. MTU باید بزرگتر از MSS باشد.
- **تنظیمات پروفایل**: تنظیمات پروفایل OpenVPN در میکروتیک باید با تنظیمات سرور OpenVPN همخوانی داشته