Rozšířená konfigurace sítě
ISA PnP tools
Spoustě ISA síťových karet, a nejen síťových karet, používá se to i u ISA zvukovek, nestačí zadat parametry při zavádění modulu. IRQ se nastavuje softwarově a bez těchto utilit nebo zakompilování ovladače přímo do jádra síťovka prostě neběží. Pokud máte takové karty dvě, jádro detekuje jen jednu a informace o druhé i o první musíte dávat parametry přes lilo. Zprovoznění je jednoduché, nejdříve si kartu necháme nadetekovat, hodí to takovýto výpis, pozor, výpis je zkrácen.
root@thovt:~#pnpdump
# (DEBUG)
(READPORT 0x0273)
(ISOLATE PRESERVE)
(IDENTIFY *)
(VERBOSITY 2)
(CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING
# Card 1: (serial identifier af 97 9c 95 c9 98 50 6d 50)
# Vendor Id TCM5098, Serial Number 2543621577, checksum 0xAF.
# Version 1.0, Vendor version 1.0
# ANSI string -->3Com 3C509B EtherLink III<--
#
# Logical device id TCM5098
# Device supports I/O range check register
# Device supports vendor reserved register @ 0x39
# Device supports vendor reserved register @ 0x3b
# Device supports vendor reserved register @ 0x3c
# Device supports vendor reserved register @ 0x3e
# Device supports vendor reserved register @ 0x3f
#
(CONFIGURE TCM5098/2543621577 (LD 0
# Compatible device id PNP80f7
# IRQ 3, 5, 7, 9, 10, 11, 12 or 15.
# High true, edge sensitive interrupt (by default)
# (INT 0 (IRQ 3 (MODE +E)))
# Logical device decodes 16 bit IO address lines
# Minimum IO base address 0x0210
# Maximum IO base address 0x03e0
# IO base alignment 16 bytes
# Number of IO addresses required: 16
# (IO 0 (SIZE 16) (BASE 0x0210) (CHECK))
(NAME "TCM5098/2543621577[0]{3Com 3C509B EtherLink III}")
# (ACT Y)
))
# End tag... Checksum 0x00 (OK)
# Returns all cards to the "Wait for Key" state
(WAITFORKEY)
Pokud to kartu našlo, stačí tyto parametry zadat do souboru /etc/isapnp.conf
. Ušetříme si práci s přepisováním, když si výpis necháme přesměrovat rovnou do tohoto souboru, a to takhle: pnpdump > /etc/isapnp.conf
, jediné, co pak ještě musíme upravit editací, je zrušit # před act, což je logické :-) Tím, že jsme tento soubor vytvořili, se to začne samo spouštět při startu systému, /etc/rc.d/rc.S
testuje existenci konfigurace a isapnp spouští. Ještě zavést modul a síťovku nahodit ifconfigem a fungujeme :-)
Ethtool
Ethtool je ulilita na nastavování ethernet karet. Můžete s tím měnit rychlost, duplex a další věci. Ne vše bude fungovat a ne všechny karty to podporují, třeba moje ne2k :-( Ale na druhou stranu tam nic takového není potřeba nastavovat. Prográmek je součástí balíku tcpip, takže ho tam bude mít určitě každý. Zde uvádím příklad výpisu:
root@IOL:~# ethtool eth0 Settings for eth0: Supported ports: [ TP BNC ] Supported link modes: 10baseT/Half 10baseT/Full Supports auto-negotiation: No Advertised link modes: Not reported Advertised auto-negotiation: No Speed: 10Mb/s Duplex: Full Port: Twisted Pair PHYAD: 0 Transceiver: internal Auto-negotiation: off Current message level: 0x00000002 (2) Link detected: yes
Vše z výpisu vysvětlovat nebudu, ono to snad ani není potřeba, jen ukážu příklad, jak se změní duplex:
root@IOL:~#ethtool -s eth0 duplex full
Ostatní parametry jako např. rychlost se mění obdobně, pro detaily použijte nápovědu :-)
Tunely GRE a IP
Popis teorie a podrobnosti zde opět vysvětlovat nebudu, na to se podívejte na jiný článek na rootu. Jen popíši, jak takový tunel udělat na našem routeru, a ještě ukážu, jak ho udělat i proti Ciscu. Je to trochu jiný způsob než v článku, nejsou k tomu potřeba iputil2, program iptunnel je také součástí balíku tcpip.
modprobe ip_gre
iptunnel add gre1 mode gre remote 194.228.23.17 local 213.173.12.3 dev eth0
ifconfig gre1 192.168.7.1 netmask 255.255.255.252 up
route add -net 192.168.2.0 netmask 255.255.255.0 gre0
Toto zadáte na prvním routeru. Zavedete modul pro gre tunel, bez modulu lze použít mode ipip; tímto to vytvoříte jako device, viz cat /proc/net/dev
. Ifconfigem přidělíte spojovák a tunel jako takový nahodíte. No a pak si do něj naroutujete tu síť za druhým routerem.
Na druhém routeru nastavíte:
modprobe ip_gre
iptunnel add gre1 mode gre remote 213.173.12.3 local 1.1.1.77 dev eth0
ifconfig gre1 192.168.7.2 netmask 255.255.255.252 up
route add -net 192.168.1.0 netmask 255.255.255.0 gre0
Jak vidíte, IP jsou otočeny, a je tu ještě jedna věc, druhý router je za překladem 1:1. No a ještě ta samá konfigurace, ale bez toho, že router je za překladem proti cisco routeru.
interface Tunnel0 ip address 192.168.7.2 255.255.255.252 tunnel source Serial0 tunnel destination 213.173.12.3 ! ip route 192.168.1.0 255.255.255.0 Tunnel0
A ještě, vytvořené tunely si na Linuxu vypíšete příkazem iptunnel list
, samozřejmě jich můžete mít i více. Při výpisu ifconfigem se to chová jako klasický interface.
PPTP tunel
Pptp tunel se používá u ADSL připojení, ale lze ho použít pro tunel pro vpn. Já ho použil opět proti ciscu. Můžete stáhnout balíček, který podporu pptp nainstaluje. Ohledně ADSL na Linuxu vyšel také článek. I když dnes se už ADSL připojuje přes routery a do vaší sítě je to připojeno klasickým ethernetem. Já tedy ukážu pouze to propojení s ciscem.
Vytvořte soubor /etc/ppp/chap-secrets
, vlastník je root a práva jsou 600. V souboru je následující:
#client server secret ip vondr cisco 1a4867 194.228.3.7 vondr-dial * 1b4867 *
Hesla se sdílí i pro dialové připojení, to si ukážeme také. První řádek má jednu zvláštnost, username se dá použít pouze pro spojení s tou jednou definovanou IP adresou a navíc hostname zařízení, na které se budeme připojovat, musí být také shodné, v našem případě cisco. Pokud by tam byly hvězdičky jako v druhém řádku, username se dá použít pro jakýkoliv hostname a IP. Na routeru bude tedy konfigurace:
hostname cisco user vondr password 1a4867 aaa new-model ! ! aaa authentication ppp vpn local vpdn enable ! vpdn-group vpn ! Default PPTP VPDN group accept-dialin protocol pptp virtual-template 1 ! interface Ethernet0 ip address 192.168.3.7 255.255.255.0 ! interface Virtual-Template1 ip address negotiated no peer default ip address ppp authentication chap vpn ppp multilink
Na našem routeru zadejte: pptp 192.168.3.7 user vondr 192.168.254.10:192.168.254.9 &
a tím se připojíte, vytvoří se interface ppp1 (tedy v mém případě to je ppp1, protože na ppp0 visí čekání na přímé propojení kabelem přes seriák). Další parametry a případně vysvětlení čerpejte zde.
Ještě ukážu variantu, kdy IP přiděluje router:
interface Virtual-Template1 ip address 192.168.254.1 255.255.255.0 peer default ip address pool pptp ppp authentication chap vpn ppp multilink ! ip local pool pptp 192.168.254.2 192.168.254.50
Na routeru pak píšete jen: pptp 192.168.3.7 user vondr &
.
Tunel při výpadku spojení padá, ale je tu výhoda, že projde i skrz nat, když nemáte veřejnou IP adresu. Tunel schazujeme pidem z /var/run
jako obvykle. Případné přidání rout už ani nepíšu, je to stejné jako u pevného gre tunelu.
Dial
Dial se už probíral na mnoha místech a mnohokrát, jen pro pořádek zde uvedu příklad konfigurace. Hesla bereme z /etc/ppp/chap-secrets
, modem máme připojen ke COM2, což je na linuxu ttyS1. Pro snazší práci si můžeme vytvořit link ln -sf /dev/ttyS1 /dev/modem
, a pokud budeme chtít zařízení modem, vždy se nám to bude odkazovat na COM2, parametr f u ln přepisuje případné existující linky stejného jména. Vytvořte si soubor chat_script, do kterého zapíšete AT příkazy pro modem a volané číslo, umístění je libovolné, pro příklad bude umístěn v adresáři roota, obsahuje:
" " "ATX3L0M0" "OK" "ATDT971103311" "CONNECT"
V příkladu je telefonní číslo na IOL a AT příkazy si musíte upravit podle svého modemu. Pozor, toto připojení se týká pouze hw modemů! Softwarové vymyšlenosti, bohužel většina dnes prodávaných, potřebují některé své části emulovat softwarově, link na zprovoznění takových „modemů“ je zde. Pak stačí napsat příkaz:
pppd user vondr-dial /dev/modem 115200 connect "/usr/sbin/chat -f /root/chat_script" &
Routy a killování je stejné jako před tím, dns se píše do /etc/resolv.conf
.
Více adres na ethernetu
Někdy se nám stane, že potřebujeme, aby se naše jediná fyzická karta hlásila k více sítím. Další varianta je, že máme několik uživatelů a nechceme, aby se mezi sebou viděli, vytvoříme tedy několik logických sítí na jedné fyzické kartě a pak v iptables omezíme provoz mezi těmito sítěmi. Toto řešení má ale jednu malou nevýhodu, pokud si nějaký člověk spustí tcpdump nebo podobný program, uvidí veškerou komunikaci, tyto programy totiž poslouchají na druhé vrstvě a my to omezujeme až na třetí, mám na mysli vrstvy OSI modelu. Oddělení na druhé vrstvě zabezpečují VLAN na protokolu 802.1q. Podporu pro více IP adres nazýváme IP aliasingem, v kernelu bare.i je zapnutá a píše se to takto:
ifconfig eth0 192.168.3.1 netmask 255.255.255.0 up ifconfig eth0:0 192.168.4.2 netmask 255.255.255.252 up ifconfig eth0:2 192.168.4.10 255.255.255.248 up
Pokud shodíme eth0, spadnou nám logicky i všechny logické porty.