Hrátky se síťovým interface

strict warning: Only variables should be passed by reference in /app/www/honza/www/drupal-new/modules/book/book.module on line 559.
Při konfiguraci náročnějších systémů může dojít k situaci, kdy nestačí dostupné možnosti pro konfiguraci síťových karet a člověk má chuť začít dělat psí kusy, některé z nich jsou tu popsány.
Pro konfiguraci používám nejčastěji start a stop scripty. Na druhou stranu to není jediný způsob, je možné tyto záležitosti řešit i v rámci souboru /etc/rc.conf. Tato verze, která využívá "cloned interface" je zde vždy popsána jako další varianta.


Bridge interface
Bridge se hodi na spoustu zábavy, například i pro spojení dvou karet schopných pouze naslouchat síťovému provozu. Ty se pak hezky spojí a kupříkladu takový Snort nebo i obyčejný tcpdump může naslouchat. Přesto je systém prakticky nedetekovatelný. Postup instalace je následující:

1a) Vytvořit soubor s názvem interface, v tomto případě /etc/start_if.bridge0, který bude obsahovat následující dva řádky:
/sbin/ifconfig bridge0 create
/sbin/ifconfig bridge0 addm fxp0 addm fxp1 monitor up


2a) Nakonfigurovat jednotlivé interface v souboru /etc/rc.conf
network_interfaces="lo0 fxp0 fxp1 bridge0"
ifconfig_fxp0="promisc staticarp up"
ifconfig_fxp1="promisc staticarp up"
ifconfig_bridge0="promisc staticarp monitor up"

1b) Jinou verzí je pouze použití záznamů v souboru /etc/rc.conf a "clonned interfaces":
ifconfig_fxp0="up"
ifconfig_fxp1="up"
cloned_interfaces="bridge0"
ifconfig_bridge0="addm fxp0 addm fxp1 monitor up promisc staticarp monitor 192.168.1.1/24"



Failover interface
Pokud se tvoří cluster, nebo je nutné zajistit spolehlivou konektivitu i v případě přerušení spojení k jednomu switchi, je možné využít následující konfiguraci. Ta při ztrátě nosného signálu (například výpadek switche) zajistí přepojení na druhý kanál, takže data mohou dále téci k uživatelům:

1a) Vytvořit soubor s názvem interface, v tomto případě /etc/start_if.lagg0, který bude obsahovat následující dva řádky:
/sbin/ifconfig lagg0 create
/sbin/ifconfig lagg0 up laggproto failover laggport fxp0 laggport fxp1


2a) Nakonfigurovat jednotlivé interface v souboru /etc/rc.conf
network_interfaces="lo0 fxp0 fxp1 lagg0"
ifconfig_fxp0="up"
ifconfig_fxp1="up"
ifconfig_lagg0="inet 192.168.1.1/24"

1b) Jinou možností konfigurace failover interface je pouze použití záznamů v souboru /etc/rc.conf s využitím "cloned interface":
ifconfig_fxp0="up"
ifconfig_fxp1="up"
cloned_interfaces="lagg0"
ifconfig_lagg0="laggproto failover laggport fxp0 laggport fxp1 DHCP"

Pokud je potřeba nastavit pevnou IP adresu, poslední řádek pak bude:
ifconfig_lagg0="laggproto failover laggport fxp0 laggport fxp1 192.168.1.1 netmask 255.255.255.0"




Vyvažování zátěže s podporou na switchi
V případě, když nestačí datové toky, je možbé vytvořit tzv. etherchannel, tedy neco jako trunk z více karet. Podmínkou je konfigurace protejěího zařízení, tedy switche. Výsledkem je pak rychlost rovnající se přibližně součtu rychlostí síťových karet:

1a) Vytvořit soubor s názvem interface, v tomto případě /etc/start_if.lagg0, který bude obsahovat následující dva řádky:
/sbin/ifconfig lagg0 create
/sbin/ifconfig lagg0 up laggproto fec laggport fxp0 laggport fxp1


2a) Nakonfigurovat jednotlivé interface v souboru /etc/rc.conf
network_interfaces="lo0 fxp0 fxp1 lagg0"
ifconfig_fxp0="up"
ifconfig_fxp1="up"
ifconfig_lagg0="inet 192.168.1.1/24"

1b) Nebo, podobně jako v předchozích případech využít "cloned interface":
ifconfig_fxp0="up"
ifconfig_fxp1="up"
cloned_interfaces="lagg0"
ifconfig_lagg0="laggproto fec laggport fxp0 laggport fxp1 DHCP"

Pokud je potřeba nastavit pevnou IP adresu, poslední řádek pak bude zapsán tímto způsobem:
ifconfig_lagg0="laggproto fec laggport fxp0 laggport fxp1 192.168.1.1 netmask 255.255.255.0"




LACP interface
Link Agregation Protocol (802.3ad) umožňuje vytvořit spojení několika fyzických síťových interface do jednoho logického kanálu. Bližší informace jsou na Wikipedii:

1a) Vytvořit soubor s názvem interface, v tomto případě /etc/start_if.lagg0, který bude obsahovat následující dva řádky:
/sbin/ifconfig lagg0 create
/sbin/ifconfig lagg0 up laggproto lacp laggport fxp0 laggport fxp1


