قاعده مسیریابی نشانه بسته را میخواند، نه conntrack را
مسیریابی بر پایه سیاست نشانه بسته را میخواند؛ conntrack مقدار دیگری با عمر بیشتر ذخیره میکند. رونویسی میان این دو گامی است که کسی باید بنویسد.
چهار بررسی یک قاعده نشانه کارآمد را از یک مسیر کارآمد جدا میکند: قاعده کدام نشانه را میخواند، آیا بسته هنگام جستوجو هنوز آن را حمل میکند، آیا نشانه اتصال روی بستههای بعدی بازگردانده شده است، و آیا اینکه ماسک و اولویت قاعده منطبق اجازه اجرای آن را میدهد. شمارندهای که زیاد میشود فقط ثابت میکند که قاعدهای با چیزی منطبق شده است. درباره آنچه بسته هنگام انتخاب مسیر توسط هسته حمل میکرد چیزی نمیگوید.
این دو نشانه در جاهای متفاوتی زندگی میکنند و بر پایه زمانبندیهای متفاوتی منقضی میشوند.
دو نشانه، دو عمر
نشانه بسته به یک skb تعلق دارد، با آن از میان قلابها میگذرد و انتخابگر fwmark مسیریابی بر پایه سیاست آن را مصرف میکند. نشانه اتصال به ورودی conntrack تعلق دارد، در سراسر بستههای آن جریان باقی میماند و تا زمانی که چیزی آن را بازنگرداند، برای قاعده مسیریابی نامرئی است. ذخیره نشانه بسته در اتصال یک انبار کردن است؛ بازگرداندن آن کنشی جداگانه است. هیچکدام بهطور خودکار رخ نمیدهد.
به همین دلیل مجموعه قواعد میتواند سازگار به نظر برسد در حالی که تصمیم مسیریابی صفر میبیند: مقدار ذخیره شده بود و چیزی آن را بازنگرداند.
رونویسی میان آن دو گامی است که خودتان مینویسید
دو دستور مهم در جهتهای مخالف کار میکنند: یکی نشانه بسته را در اتصال ذخیره میکند، دیگری نشانه اتصال را روی بسته بار میکند. کدامیک را لازم دارید به این بستگی دارد که دستهبندی نسبت به جریان چه زمانی رخ دهد. ممکن است طراحی فقط به نشانه بسته نیاز داشته باشد، و افزودن علامتگذاری conntrack به این دلیل که راهحلی موقت از هر دو استفاده میکرد، همان راهی است که یک سیاست ساده حالت شکست دومی پیدا میکند.
ct mark set meta mark meta mark set ct mark
جهت را کنار قاعده بنویسید، چون از نحو در نگاه اول آشکار نیست. خط اول ذخیره میکند، خط دوم بازمیگرداند و هیچیک دیگری را ایجاب نمیکند.
پیش از جستوجویی که آن را مصرف میکند دستهبندی کنید
ترافیکی که بهطور محلی تولید میشود و ترافیکی که از یک LAN هدایت میشود از قلابهای متفاوتی میگذرند و در لحظههای متفاوتی به تصمیمهای مسیریابی میرسند. قاعده خروجی که برای اتصالهای خود روتر کار میکند ثابت نمیکند که بسته یک کارخواه هدایتشده پیش از جستوجوی خود علامتگذاری شده است. دستهبندی را جایی بگذارید که جستوجوی مصرفکننده آن هنوز رخ نداده است، و بررسی کنید که آیا قواعد بعدی در همان زنجیره مقدار را بازنویسی میکنند. ترتیب درون یک زنجیره بخشی از پیکربندی است، نه جزئیات پیادهسازی.
ماندگاری وضعیت اتصال هم به طرحی روشن نیاز دارد. اگر فقط نخستین بسته یک جریان دستهبندی شود، بستههای بعدی به بازگرداندن نشانه ذخیرهشده نیاز دارند، وگرنه مسیر بدون نشانه را برمیگزینند. این تفاوت میان نشانهای است که یک اتصال را توصیف میکند و نشانهای که یک بسته را توصیف میکند.
از مسیر پرسشی نشانهدار بپرسید
ip route get 10.77.0.10 mark 0x2
قواعد و جدول را بررسی کنید، سپس مسیر را با درج نشانه بپرسید، بههمراه مبدأ یا رابط ورودی هنگامی که بر سیاست اثر میگذارند. جستوجوی ساده بدون نشانه به پرسش دیگری پاسخ میدهد و با خوشحالی مسیری را گزارش میکند که نمیخواستید. ماسک و اولویت قاعده را نیز در کنار مقدارش بررسی کنید و تأیید کنید که جدول انتخابشده مسیری قابل استفاده دارد.
شمارندهای که زیاد میشود شاهد آن است که قاعدهای با بستهای منطبق شده است. شاهد آن نیست که بسته نهایی نشانه موردنظر را در نقطه تصمیم درست حمل کرده است.
نشانه، جهت، زمانبندی و ماسک را بخوانید. چهار بررسی، و مسیر دیگر راز نیست.