انجمن کاربران لینوکس ایران - تکنوتاکس سابق
سوال: Route کردن ترافیک eth1 به eth0 - نسخه قابل چاپ

+- انجمن کاربران لینوکس ایران - تکنوتاکس سابق (https://forum.sito.ir)
+-- انجمن: پرسش‌ها و پاسخ‌ها (https://forum.sito.ir/forumdisplay.php?fid=3)
+--- انجمن: لینوکس و شبکه (https://forum.sito.ir/forumdisplay.php?fid=11)
+--- موضوع: سوال: Route کردن ترافیک eth1 به eth0 (/showthread.php?tid=17896)



سوال: Route کردن ترافیک eth1 به eth0 - mjmohebbi - 2012-06-23

درود
من بر روی vmware یک لینوکس Redhat Enterprise و یک ویندوز xp دارم.
روی لینوکس دو کارت شبکه دارم با مشخصات زیر

کارت شبکه eth0:
کد :
inet addr:192.168.159.134  Bcast:192.168.159.255  Mask:255.255.255.0

و کارت شبکه eth1:
کد :
inet addr:10.10.20.254  Bcast:10.10.20.255  Mask:255.255.255.0

من بر روی eth0 اینترنت دارم و gateway من بر روی لینوکس 192.168.159.2 می باشد.
کلاینت ویندوز xp من از طریق سرویس dhcp بر روی لینوکس IP در رنج کارت شبکه eth1 می گیرد.
ip ای که الان کرفته است در زیر می نویسم.
کد :
Connection-specific DNS Suffix  . : gigil.loc
IP Address. . . . . . . . . . . . : 10.10.20.253
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 10.10.20.254

حال، سوال من این است برای اینکه بر روی ویندوز xp هم اینترنت داشته باشم باید چه کاری انجام دهم. جست جو که کردم فهمیدم که از کامند های ip , route می شه استفاده کرد. اما متاسفانه نتونستم درک درستی از مطالب موجود داشته باشم.

می خوام که تمام دستگاه هایی که به eth1 هستند اینترنت داشته باشند.

با تشکر


Re: سوال: Route کردن ترافیک eth1 به eth0 - sadeqn - 2012-06-23

برای Route کردن چند تا کار باید انجام بدین:
۱. پشتیبانی از packet forwarding را فعال کنید: sysctl net.ipv4.conf.all.forwarding
۲. iptable را تنظیم کنی: /sbin/iptables -t nat -A POSTROUTING -o eth0 -s eth1 -j MASQUERADE
۳. gateway کلاینت‌هات رو روی آدرس سرورت (آدرس کارت شبکه eth1) تنظیم کنی.


Re: سوال: Route کردن ترافیک eth1 به eth0 - mjmohebbi - 2012-06-23

sadeqn نویسنده :برای Route کردن چند تا کار باید انجام بدین:
۱. پشتیبانی از packet forwarding را فعال کنید: sysctl net.ipv4.conf.all.forwarding
۲. iptable را تنظیم کنی: /sbin/iptables -t nat -A POSTROUTING -o eth0 -s eth1 -j MASQUERADE
۳. gateway کلاینت‌هات رو روی آدرس سرورت (آدرس کارت شبکه eth1) تنظیم کنی.


کد :
net.ipv4.conf.all.forwarding = 1

کامندی که شما دادید برای تنظیم کردن iptable رو وفتی اجرا می کنم، پیغام زیر را می دهد. ممکنه که راهنماییم کنید مشکل چیست ؟
کد :
[root@mjlinuxtxt ~]# /sbin/iptables -t nat -A POSTROUTING -o eth0 -s eth1 -j MASQUERADE
iptables v1.3.5: host/network `eth1' not found



Re: سوال: Route کردن ترافیک eth1 به eth0 - sadeqn - 2012-06-24

میگه هاست eth1 وجود نداره. که البته اشتباه از من بود. به جای -s باید -i استفاده کنید. -s برای مشخص کردن آدرس مبدا استفاده می‌شه و -i برای مشخص کردن کارت شبکه مبدا!


Re: سوال: Route کردن ترافیک eth1 به eth0 - mjmohebbi - 2012-06-24

من با استفاده از لینک زیر مشکلم بر طرف شد
[url]
<!-- m --><a class="postlink" href="http://www.revsys.com/writings/quicktips/nat.html">http://www.revsys.com/writings/quicktips/nat.html</a><!-- m -->
[/url]

ابتدا فایل زیر را طبق ساختم تا به کرنل بگوییم ما می خواهیم از IP Forwarding استفاده کنیم.
تمام کامند ها و تغییرات زیر باید توسط کاربر root زده شود.

کد :
# echo 1 > /proc/sys/net/ipv4/ip_forward



همان طور که گفتم می خواستم از eth1 که کارت شبکه internal من است به eth0 که external هست IP Forwarding داشته باشم (که البته نمی دونستم تا پیش از این که باید هم چین کاری کنم) :wink:

سپس با استفاده از کامند های زیر در iptable، با استفاده از nat این کار را انجام می دهیم. (البته مفهوم تقریبی کامند های زیر رو می دونم اما اگر کسی از دوستان می تونند برامون واکشی کنند و یک مقدار بیشتر توضیح بدند خیلی کمکمون می کنه)

کد :
# /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# /sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
# /sbin/iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

بعد از اجرای کامند های بالا نیاز به این داریم که فایل sysctl را ویرایش کنیم.
کد :
# vi /etc/sysctl.conf

و خط net.ipv4.ip_forward = 0 را به net.ipv4.ip_forward = 1 تغییر می دهیم. این کار به سیستم عامل می گوید که در هنگام بوت مرحله اول را انجام دهد.

حا تنها کاری که مانده ویرایش کردن فایل iptabale است:
کد :
# vi /etc/sysconfig/iptables-config

و خطوط IPTABLES_MODULES_UNLOAD، IPTABLES_SAVE_ON_STOP و IPTABLES_SAVE_ON_RESTART را به yes تغییر می دهیم.



با انجام این کار ها بر روی کلاینت ویندوز xp پینگ به خارج دارم ولی مشکل dns دارم و نمی دونم اصلا این مشکل از کجاست.
یعنی با استفاده از IP می تونم یک سایت را باز کنم اما با domain اصلا نمی تونم این کار رو انجام بدم.


 


Re: سوال: Route کردن ترافیک eth1 به eth0 - sadeqn - 2012-06-25

DNS سرور را روی XP ست کردی؟ پیشنهاد می‌کنم یکی از DNSسرورهای پابلیک را برای تست به عنوان DNSسرور اضافه کنی.
در ضمن توی خط مربوط به iptable که نوشته بودی فکر کنم فقط خط اول کافیه.


Re: سوال: Route کردن ترافیک eth1 به eth0 - mjmohebbi - 2012-06-26

DNS رو تنظیم کردم اما مشکلی که هست، وقتی فایروال رو disable می کنم پکت های dns عبور می کنند اما وقتی enable هست، پکت های dns رد نمی شن، رول زیر رو هم هم نوشتم.


کد :
iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT

iptables -A OUTPUT -p udp -o eth1 --dport 53 -j ACCEPT
iptables -A INPUT -p udp -i eth1 --sport 53 -j ACCEPT



Re: سوال: Route کردن ترافیک eth1 به eth0 - MASoft - 2012-06-26

tcp هم علاوه بر udp اضافه کنید.