2a) Nakonfigurovat jednotlivé interface v souboru /etc/rc.conf
network_interfaces="lo0 fxp0 fxp1 lagg0"
ifconfig_fxp0="up"
ifconfig_fxp1="up"
ifconfig_lagg0="inet 192.168.1.1/24"

1b) Nebo, podobně jako v předchozích případech využít "cloned interface":
ifconfig_fxp0="up"
ifconfig_fxp1="up"
cloned_interfaces="lagg0"
ifconfig_lagg0="laggproto lacp laggport fxp0 laggport fxp1 DHCP"

Pokud je potřeba nastavit pevnou IP adresu, poslední řádek pak bude zapsán tímto způsobem:
ifconfig_lagg0="laggproto lacp laggport fxp0 laggport fxp1 192.168.1.1 netmask 255.255.255.0"




Vyvažování zátěže bez podpory switche
V případě, když nestačí datové toky a není k dispozici inteligentní switch, je možbé sloučit datové toky trochu jednoduššímm způsobem. Při něm se pakety vysílají a přijímají v přibližně stejném poměru z obou síťových interface. Výsledkem je pak rychlost rovnající se přibližně součtu rychlostí síťových karet:

1a) Vytvořit soubor s názvem interface, v tomto případě /etc/start_if.lagg0, který bude obsahovat následující dva řádky:
/sbin/ifconfig lagg0 create
/sbin/ifconfig lagg0 up laggproto roundrobin laggport fxp0 laggport fxp1


2a) Nakonfigurovat jednotlivé interface v souboru /etc/rc.conf
network_interfaces="lo0 fxp0 fxp1 lagg0"
ifconfig_fxp0="up"
ifconfig_fxp1="up"
ifconfig_lagg0="inet 192.168.1.1/24"

1b) Nebo, podobně jako v předchozích případech využít "cloned interface":
ifconfig_fxp0="up"
ifconfig_fxp1="up"
cloned_interfaces="lagg0"
ifconfig_lagg0="laggproto roundrobin laggport fxp0 laggport fxp1 DHCP"

Pokud je potřeba nastavit pevnou IP adresu, poslední řádek pak bude zapsán tímto způsobem:
ifconfig_lagg0="laggproto roundrobin laggport fxp0 laggport fxp1 192.168.1.1 netmask 255.255.255.0"




Záložní stroje
Může dojít k situaci, kdy je potřeba realizovat záložní stroje. Například dva servery, kde jeden poskytuje Apache a druhý FTP. Třetí čeká na výpadek, aby je s těmito službami zastoupil:

1a) Vytvořit soubor s názvem interface, v tomto případě to budou interface /etc/start_if.carpx
První fyzický server pro Apache, /etc/start_if.carp0:
/sbin/ifconfig carp0 create
/sbin/ifconfig carp0 up vhid 1 pass apache 192.168.1.1/24


Druhý fyzický server pro FTP, /etc/start_if.carp0:
/sbin/ifconfig carp0 create
/sbin/ifconfig carp0 up vhid 2 pass ftp 192.168.1.2/24


Třetí fyzický server pro zálohu služeb bude obsahovat tyto interface dva, takže /etc/start_if.carp0:
/sbin/ifconfig carp0 create
/sbin/ifconfig carp0 up vhid 1 pass apache 192.168.1.1/24

a jako druhý bude /etc/start_if.carp1:
/sbin/ifconfig carp1 create
/sbin/ifconfig carp0 up vhid 2 pass ftp 192.168.1.2/24


2a) Nakonfigurovat jednotlivé interface v souboru /etc/rc.conf
První fyzický server pro Apache:
network_interfaces="lo0 fxp0 carp0"
ifconfig_fxp0="inet 192.168.1.10/24"
ifconfig_carp0="up"

Druhý fyzický server pro FTP:
network_interfaces="lo0 fxp0 carp0"
ifconfig_fxp0="inet 192.168.1.11/24"
ifconfig_carp0="up"

Třetí fyzický server pro zálohu obou služeb:
network_interfaces="lo0 fxp0 carp0 carp1"
ifconfig_fxp0="inet 192.168.1.12/24"
ifconfig_carp0="up"
ifconfig_carp1="up"

1b) Nebo (a to už překonávám svoji lenost), zase využít oblíbený "cloned interface":
První fyzický server pro Apache:
network_interfaces="lo0 fxp0 carp0"
ifconfig_fxp0="inet 192.168.1.10/24"
cloned_interfaces="carp0"
ifconfig_carp0="vhid 1 pass apache 192.168.1.1/24"

Druhý fyzický server pro FTP:
network_interfaces="lo0 fxp0 carp0"
ifconfig_fxp0="inet 192.168.1.11/24"
cloned_interfaces="carp0"
ifconfig_carp0="vhid 2 pass ftp 192.168.1.1/24"

Třetí fyzický server pro zálohu obou služeb:
network_interfaces="lo0 fxp0 carp0 carp1"
ifconfig_fxp0="inet 192.168.1.12/24"
cloned_interfaces="carp0 carp1"
ifconfig_carp0="vhid 1 pass apache 192.168.1.1/24"
ifconfig_carp1="vhid 2 pass ftp 192.168.1.1/24"



Jako zdroje byly použity stránky, které obsahují trochu jiné postupy, ale výsledek je shodný:
Popis BRIDGE interface
Popis LAGG interface
Popis CARP interface

Powered by Drupal - Design by artinet