یک gateway رایانهای است که چندین شبکه را به یکدیگر متصل میکند. این عبارت اغلب به “نقطه خروجی” یک شبکه محلی به تمام نشانیهای IP ضروری حارجی اشاره دارد. gateway به هر کدام از شبکههایی که پیوند میدهد، متصل است و به عنوان یک مسیریاب کار تبدیل بستههای IP را بر عهده دارد.
زمانی که یک شبکه محلی از یک بازه نشانی خصوصی (که به اینترنت مسیریابی نمیشوند) استفاده میکند، gateway نیاز به پیادهسازی address masquerading دارد تا رایانههای داخل شبکه بتوانند با دنیای خارج ارتباط برقرار کنند. عملیات ماسکگذاری نوعی پروکسی در شبکه به حساب میآیند: هر ارتباط خارجی از یک رایانه داخلی توسط نشانی gateway جایگزین میشود (چرا که gateway خود یک نشانی خارجی و قابلمسیریابی دارد)، دادهای که از طریق ارتباط ماسکگذاری شده عبور میکند نیز به این ارتباط ارسال میشود و دادهی بازگشتی نیز به ترتیب عکس به رایانه داخلی فرستاده میشود. gateway از بازه درگاههای اختصاصی TCP به این منظور استفاده میکند، معمولا با اعداد خیلی بالا (بیش از ۶۰۰۰۰). هر ارتباطی ارسالی از رایانههای داخلی به مانند یک ارتباط حارجی با استفاده از این درگاههای رزرو شده نمایش مییابد.
gateway میتواند دو نوع NAT یا Network Address Translation اجرا کند. نوع اول، DNAT یا Destination NAT تکنیکی برای تغییر نشانی IP (و/یا درگاه TCP یا UDP) مقصد برای یک ارتباط ورودی است. مکانیزم رهگیری ارتباط نیز بستههای موجود را برای تضمین تداوم ارتباط تغییر میدهد. نوع دوم، SNAT یا Source NAT است که ماسکگذاری یک حالت ویژه آن به حساب میآید؛ SNAT تکنیکی برای تغییر نشانی IP (و/یا درگاه TCP یا UDP) مبدا برای یک ارتباط خروجی است. همانند DNAT، تمام بستههای موجود از طریق مکانیزم رهگیری ارتباط تغییر داده میشوند. نکته اینکه NAT تنها برای نشانیهای IPv4 و فضای محدود نشانیدهی آن کاربرد دارد؛ در IPv6، بازه بسیار گسترده نشانیدهی کاربرد NAT را از بین میبرد چرا که هر نشانی “داخلی” امکان مسیریابی روی اینترنت را دارد (این به معنای در دسترس بودن رایانههای داخلی نیست، چرا که فایروالهای میانی میتوانند ترافیک را فیلتر کنند).
مباحث نظری کافی است، بیایید دست بکار شویم. تبیدل یک سیستم دبیان به یک gateway به سادگی فعالکردن چند گزینه در کرنل است که از طریق فایلسیستم مجازی /proc/
صورت میگیرند.
#
echo 1 > /proc/sys/net/ipv4/conf/default/forwarding
This option can also be automatically enabled on boot if /etc/sysctl.conf
or a configuration file in /etc/sysctl.d/
sets the net.ipv4.conf.default.forwarding
option to 1
.
مثال 10.1. فایل /etc/sysctl.conf
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.tcp_syncookies = 1
این مجموعه عملیات را برای IPv6 نیز میتوان انجام داد، تنها کافی است ipv4
را با ipv4
جایگزین کنیم یا خط net.ipv6.conf.all.forwarding
را در فایل /etc/sysctl.conf
قرار دهیم.
فعالسازی ماسکگذاری IPv4 عملیات کمی پیچیدهتری است چرا که باید فایروال netfilter را پیکربندی کرد.