Thursday 27 October 2011

Как се "бриджват" 2 мрежови карти в Линукс

Още e познато като ethernet bridge. Доста често ми се налага в процеса на работа да го правя, за да подслушвам мрежов трафик за тестовете на оборудването, което произвеждаме. Писал съм и този материал на английски, ако ви е по-комфортно така (Same article in English).

Накратко, трябват Network пакетите на всеки произволен линукс. Вижте дали тези три команди ги имате: ifconfig, brctl и tc. Последното не е необходимо за bridge, но има една полезна функция, която може да искате да знаете.

bash-4.1# which ifconfig
/sbin/ifconfig
bash-4.1# 
bash-4.1# which brctl
/sbin/brctl
bash-4.1# 
bash-4.1# which tc
/sbin/tc
bash-4.1#

Самото правене на bridge (мост :) )

не е нищо особено, прави се виртуално мрежово име с brctl, добавят му се мрежови карти и се вдига с ifconfig up. В моята тестова система има 3 мрежови карти. Една за интернет и 2 за тестове.

bash-4.1# ifconfig | grep eth
eth0      Link encap:Ethernet  HWaddr 00:01:6C:27:4B:BA  
eth1      Link encap:Ethernet  HWaddr 00:06:4F:29:49:F0  
eth2      Link encap:Ethernet  HWaddr 00:01:6C:E2:FF:D2  
bash-4.1# brctl addbr br001
bash-4.1# brctl addif br001 eth1
bash-4.1# brctl addif br001 eth2
bash-4.1# ifconfig br001 up
bash-4.1# ifconfig br001
br001     Link encap:Ethernet  HWaddr 00:01:6C:E2:FF:D2  
          inet6 addr: fe80::201:6cff:fee2:ffd2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:238 (238.0 b)

bash-4.1# 

Това е всичко, което трябва. В момента ако се включат произволни 2 мрежови устройства на eth1 и eth2 те ще се виждат напълно нормално през този transparent bridge.

Има още един хитринка, която използвам в тестовете и може да ви е полезна. Чупене на трафик ;). Прави се с една команда:

bash-4.1# tc qdisc add dev eth1 root netem delay 0.3s loss 1%

С тази команда добавихме забавяне на пакетите и 1% загуба. Можете естествено да пробвате с повече. Ползва се основно за да тествате как реагират мрежови устройства и мрежов софтуер в спартанските условия на евтини квартални ланки :D

И естествено, можете да си инсталирате един Wireshark и да дъмпвате пакетите в human readable format, за да ги анализирате. С каква цел ... вие си знаете. Аз основно подслушвам пакети, за да съм сигурен, че програмистите не са объркали нещо в кода.

No comments:

Post a Comment