5 Dis 2011

Kad Rangkaian Bertindan - Sambungan

Assalamualaikum
Hari ini dah 2 buah server yang aku dah buat tindanan kad rangkaian ni. Dan hari ni aku terjumpa satu pemahaman tentang kod dalam rc.bond yang dibuat dalam catatan kad rangkaian bertindan sebelum ni.
Mari kita tengok kod bash rc.bond

#!/bin/sh
#
        case "$1" in
          'start')
            echo "start bond0"
            #modprobe bonding mode=balance-alb miimon=100
            modprobe bonding mode=balance-rr miimon=100
            modprobe tg3
            ifconfig bond0 up
            ifenslave bond0 eth0
            ifenslave bond0 eth1
            #TODO need to be changed << peringatan penting!!
            ifconfig bond0 hw ether 00:16:3e:aa:aa:aa
          ;;
          'stop')
            ifconfig bond0 down
            rmmod bonding
            rmmod tg3
          ;;
          *)
            echo "Usage: $0 {start|stop}"
          ;;
        esac

Dalam kod yang aku terangkan tu menunjukkan eth0 dan eth1 yang mewakili kad rangkaian 1 dan 2, yang mana kad ini beroperasi di bawah satu kad maya dinamakan bond0.

Kalau lihat pula kod yang diterangkan hijau tu, kad maya bond0 telah disetkan alamat MAC nya secara manual. Dalam kod di atas 00:16:3e:aa:aa:aa  adalah alamat MAC bond0.

Perhatikan jika aku gunakan kod yang sama untuk komputer berlainan, ini bermakna dalam satu rangkaian akan wujud 2 komputer pelayan yang mempunyai alamat MAC kad rangkaian yang sama. Jika pentadbir rangkaian menggunakan switch pintar yang dapat mengenalpasti MAC bertindan, maka kedua komputer ini akan menghadapi masalah rangkaian.

Oleh itu, aku tercari-cari pula cara penyelesaian masalah ni. Mula-mula aku fikir tukar je la alamat MAC tu ikut sedap je, tapi masalah la jugak bila ada 'kemungkinan' bertindan dengan kad rangkaian yang lain pula.

Namun aku terjumpa pula cara untuk menjanakan no MAC secara rawak:

Taip ni di konsol dan korang akan dapat no MAC secara rawak.

openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//'
Kemudian aku cuba pula cara untuk menentukan alamat MAC yang dijana itu tidak sedia wujud dalam rangkaian. Namun, setelah berfikir lama sikit, aku dapat la satu buah fikiran yang baik iaitu lebih mudah jika aku gunakan alamat MAC mana-mana satu kad rangkaian yang tersedia dalam komputer pelayan tersebut.Ini sudah menjamin keunikan alamat MAC tersebut kerana setiap kad rangkaian yang dibuat mempunyai no alamat MAC yang unik.

namun jika kita larikan arahan ifconfig -a, yang kita dapat lihat adalah ketetapan rangkaian yang terkini, bukannya yang asal. Dengan kata lain, alamat MAC yang tertera selepas ifconfig -a adalah alamat MAC yang dimasukkan dalam fail /etc/rc.d/rc.bond

Untuk melihat MAC address asal bagi kedua-dua kad rangkaian adalah dengan melihat kepada alamat fizikalnya. Caranya adalah degan melarikan arahan di bawah :-

dmesg | grep eth 

Contoh :
root@serverKawe :~# dmesg | grep eth 
[    6.324430] 8139too 0000:02:09.0: eth0: RealTek RTL8139 at 0xdc00, ba:de:de:ba:b0:00, IRQ 18
[    6.716095] e1000 0000:02:0c.0: eth1: (PCI:33MHz:32-bit) fe:fa:fe:fa:fa:ff
[    6.728886] e1000 0000:02:0c.0: eth1: Intel(R) PRO/1000 Network Connection
[    6.960248] udev[1124]: renamed network interface eth1 to eth1-eth0
[    7.469948] udev[1123]: renamed network interface eth0 to eth1
[    7.495243] udev[1124]: renamed network interface eth1-eth0 to eth0
[   19.406802] bonding: bond0: enslaving eth0 as an active interface with a down link.



Selepas itu edit fail /etc/rc.d/rc.bond dengan memasukkan alamat MAC eth0/eth1 daripada dmesg tadi.

pico /etc/rc.d/rc.bond
edit baris dibawah ini sahaja


..
ifconfig bond0 hw ether ba:de:de:ba:b0:00
..
..


Jadi, selesai la masalah ni InsyaAllah.

p/s 
* arahan ifconfig bond0 hw ether 00:16:3e:aa:aa:aa dapat digunakan untuk ubah alamat MAC secara maya, atau dalam istilah keselamatan komputer dinamakan spoofing. Jadi dalam bahasa melayu boleh dikatakan sebagai 'topeng alamat MAC' untuk mencapai maksud spoof tu.. 


* modprobe dalam /etc/rc.d/rc.bond adalah mod gabungan kad rangkaian yang menentukan bagaimana kedua-dua kad rangkaian itu berfungsi 



Untuk rujukan , di bawah ini adalah mod untuk gabungan (bonding) kad rangkaian. Mod-mod di bawah adalah yang biasanya digunakan.
mode=0 (balance-rr)
Round-robin policy: Transmit packets in sequential order from the first available slave through the last. This mode provides load balancing and fault tolerance.

mode=1 (active-backup)
Active-backup policy: Only one slave in the bond is active. A different slave becomes active if, and only if, the active slave fails. The bond’s MAC address is externally visible on only one port (network adapter) to avoid confusing the switch. This mode provides fault tolerance. The primary option affects the behavior of this mode.

mode=2 (balance-xor)
XOR policy: Transmit based on [(source MAC address XOR'd with destination MAC address) modulo slave count]. This selects the same slave for each destination MAC address. This mode provides load balancing and fault tolerance.
mode=3 (broadcast)
Broadcast policy: transmits everything on all slave interfaces. This mode provides fault tolerance.

mode=4 (802.3ad)
IEEE 802.3ad Dynamic link aggregation. Creates aggregation groups that share the same speed and duplex settings. Utilizes all slaves in the active aggregator according to the 802.3ad specification.
Pre-requisites:
1. Ethtool support in the base drivers for retrieving
the speed and duplex of each slave.
2. A switch that supports IEEE 802.3ad Dynamic link
aggregation.
Most switches will require some type of configuration
to enable 802.3ad mode.

mode=5 (balance-tlb)
Adaptive transmit load balancing: channel bonding that does not require any special switch support. The outgoing traffic is distributed according to the current load (computed relative to the speed) on each slave. Incoming traffic is received by the current slave. If the receiving slave fails, another slave takes over the MAC address of the failed receiving slave.
Prerequisite:
Ethtool support in the base drivers for retrieving the
speed of each slave.

mode=6 (balance-alb)
Adaptive load balancing: includes balance-tlb plus receive load balancing (rlb) for IPV4 traffic, and does not require any special switch support. The receive load balancing is achieved by ARP negotiation. The bonding driver intercepts the ARP Replies sent by the local system on their way out and overwrites the source hardware address with the unique hardware address of one of the slaves in the bond such that different peers use different hardware addresses for the server.
[source: http://www.linuxhorizon.ro/bonding.html]

Tiada ulasan:

Catat Ulasan

Demo sero guano?