| IP-L2TP(8) | دستورهای مدیریتی لینوکس | IP-L2TP(8) |
نام (NAME)
ip-l2tp - مدیریت تونلهای پروتکل لایه ۲ (L2TPv3)
خلاصه دستور (SYNOPSIS)
ip [ OPTIONS ] l2tp { COMMAND | help }
ip l2tp add tunnel
remote ADDR local ADDR
tunnel_id ID peer_tunnel_id ID
[ encap { ip | udp } ]
[ udp_sport PORT ] [ udp_dport PORT ]
[ udp_csum { on | off } ]
[ udp6_csum_tx { on | off } ]
[ udp6_csum_rx { on | off } ]
ip l2tp add session [ name NAME ]
tunnel_id ID session_id ID peer_session_id
ID
[ cookie HEXSTR ] [ peer_cookie HEXSTR ]
[ l2spec_type { none | default } ]
[ seq { none | send | recv | both } ]
ip l2tp del tunnel tunnel_id ID
ip l2tp del session tunnel_id ID session_id
ID
ip l2tp show tunnel [ tunnel_id ID ]
ip l2tp show session [ tunnel_id ID.B ] [
session_id ID ]
NAME := STRING ADDR := { IP_ADDRESS | any }
PORT := { NUMBER } ID := { NUMBER }
HEXSTR := { 8 or 16 hex digits (4 / 8 bytes) }
توضیحات (DESCRIPTION)
دستورات ip l2tp برای برقراری تونلهای اترنت ایستا یا به اصطلاح مدیریتنشدهی L2TPv3 استفاده میشوند. برای تونلهای مدیریتنشده، هیچ پروتکل کنترلی L2TP وجود ندارد، بنابراین به هیچ دیمن فضای کاربری نیازی نیست - تونلها با اجرای دستی دستورات در سیستم محلی و در طرف راه دور (peer) ایجاد میشوند.
پروتکل L2TPv3 برای ایجاد تونلهای لایه ۲ (Layer-2) مناسب است. تونلهای ایستا در زمان ثابت بودن تونلها، برای برقراری پیوندهای شبکهای از میان شبکههای IP بسیار مفید هستند. تونلهای L2TPv3 میتوانند دادههای بیش از یک نشست (session) را انتقال دهند. هر نشست با یک session_id و شناسه تونل والد آن یعنی tunnel_id مشخص میشود. قبل از اینکه بتوان نشستی را درون یک تونل ایجاد کرد، باید خود تونل ایجاد شده باشد.
هنگام ایجاد یک تونل L2TP، آدرس IP طرف راه دور مشخص میشود که میتواند آدرس IPv4 یا IPv6 باشد. همچنین باید آدرس IP محلی که برای دسترسی به طرف مقابل استفاده میشود، تعیین گردد. این همان آدرسی است که سیستم محلی روی آن گوش فرا داده و بستههای دادهی دریافتی L2TP را از طرف مقابل میپذیرد.
پروتکل L2TPv3 دو قالب کپسولهسازی بسته را تعریف میکند: UDP یا IP. کپسولهسازی UDP رایجترین روش است. کپسولهسازی IP از یک مقدار اختصاصی پروتکل IP برای حمل دادههای L2TP بدون سربار UDP استفاده میکند. تنها زمانی از کپسولهسازی IP استفاده کنید که هیچ دستگاه NAT یا دیوار آتشی در مسیر شبکه وجود نداشته باشد.
هنگامی که یک نشست اترنت L2TPv3 ایجاد میشود، یک رابط شبکه مجازی برای نشست ایجاد میگردد که درست مانند هر رابط شبکه دیگری باید پیکربندی شده و فعال (up) شود. هنگامی که دادهها از طریق این رابط ارسال میشوند، از طریق تونل L2TP به طرف مقابل منتقل میگردند. با پیکربندی جدولهای مسیریابی سیستم یا افزودن رابط به یک پل (bridge)، رابط L2TP مانند یک سیم مجازی (pseudowire) متصل به طرف مقابل عمل میکند.
برقراری یک سیم مجازی اترنت مدیریتنشدهی L2TPv3 مستلزم ایجاد دستی بافتهای L2TP در سیستم محلی و طرف مقابل است. پارامترهای مورد استفاده در هر دو طرف باید دقیقاً با یکدیگر همخوانی داشته باشند، در غیر این صورت هیچ دادهای عبور نخواهد کرد. از آنجا که هیچ پروتکل کنترلی برای برقراری تونلهای مدیریتنشدهی L2TP استفاده نمیشود، امکان بررسی خودکار سازگاری مقادیر وجود ندارد. هنگامی که رابط شبکه مجازی یک نشست L2TP مشخص پیکربندی و فعال شد، دادهها میتوانند ارسال شوند، حتی اگر طرف مقابل هنوز پیکربندی نشده باشد. اگر طرف مقابل پیکربندی نشده باشد، بستههای دادهی L2TP توسط آن دور ریخته خواهند شد.
برای برقراری یک تونل مدیریتنشدهی L2TP، از دستورات l2tp add tunnel و l2tp add session که در این سند توضیح داده شدهاند استفاده کنید. سپس بر حسب نیاز، رابط شبکه مجازی تونل را پیکربندی و فعال نمایید.
توجه داشته باشید که تونلهای مدیریتنشده تنها فریمهای اترنت را منتقل میکنند. اگر نیاز به انتقال ترافیک PPP دارید (L2TPv2) یا طرف مقابل شما از تونلهای مدیریتنشدهی L2TPv3 پشتیبانی نمیکند، به یک کارساز L2TP نیاز خواهید داشت که پروتکل کنترلی L2TP را پیادهسازی کرده باشد. پروتکل کنترلی L2TP اجازه میدهد تونلها و نشستهای L2TP پویا ایجاد شوند و سازوکارهایی برای تشخیص و واکنش به خرابیهای شبکه فراهم میآورد.
ip l2tp add tunnel - افزودن یک تونل جدید
- tunnel_id ID
- شناسه تونل را تعیین میکند که یک مقدار عددی صحیح ۳۲ بیتی است. تونل را به صورت یکتا مشخص میکند. مقدار استفادهشده باید با مقدار peer_tunnel_id مورد استفاده در طرف مقابل مطابقت داشته باشد.
- peer_tunnel_id ID
- شناسه تونل طرف مقابل را تعیین میکند که یک مقدار عددی صحیح ۳۲ بیتی اختصاصیافته به تونل توسط طرف مقابل است. مقدار استفادهشده باید با مقدار tunnel_id مورد استفاده در طرف مقابل مطابقت داشته باشد.
- remote ADDR
- آدرس IP طرف راه دور را مشخص میکند. میتواند به عنوان آدرس IPv4 یا IPv6 تعیین شود.
- local ADDR
- آدرس IP رابط محلی را که برای تونل استفاده میشود مشخص میکند. این آدرس باید آدرس یکی از رابطهای محلی باشد. میتواند به عنوان آدرس IPv4 یا IPv6 تعیین شود.
- encap ENCAP
- نوع
کپسولهسازی
تونل را
تعیین
میکند.
مقادیر معتبر برای کپسولهسازی عبارتند از: udp, ip. - udp_sport PORT
- درگاه مبدأ UDP مورد استفاده برای تونل را تعیین میکند. هنگام انتخاب کپسولهسازی udp الزامی است. هنگام انتخاب کپسولهسازی ip نادیده گرفته میشود.
- udp_dport PORT
- درگاه مقصد UDP مورد استفاده برای تونل را تعیین میکند. هنگام انتخاب کپسولهسازی udp الزامی است. هنگام انتخاب کپسولهسازی ip نادیده گرفته میشود.
- udp_csum STATE
- (فقط IPv4) تعیین
میکند که
در صورت
انتخاب
کپسولهسازی
UDP، آیا
چکسام UDP
مربوط به IPv4
برای
بستههای
کپسولهشده
محاسبه و
بررسی شود
یا خیر.
پیشفرض off.
است.
مقادیر معتبر عبارتند از: on, off. - udp6_csum_tx STATE
- (فقط IPv6) تعیین
میکند که
در صورت
انتخاب
کپسولهسازی
UDP، آیا
چکسام UDP
مربوط به IPv6
برای
بستههای
کپسولهشده
ارسالی
محاسبه شود
یا خیر.
پیشفرض on.
است.
مقادیر معتبر عبارتند از: on, off. - udp6_csum_rx STATE
- (فقط IPv6) تعیین
میکند که
در صورت
انتخاب
کپسولهسازی
UDP، آیا
چکسام UDP
مربوط به IPv6
برای
بستههای
کپسولهشده
دریافتی
بررسی شود
یا خیر.
پیشفرض on.
است.
مقادیر معتبر عبارتند از: on, off.
ip l2tp del tunnel - تخریب یک تونل
- tunnel_id ID
- شناسه تونلی را که باید حذف شود مشخص میکند. ابتدا باید تمام نشستهای درون تونل حذف شوند.
ip l2tp show tunnel - نمایش اطلاعات درباره تونلها
- tunnel_id ID
- شناسه تونلی را که باید اطلاعات آن نمایش داده شود مشخص میکند. اگر مشخص نشود، اطلاعات مربوط به همه تونلها چاپ میشود.
ip l2tp add session - افزودن یک نشست جدید به یک تونل
- name NAME
- نام رابط شبکه نشست را تعیین میکند. مقدار پیشفرض l2tpethN است.
- tunnel_id ID
- شناسه تونل را تعیین میکند که یک مقدار عددی صحیح ۳۲ بیتی است. تونلی را که نشست درون آن ایجاد خواهد شد به صورت یکتا مشخص میکند. تونل باید از قبل وجود داشته باشد.
- session_id ID
- شناسه نشست را تعیین میکند که یک مقدار عددی صحیح ۳۲ بیتی است. نشستی را که در حال ایجاد است به صورت یکتا مشخص میکند. مقدار استفادهشده باید با مقدار peer_session_id مورد استفاده در طرف مقابل مطابقت داشته باشد.
- peer_session_id ID
- شناسه نشست طرف مقابل را تعیین میکند که یک مقدار عددی صحیح ۳۲ بیتی اختصاصیافته به نشست توسط طرف مقابل است. مقدار استفادهشده باید با مقدار session_id مورد استفاده در طرف مقابل مطابقت داشته باشد.
- یک مقدار کوکی اختیاری را برای اختصاص به نشست مشخص میکند. این مقدار ۴ یا ۸ بایتی است که به صورت ۸ یا ۱۶ رقم هگزادسیمال مشخص میشود، مانند 014d3636deadbeef. این مقدار باید با مقدار peer_cookie تنظیمشده در طرف مقابل مطابقت داشته باشد. مقدار کوکی در بستههای دادهی L2TP حمل شده و در طرف مقابل برای بررسی انطباق با مقدار مورد انتظار ارزیابی میشود. مقدار پیشفرض استفاده نکردن از کوکی است.
- یک مقدار اختیاری peer_cookie را برای اختصاص به نشست مشخص میکند. این مقدار ۴ یا ۸ بایتی است که به صورت ۸ یا ۱۶ رقم هگزادسیمال مشخص میشود، مانند 014d3636deadbeef. این مقدار باید با مقدار cookie تنظیمشده در طرف مقابل مطابقت داشته باشد. این گزینه به سیستم محلی اعلام میکند چه مقدار کوکی را در بستههای L2TP دریافتی انتظار داشته باشد. مقدار پیشفرض استفاده نکردن از کوکی است.
- l2spec_type L2SPECTYPE
- نوع هدر
اختصاصی
لایه ۲ (layer2specific header)
نشست را
مشخص
میکند.
مقادیر معتبر عبارتند از: none, default. - seq SEQ
- شمارهگذاری
توالی را
برای
جلوگیری از
دریافت
نامرتب
بستهها یا
تشخیص آنها
کنترل
میکند. send
یک شماره
توالی را در
هدر
اختصاصی
پیشفرض
لایه ۲ برای
هر بسته
ارسالی
قرار
میدهد. recv
بستهها را
در صورت
دریافت
نامرتب،
مجدداً
مرتبسازی
میکند.
پیشفرض none.
است.
مقادیر معتبر عبارتند از: none, send, recv, both.
ip l2tp del session - تخریب یک نشست
- tunnel_id ID
- شناسه تونلی را که نشست مورد نظر برای حذف در آن قرار دارد مشخص میکند.
- session_id ID
- شناسه نشستی را که باید حذف شود مشخص میکند.
ip l2tp show session - نمایش اطلاعات درباره نشستها
- tunnel_id ID
- شناسه تونل نشست(هایی) را که باید نمایش داده شوند مشخص میکند. اگر مشخص نشود، اطلاعات نشستهای موجود در تمام تونلها چاپ میشود.
- session_id ID
- شناسه نشستی را که باید اطلاعات آن نمایش داده شود مشخص میکند. اگر مشخص نشود، اطلاعات همه نشستها چاپ میشود.
مثالها (EXAMPLES)
راهاندازی تونلها و نشستهای L2TP
site-A:# ip l2tp add tunnel tunnel_id 3000 peer_tunnel_id 4000 \
encap udp local 1.2.3.4 remote 5.6.7.8 \
udp_sport 5000 udp_dport 6000
site-A:# ip l2tp add session tunnel_id 3000 session_id 1000 \
peer_session_id 2000
site-B:# ip l2tp add tunnel tunnel_id 4000 peer_tunnel_id 3000 \
encap udp local 5.6.7.8 remote 1.2.3.4 \
udp_sport 6000 udp_dport 5000
site-B:# ip l2tp add session tunnel_id 4000 session_id 2000 \
peer_session_id 1000
site-A:# ip link set l2tpeth0 up mtu 1488
site-B:# ip link set l2tpeth0 up mtu 1488
توجه داشته باشید که آدرسهای IP، درگاههای UDP و شناسههای تونل / نشست در هر دو سمت مطابقت داده شده و معکوس یکدیگر تنظیم شدهاند.
پیکربندی به عنوان رابطهای IP
در صورتی که فقط دادههای IP جابهجا شوند، این دو رابط میتوانند با آدرسهای IP پیکربندی شوند. این پیکربندی احتمالاً سادهترین حالت ممکن است.
site-A:# ip addr add 10.42.1.1 peer 10.42.1.2 dev l2tpeth0 site-B:# ip addr add 10.42.1.2 peer 10.42.1.1 dev l2tpeth0 site-A:# ping 10.42.1.2
اکنون این پیوند باید قابل استفاده باشد. در صورت نیاز مسیرهای ایستا (static routes) را اضافه کنید تا دادهها از طریق پیوند جدید ارسال شوند.
پیکربندی به عنوان رابطهای متصل به پل (Bridged)
برای انتقال دادههای غیر IP، رابط شبکه L2TP با استفاده از ابزارهای استاندارد لینوکس، به جای اختصاص آدرس IP مستقل، به یک پل (bridge) افزوده میشود. از آنجا که در این حالت فریمهای خام اترنت درون تونل حمل میشوند، مقدار MTU رابطهای L2TP باید طوری تنظیم شود که فضای کافی برای آن هدرها در نظر گرفته شود.
site-A:# ip link set l2tpeth0 up mtu 1446 site-A:# ip link add br0 type bridge site-A:# ip link set l2tpeth0 master br0 site-A:# ip link set eth0 master br0 site-A:# ip link set br0 up
اگر از VLANها استفاده میکنید، برای هر VLAN یک پل راهاندازی کنید و هر VLAN را از طریق یک نشست مجزای L2TP پلبندی (bridge) نمایید. به عنوان مثال، برای پل کردن شناسه VLAN شماره ۵ روی eth1 از طریق سیم مجازی L2TP:
site-A:# ip link set l2tpeth0 up mtu 1446 site-A:# ip link add brvlan5 type bridge site-A:# ip link set l2tpeth0.5 master brvlan5 site-A:# ip link set eth1.5 master brvlan5 site-A:# ip link set brvlan5 up
افزودن رابط L2TP به یک پل باعث میشود که پل، درست مانند سایر رابطها ترافیک را از طریق سیم مجازی L2TP هدایت کند. پل آدرسهای MAC میزبانهای متصل به هر رابط را یاد میگیرد و فریمها را به طور هوشمند از یک درگاه پل به درگاه دیگر هدایت میکند. آدرسهای IP به رابطهای l2tpethN اختصاص داده نمیشوند. اگر پل در هر دو سمت سیم مجازی L2TP به درستی پیکربندی شده باشد، دسترسی به میزبانهای موجود در شبکه پلشدهی طرف مقابل امکانپذیر خواهد بود.
هنگامی که فریمهای خام اترنت از طریق یک تونل L2TP پلبندی میشوند، فریمهای بزرگ ممکن است قطعهقطعه (fragment) شده و بسته به MTU رابط فیزیکی مورد استفاده توسط تونل، به صورت قطعات IP مجزا به گیرنده ارسال شوند. زمانی که فریمهای اترنت حامل پروتکلهایی باشند که توسط گیرنده سرهمبندی (reassemble) میشوند (مانند IP)، مشکلی پیش نخواهد آمد. با این حال، چنین قطعهقطعهشدنی میتواند برای پروتکلهایی مانند PPPoE که در آنها گیرنده انتظار دارد فریمهای اترنت را دقیقاً به همان صورت که ارسال شده دریافت کند، مشکلساز شود. در چنین مواردی، مهم است فریمهایی که از تونل خارج میشوند، قبل از هدایت به جلو، دوباره در قالب یک فریم واحد سرهمبندی شوند. برای این منظور، ردیابی اتصالات نتفیلتر (conntrack) را فعال کرده یا ماژولهای defrag نتفیلتر لینوکس را در هر دو نقطه پایانی تونل به صورت دستی بارگذاری کنید.
site-A:# modprobe nf_defrag_ipv4 site-B:# modprobe nf_defrag_ipv4
اگر L2TP روی IPv6 استفاده میشود، از ماژول defrag مربوط به IPv6 استفاده کنید.
سازگاری (INTEROPERABILITY)
تونلهای ایستا (مدیریتنشدهی) L2TPv3 توسط برخی از سازندگان تجهیزات شبکه مانند Cisco پشتیبانی میشوند.
در لینوکس، پیامهای Hello پروتکل L2TP در تونلهای مدیریتنشده پشتیبانی نمیشوند. پیامهای Hello توسط کارخواهها و کارسازهای L2TP به منظور تشخیص خرابیهای پیوند و خودکارسازی قطع و برقراری مجدد تونلهای پویا استفاده میشوند. اگر یک طرف مقابل غیر لینوکسی از پیامهای Hello در تونلهای مدیریتنشده پشتیبانی میکند، برای سازگاری با لینوکس باید این قابلیت در آن خاموش شود.
لینوکس به طور پیشفرض از نوع هدر Default Layer2SpecificHeader همانگونه که در مشخصات پروتکل L2TPv3 (سند RFC3931) تعریف شده، استفاده میکند. این تنظیم باید با پیکربندی طرف مقابل یکسان و سازگار باشد. پیادهسازیهای برخی از سازندگان (مانند Cisco) به طور پیشفرض از نوع هدر None برای Layer2SpecificHeader استفاده میکنند.
همچنین ببینید (SEE ALSO)
نویسنده (AUTHOR)
James Chapman <jchapman@katalix.com>
| 19 Apr 2012 | iproute2 |