منبع اصلی نوشتار زیر در این لینک قرار دارد

پیکربندی کارت شبکه در FreeBSD

هنگامی که این مطلب را می‌خوانید، ممکن است توسط خودم یا دیگران تغییراتی کرده باشد. بدین ترتیب مشکلات آن برطرف شده و قسمت‌های جدیدی به آن اضافه می‌شوند. همواره می‌توانید آخرین نسخه این مطلب را در دانشنامه BSD مطالعه کنید.

برای پیکربندی کارت شبکه، باید بدانید که مدل کارت شبکه‌تان چیست، از چه چیپی استفاده می‌کند و اینکه آیا یک کارت PCI هست یا ISA.
FreeBSD طیف وسیعی از کارت‌های شبکه PCI و ISA را پشتیبانی می‌کند. برای اینکه بدانید کارت شبکه‌تان توسط FreeBSD پشتیبانی می‌شود یا نه میتوانید لیست سخت‌افزارهای سازگار (HCL) را ببینید.
بعد از اینکه مطمئن شدید که کارت شبکه‌تان توسط FreeBSD پشتیبانی می‌شود، باید درایور مناسب را برای آن تعیین کنید. لیستی از این درایور‌ها را می‌توانید در فایل‌های ‎ /usr/src/sys/conf/NOTES و ‎ /usr/src/sys/arch/conf/NOTES ببینید. همچنین این فایلها حاوی اطلاعاتی درباره کارتها/چیپست‌های مورد پشتیبانی هستند. اگر شک دارید که کدام درایور مناسبتر است، میتوانید صفحه manual درایور مورد نظر را ببینید. صفحه manual اطلاعات بیشتری را درباره سخت افزار‌های مورد پشتیبانی و حتی مشکلات احتمالی در اختیار شما قرار می‌دهد.
درایور‌ بیشترِ کارتهای رایج در کرنل GENERIC گنجانده شده‌ است. بنابراین لازم نیست شما وقت خود را برای پیدا کردن درایور مناسب تلف کنید. چون این کارتها در هنگام بوت به صورت خودکار شناسایی شده و درایور مناسب برای آن‌ها بارگزاری می‌شود. مثل زیر:

dc0: <82c169 PNIC 10/100BaseTX> port 0xa000-0xa0ff mem 0xd3800000-0xd38
000ff irq 15 at device 11.0 on pci0
miibus0: <MII bus> on dc0
bmtphy0: <BCM5201 10/100baseTX PHY> PHY 1 on miibus0
bmtphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
dc0: Ethernet address: 00:a0:cc:da:da:da
dc0: [ITHREAD]
dc1: <82c169 PNIC 10/100BaseTX> port 0x9800-0x98ff mem 0xd3000000-0xd30
000ff irq 11 at device 12.0 on pci0
miibus1: <MII bus> on dc1
bmtphy1: <BCM5201 10/100baseTX PHY> PHY 1 on miibus1
bmtphy1:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
dc1: Ethernet address: 00:a0:cc:da:da:db
dc1: [ITHREAD]

در مثال بالا میبینید که دو کارت شبکه توسط درایوری به نام dc شناسایی شده‌اند. اگر درایور کارت شبکه شما در کرنل GENERIC وجود نداشته باشد، باید درایور مناسبِ آن کارت را در هسته بارگزاری کنید. این کار به دو صورت امکان‌پذیر است:

 

  1. ساده‌ترین راه این است که با استفاده از دستور kldload درایور مورد نظر خود را در هسته بارگزاری کنید. اما مشکلی که در این روش وجود دارد این است که با راه‌اندازی مجدد سیستم، درایور مجدداً بار‌اندازی (unload) می‌شود و شما مجبورید دوباره آن را بارگزاری کنید. برای رفع این مشکل، میتوانید خط مربوط به درایور را به فایل ‎ /boot/loader.conf اضافه کنید تا همیشه درایور مورد نظر به صورت خودکار در هسته بارگزاری شود. البته تمام درایورها به صورت ماژول موجود نیستند. مثل درایورهای بعضی از کارت‌های ISA
  2. می‌توانید یک کرنل جدید کامپایل کرده و درایور مورد نظر خود را به صورت ثابت در آن قرار دهید. برای اینکه بدانید که چه خطی را باید به فایل پیکربندی کرنل اضافه کنید، فایلهای ‎ /usr/src/sys/conf/NOTES و ‎ /usr/src/sys/arch/conf/NOTES و همچنین صفحه manual درایور مورد نظر خود را مطالعه کنید. اگر درایور کارت شبکه شما توسط کرنل GENERIC شناسایی شده است، کرنل جدید را کامپایل نکنید.

پیکربندی کارت شبکه

بعد از اینکه درایور مناسب در هسته بارگزاری شد، باید کارت شبکه خود را پیکربندی کنید. مثل خیلی از چیزهای دیگر، برای پیکربندی کارت شبکه هم می‌توانید از sysinstall استفاده کنید.
برای اینکه لیستی از کارتهای شبکه فعال را به همراه تنظیمات فعلیشان ببینید، میتوانید از دستور ifconfig استفاده کنید. مثال:

 

