|
1.
Moduły sieciowe
Obecnie wspierane są modułowe skrypty sieciowe, co oznacza, że w prosty sposób
można dodawać kolejne urządzenia sieciowe i moduły konfiguracyjne, zachowując
zgodność z obecnie działającymi.
Moduły są domyślnie wczytywane w momencie gdy są potrzebne przez jakiś pakiet.
Jeżeli zostanie zdefiniowany moduł, który nie posiada zainstalowanego pakietu,
wyświetlony zostanie błąd z komunikatem mówiącym jaki pakiet należy
doinstalować. Najczęściej ustawień modułów używa się jedynie wtedy, gdy zostały
zainstalowane dwa lub więcej pakiety, które udostępniają tę samą usługę i
należy wyznaczyć która usługa ma pierwszeństwo.
Uwaga:
Wszystkie omówione w tym rozdziale ustawienia powinny być wpisane do pliku
/etc/conf.d/net, chyba, że zaznaczymy inaczej.
|
Listing 1.1: Ustawienia modułów |
modules=( "iproute2" )
modules_eth0=( "pump" )
modules=( "!iwconfig" )
|
1.
Kontrolery sieciowe
Dostępne są dwa pakiety służące do kontrolowania interfejsów sieciowych:
ifconfig oraz iproute2. Potrzebne jest jedno z tych dwóch, aby
cokolwiek skonfigurować na urządzeniu sieciowym.
Domyślnie w Gentoo używane jest ifconfig i jest dostępny w profilu
systemowym. iproute2 jest potężniejszy i elastyczniejszy, ale nie jest
załączany domyślnie.
Listing 1.1: Aby zainstalować iproute2 |
# emerge sys-apps/iproute2
modules=( "iproute2" )
|
Jako że ifconfig oraz iproute2 są podobne w działaniu, można
pozwolić, aby ich podstawowa konfiguracja współpracowała ze sobą. Dla
przykładu, poniższe linijki współpracują z obydwoma programami.
Listing 1.1: Przykłady dla ifconfig oraz iproute2 |
config_eth0=( "192.168.0.2/24" )
config_eth0=( "192.168.0.2 netmask 255.255.255.0" )
config_eth0=( "192.168.0.2/24 brd 192.168.0.255" )
config_eth0=( "192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255" )
|
1.
DHCP
DHCP to pobieranie informacji o sieci (adres IP, serwery DNS, bramka, etc.).
Oznacza to, że jeżeli jest serwer DHCP w sieci, należy wskazać komputerom
klienckim, aby używały serwera DHCP, dzięki czemu sieć zostanie skonfigurowana
automatycznie. Oczywiście, samodzielnie trzeba będzie skonfigurować takie
rzeczy jak sieć bezprzewodowa, PPP czy inne, które są wymagane, zanim będzie
można skorzystać z DHCP.
Z DHCP można skorzystać za pomocą dhcpcd, dhclient, pump
lub udhcpc. Każdy z nich posiada swoje zalety i wady. Oto krótkie
wprowadzenie.
| Moduł DHCP |
Pakiet |
Zalety |
Wady |
| dhclient |
net-misc/dhcp |
Stworzone przez ISC, te same osoby które stworzyły BIND DNS
Bardzo konfigurowalne.
|
Konfiguracja jest bardzo skomplikowana, oprogramowanie jest dość duże,
nie można otrzymać serwerów NTP z DHCP i domyślnie nie jest wysyłana nazwa
hosta.
|
| dhcpcd |
net-misc/dhcpcd |
Przez długi czas jako domyślny w Gentoo, nie związany z zewnętrznymi
narzędziami, aktywnie rozwijany przez Gentoo
|
Bywa powolny, nie zawsze potrafi przejść w tryb demona |
| pump |
net-misc/pump |
Niewielkie rozmiary, nie związany z zewnętrznymi narzędziami
|
Brak wsparcia ze strony twórców, źle działa przy połączeniach
modemowych, nie można otrzymać serwerów NIS z DHCP
|
| udhcpc |
net-misc/udhcp |
Niewielkie rozmiary - najmniejszy dostępny klient dhcpd, stworzony dla
systemów wbudowanych
|
Żadna dystrybucja nie używa go jako domyślnego, nie można ustawić czasu
wygaśnięcia dłuższego niż 3 sekundy
|
Jeżeli jest zainstalowanych więcej niż jeden klient DHCP, należy określić który
ma być używany. W innym przypadku zostanie użyty dhcpcd, jeżeli jest
dostępny.
W celu wysłania określonych opcji do modułu dhcp, należy użyć
module_eth0="..." (należy zmienić module na nazwę modułu dhcp, który
jest używany, np. dhcpcd_eth0).
Dokładamy starań, aby DHCP było możliwie agnostyczne - wspieramy wobec tego
następujące polecenia używając zmiennej dhcp_eth0. Domyślnie żadna z
tych zmiennych nie jest ustawiona.
-
release - uwalnia adres IP do ponownego użytku
-
nodns - nie nadpisuje /etc/resolv.conf
-
nontp - nie nadpisuje /etc/ntp.conf
-
nonis - nie nadpisuje /etc/yp.conf
Listing 1.1: Przykładowa konfiguracja DHCP w /etc/conf.d/net |
modules=( "dhcpcd" )
config_eth0=( "dhcp" )
dhcpcd_eth0="-t 10"
dhcp_eth0="release nodns nontp nonis"
|
Uwaga:
dhcpcd, udhcpc oraz pump domyślnie wysyłają aktualną nazwę
hosta do serwera DHCP wobec czego nie trzeba tego definiować.
|
1.
ADSL z PPPoE/PPPoA
Na początek należy zainstalować oprogramowanie do ADSL-a.
Listing 1.1: Instalacja pakietu ppp |
# emerge net-dialup/ppp
|
Uwaga:
Jeżeli potrzebujemy PPPoA należy się upewnić, że używamy
>=baselayout-1.12.x.
|
Następnie, tworzymy skrypt internetowy PPP oraz skrypt dla interfejsu
sieciowego, który będzie używał PPP.
Listing 1.1: Tworzenie skryptu PPP oraz sieciowego |
# ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0
# ln -s /etc/init.d/net.lo /etc/init.d/net.eth0
|
Należy się upewnić, że posiadamy ustawioną zmienną RC_NET_STRICT_CHECKING="yes"
w pliku /etc/conf.d/rc.
Następnie odpowiednio uzupełniamy plik /etc/conf.d/net.
Listing 1.1: Podstawowa konfiguracja PPPoE |
config_eth0=( null )
config_ppp0=( "ppp" )
link_ppp0="eth0"
plugins_ppp0=( "pppoe" )
username_ppp0='user'
password_ppp0='password'
pppd_ppp0=(
"noauth"
"defaultroute"
"usepeerdns"
"holdoff 3"
"child-timeout 60"
"lcp-echo-interval 15"
"lcp-echo-failure 3"
noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp
)
depend_ppp0() {
need net.eth0
}
|
Hasło możemy również przechowywać w pliku /etc/ppp/pap-secrets.
Listing 1.1: Przykładowy plik /etc/ppp/pap-secrets |
"username" * "password"
|
Jeżeli używamy PPPoE z modemem USB musimy zainstalować br2684ctl. Aby
poprawnie go skonfigurować należy przeczytać
/usr/portage/net-dialup/speedtouch-usb/files/README.
Ważne:
Powinniśmy uważnie przeczytać sekcje dotyczące ADSL i PPP znajdujące się w
pliku /etc/conf.d/net.example. Zawarte są tam bardziej szczegółowe
wyjaśnienia opcji PPP, których zapewne będziemy potrzebować.
|
1.
APIPA {Automatyczne prywatne adresowanie IP (ang. Automatic Private IP Addressing)}
APIPA stara sie znaleźć wolny adres w zakresie 169.254.0.0-169.254.255.255
poprzez losowe odpytywanie sieci za pomocą danego interfejsu. Jeżeli nie ma
żadnej odpowiedzi, taki adres jest przypisywany do interfejsu.
Przydaje się tylko w sieciach LAN gdzie nie ma serwera DHCP, które nie mają
połączenia z Internetem i gdzie wszystkie komputery używają APIPA.
Aby było wsparcie dla APIPA, należy zainstalować net-misc/iputils lub
net-analyzer/arping.
Listing 1.1: Konfiguracja APIPA w /etc/conf.d/net |
config_eth0=( "dhcp" )
fallback_eth0=( "apipa" )
config_eth0=( "apipa" )
|
1.
Wiązanie urządzeń sieciowych
Aby mieć możliwość łączenia urządzeń sieciowych, należy zainstalować
net-misc/ifenslave.
Łączenie urządzeń sieciowych stosuje się w celu zwiększenia przepustowości
sieci. Jeżeli w komputerze są do dyspozycji dwie karty sieciowe znajdujące się
w tej samej sieci, można je połączyć tak, żeby aplikacje w rzeczywistości
używały obu urządzeń jednocześnie.
Listing 1.1: Konfiguracja łączenia w /etc/conf.d/net |
slaves_bond0="eth0 eth1 eth2"
config_bond0=( "null" )
depend_bond0() {
need net.eth0 net.eth1 net.eth2
}
|
1.
Mostkowanie (wsparcie dla 802.1d)
Aby mieć możliwość mostkowania, należy zainstalować
net-misc/bridge-utils.
Mostkowanie jest używane do łączenia w całość dużych sieci. Dla przykładu można
mieć serwer, który łączy się z internetem przy pomocy ADSL oraz ma połączenie z
bezprzewodową kartą sieciową by umożliwić innym komputerom łączenie się z
internetem przy pomocy modemu ADSL. Można stworzyć mostek do połączenia obydwu
interfejsów.
Listing 1.1: Konfiguracja mostka w /etc/conf.d/net |
brctl_br0=( "setfd 0" "sethello 0" "stp off" )
bridge_br0="eth0 eth1"
config_eth0=( "null" )
config_eth1=( "null" )
config_br0=( "192.168.0.1/24" )
depend_br0() {
need net.eth0 net.eth1
}
|
Ważne:
Aby korzystać z niektórych ustawień mostków, warto zajrzeć do dokumentacji
opisującej (nazwy zmiennych).
|
1.
Adresy MAC
W celu zmiany adresów MAC interfejsów sieciowych wystarczy posiadać
zainstalowany sys-apps/baselayout-1.11.14 lub nowszy. Jeżeli zachodzi
potrzeba zamiany adresu na losowy lub baselayout jest starszy od wyżej
wymienionej wersji, należy zainstalować net-analyzer/macchanger.
Listing 1.1: Przykład zmiany adresu MAC |
mac_eth0="00:11:22:33:44:55"
mac_eth0="random-ending"
mac_eth0="random-samekind"
mac_eth0="random-anykind"
mac_eth0="random-full"
|
1.
Tunelowanie
Nie trzeba niczego instalować, aby korzystać z tunelowania, gdyż kontroler
sieciowy posiada już tę możliwość.
Listing 1.1: Konfiguracja tunelowania w /etc/conf.d/net |
iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"
iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"
config_vpn0=( "192.168.0.2 peer 192.168.1.1" )
|
1.
VLAN (wsparcie dla 802.1q)
Aby posiadać wsparcie dla VLAN, należy zainstalować net-misc/vconfig.
VLAN to grupa urządzeń sieciowych które zachowują się tak, jakby były
podłączone do jednego segmentu sieciowego - nawet jeśli tak nie jest.
Członkowie VLAN-u mogą jedynie widzieć innych członków VLAN-u, nawet jeśli
współdzielą sieć z innymi urządzeniami.
Listing 1.1: Konfiguracja VLAN w /etc/conf.d/net |
vlans_eth0="1 2"
vconfig_eth0=( "set_name_type VLAN_PLUS_VID_NO_PAD" )
vconfig_vlan1=( "set_flag 1" "set_egress_map 2 6" )
config_vlan1=( "172.16.3.1 netmask 255.255.254.0" )
config_vlan2=( "172.16.2.1 netmask 255.255.254.0" )
|
Ważne:
Aby używać niektórych ustawień VLAN, może zajść potrzeba zajrzenia do
dokumentacji opisującej (nazwy
zmiennych).
|
|