% ifconfig
dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=80008<VLAN_MTU,LINKSTATE>
        ether 00:a0:cc:da:da:da
        inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
dc1: flags=8802<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=80008<VLAN_MTU,LINKSTATE>
        ether 00:a0:cc:da:da:db
        inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255
        media: Ethernet 10baseT/UTP
        status: no carrier
plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> metric 0 mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=3<RXCSUM,TXCSUM>
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
        inet6 ::۱ prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
        nd6 options=3<PERFORMNUD,ACCEPT_RTADV>

در مثال بالا ما چهار کارت شبکه به شکل زیر داریم:

 

نام کارت شبکه توضیحات
dc0
اولین رابط اترنت
dc1
دومین رابط اترنت
plip0
رابط پورت موازی (اگر یک پورت موازی در سیستم وجود داشته باشد)
lo0
کارت شبکه loopback

 

یک کارت شبکه بر اساس درایوری که استفاده می‌کند و همچنین ترتیب شناسایی شدن کارت توسط کرنل نامگذاری می‌شود. مثلاً کارت شبکه sis2، سومین کارت شبکه در سیستم است که از درایور sys استفاده می‌کند. (شماره ها از صفر شروع می‌شوند) dc0 هم اولین کارت شبکه است که از درایور dc استفاده می‌کند.

 

حالا خروجی دستور ifconfig را تحلیل کرده و به بررسی کارت شبکه dc0 می‌پردازیم:

 

  1. UP به این معنیست که کارت شبکه پیکربندی شده و آماده است.
  2. inet یعنی اینکه این کارت شبکه یک آدرس IPv4 دارد. (در اینجا ۱۹۲٫۱۶۸٫۱٫۳)
  3. subnet mask این کارت شبکه ۰xffffff00 یا به دَهدَهی ۲۵۵٫۲۵۵٫۲۵۵٫۰ است.
  4. BROADCAST به این معنیست که این کارت شبکه یک آدرس broadcast (آدرس پخش همگانی) معتبر دارد که در اینجا ۱۹۲٫۱۶۸٫۱٫۲۵۵ است.
  5. کلمه ether مشخص کنندهMac Address این کارت شبکه است. (در اینجا ۰۰:a0:cc:da:da:da)
  6. این کارت شبکه به گونه‌ای تنظیم شده تا رسانه مورد استفاده آن به صورت خودکار انتخاب شود. (media: Ethernet autoselect (100baseTX <full-duplex>)). میبینید که کارت شبکه dc0 طوری پیکربندی شده تا با رسانه ۱۰baseT/UTP کار کند. برای کسب اطلاعات بیشتر درباره انواع رسانه‌های موجود برای یک داریور، صفحه manual درایور مورد نظر را ببینید.
  7. وضعیت (status) این کارت شبکه active است. یعنی کابل شبکه به آن متصل بوده و سیگنال حامل شناسایی شده است. اگر به کارت شبکه dc1 نگاه کنید میبینید که نوشته : status: no carrier این حالت وقتی که کابل شبکه به کارت متصل نباشد طبیعی است.

اگر خروجی ifconfig چیزی شبیه زیر بود:

 

dc0: flags=8843<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=80008<VLAN_MTU,LINKSTATE>
        ether 00:a0:cc:da:da:da
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active

یعنی اینکه کارت شبکه مورد نظر هنوز پیکربندی نشده است. برای پیکربندی کارت شبکه باید به عنوان کاربر root وارد سیستم شوید.
دستور پایه برای پیکربندی کارت شبکه، همان دستور ifconfig است. در ادامه مثالهایی را خواهیم دید.

فعال/غیر‌فعال کردن کارت

این امکان وجود دارد تا کارت شبکه خود را فعال/غیر فعال کنید. کارت شبکه‌ای که غیرفعال است نمی‌تواند به درخواستها پاسخ دهد. برای غیر فعال کردن یک کارت شبکه به صورت زیر عمل کنید:

 

ifconfig IFNAME down

به جای IFNAME نام کارت شبکه خود را بنویسید. دستور زیر کارت شبکه dc0 را غیر فعال میکند:

 

ifconfig dc0 down

برای فعال کردن مجدد این کارت شبکه دستور زیر را وارد کنید:

 

ifconfig dc0 up

 

اختصاص دادن IP به کارت شبکه

برای اختصاص دادن یک آدرس IPv4 به صورت زیر عمل کنید:

 

# ifconfig IFNAME ADDRESS_FAMILY ADDRESS netmask SUBNETMASK

مثال:

 

# ifconfig dc0 inet 192.168.1.3 netmask 255.255.255.0

دستور بالا آدرس ۱۹۲٫۱۶۸٫۱٫۳ با netmask 255.255.255.0 را به کارت شبکه dc0 اختصاص می‌دهد.
ADDRESS_FAMILY نوع آدرسی که می‌خواهید به کارت شبکه اختصاص دهید را مشخص می‌کند. برای اختصاص دادن یک آدرس IPv4 از کلمه inet و برای IPv6 از inet6 استفاده کنید.
نکته دیگری که دانستنش می‌تواند بریتان جالب باشد تغییر دادن Mac Address یک کارت شبکه است. هر کارت شبکه یک آدرس سخت افزاری منحصر به فرد دارد که در کارخانه به کارت اختصاص داده می‌شود. در یک سیستم FreeBSD امکان تغییر این آدرس سخت افزاری وجود دارد. کافیست در فیلد ADDRESS_FAMILY کلمه ether را وارد کنید. در مثال زیر ما آدرس سخت افزاری کارت شبکه dc0 را برابر e0:69:95:71:38:df قرار می‌دهیم:

 

# ifconfig dc0 ether e0:69:95:71:38:df

تمامی تنظیمات بالا با راه‌اندازی مجدد سیستم از بین خواهند رفت. برای دائمی کردن این تنظیمات، باید آن‌ها را در فایل ‎ /etc/rc.conf قرار دهید.
فایل ‎ /etc/rc.conf را با ویرایشگر دلخواه خود باز کنید. باید یک خط مجزا برای هر کارت شبکه اضافه کنید. برای مثال:

 

ifconfig_dc0=\"inet 192.168.1.3 netmask 255.255.255.0\"
ifconfig_dc1=\"inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP\"

کافیست تا همان آرگومانهایی که در خط فرمان به دستور ifconfig می‌دهید را در داخل دابل کوتیشن بنویسید. اگر در هنگام نصب FreeBSD کارت شبکه خود را پیکربندی کرده‌اید، احتمالاً خطوط بالا وجود داشته و نیاز به وارد کردن مجدد آن‌ها نیست. کافیست تا مقادیر جدید را جایگزین کنید.
خب برای اعمال شدن تنظیمات باید سرویس netif را راه‌اندازی مجدد کنید. میتوانید این کار را هم با restart کردن کل سیستم و هم با دستور زیر انجام دهید:

 

# /etc/rc.d/netif restart

تغییر نام کارت شبکه

اگر از اسم یک کارت شبکه خوش‌تان نمی‌آید مجبور به استفاده از آن نیستید و می‌توانید آن را عوض کنید. این کار را میتوانید با استفاده از کلید واژه name در دستور ifconfig انجام دهید. بنابراین شکل کلی این دستور به صورت زیر خواهد بود:

 

# ifconfig IFNAME name NEWNAME

مثال:

 

# ifconfig dc0 name lan0

دستور بالا کارت شبکه dc0 را به lan0 تغییر نام می‌دهد.

اضافه کردن default gateway

اگر قصد دسترسی به اینترنت را دارید، باید default gateway مورد نظر خود را تنظیم کنید. برای این کار خط زیر را به فایل ‎ /etc/rc.conf اضافه کنید:

 

defaultrouter=\"your_default_router\"

مثلا:

 

defaultrouter=\"192.168.1.20\"

سپس دستور زیر را اجرا کنید تا سرویس routing راه‌اندازی مجدد شده و تنظیمات اعمال گردند.

# /etc/rc.d/routing restart

بعد از اینکه کارت شبکه خود را پیکربندی کردید، نوبت به تست آن می‌رسد.
برای اینکه بدانید یک کارت شبکه درست کار می‌کند یا نه باید دو کار را انجام دهید. اول خودِ کارت شبکه را ping کنید و دوم یک ماشین دیگر را ping کنید.
برای ping کردن یک کارت شبکه محلی به صورت زیر عمل کنید:

 

% ping -c5 192.168.1.3
PING 192.168.1.3 (192.168.1.3): 56 data bytes
64 bytes from 192.168.1.3: icmp_seq=0 ttl=64 time=0.082 ms
64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.074 ms
64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.076 ms
64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.108 ms
64 bytes from 192.168.1.3: icmp_seq=4 ttl=64 time=0.076 ms

--- 192.168.1.3 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.074/0.083/0.108/0.013 ms

حالا یک ماشین دیگر را ping می‌کنیم:

 

% ping -c5 192.168.1.2
PING 192.168.1.2 (192.168.1.2): 56 data bytes
64 bytes from 192.168.1.2: icmp_seq=0 ttl=64 time=0.726 ms
64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.766 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.700 ms
64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.747 ms
64 bytes from 192.168.1.2: icmp_seq=4 ttl=64 time=0.704 ms

--- 192.168.1.2 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 ms

خروجی دستور بالا نشان می‌دهد که پنج بسته فرستاده شد، در عوض پنج بسته هم دریافت شد و ۰% بسته ها از دست رفتند. (این یعنی همه چیز به خوبی کار می‌کند.)



برچسب ها : , ,