Portál AbcLinuxu, 5. května 2025 10:32
Nahledě na to, že tento mechanismus umí něco, co iptables neumí – atomické přidání více pravidel (vizte klíčové slovo COMMIT).
Ale umí, vizte příkaz iptables-batch
.
Tudíž já pravidla upravuji na živém stroji pomocí iptables a když jsem s nimi spokojen, tak je uložím pomocí iptables-save.
Zejména úpravy spočívající ve změně jedné IP adresy, která se vyskytuje ve dvaceti různých pravidlech, se takto realizují velmi pohodlně. :-)
Kde? iptables-1.4.0rc1 nic takového neobsahují.Ale umí, vizte příkaz
iptables-batch
.
OpenSuSE 10.3:
mike@lion:~> rpm -q iptables iptables-1.3.8-28 mike@lion:~> rpm -ql iptables | grep sbin /usr/sbin/ip6tables /usr/sbin/ip6tables-batch /usr/sbin/ip6tables-restore /usr/sbin/ip6tables-save /usr/sbin/iptables /usr/sbin/iptables-batch /usr/sbin/iptables-restore /usr/sbin/iptables-save /usr/sbin/iptables-xml
Nemohu vyloučit, že si ten příkaz přidali sami, ale docela by mne to překvapilo. Zkusím se podívat do source RPM.
"2^24 comments ought to be enough for anyone" -- CmdrTacolol at signature :D
Pri editovani konfigurace ulozene pomoci iptables_save je neprijemne ze obnovovaci skript je daleko haklivejsi nez by se z formatu souboru mohlo zdat a co je horsi, kdyz se mu neco nelibi vubec nerekne co.No nevim, ale me osobne se zda, ze iptables-restore jenom bere radky a pred ne nacpe prikaz "iptables". Tot vse, spis je problem, ze "iptables" nerekne, co mu kde vadi a proto ani iptables-restore nic moc nerekne.
Nezbytna malickost pri sprave pres ssh - ovladaci skript musi umet obnovit smysluplny stav pokud se nepovede _restore, nejlepe asi ulozenim predchozi konfigurace.No, osobne pouzivam screen a restart firewall resim pomoci
/etc/init.d/iptables restart;for i in $( seq 1 30 );do echo "$i";sleep 1;done;/etc/init.d/iptables stop
Restartne se nova konfigurace, pak se pocita 1 - 30. Pokud to pocitani vidim, spojeni drzi, OK, dam CTRL-C a firewall zustane. Pokud si odriznu SSH, script ve screenu dopocita do 30 a zastavi komplet firewall., Ja vim, zastavit firewall neni super vec, ale pak ve screenu rychle vratim zmenu a restart, takze zas takovej problem to neni, navic by to slo opravit, aby se (1) ulozila aktualni konfigurace "iptables-save > aktualni", (2) restart firewall s tim odpocitavanim, (3) obnoveni predchozi konfigurace "iptables-restore < aktualni".
Zkrátka proč si musí každý vytvářet skripty umísťované do /etc/rc.d/rc.local?Ve které distribuci? V Gentoo aliasy, routování i iptables má konfigurační soubory a příslušné init skripty.
Jak se správně nastaví více IP na jednom rozhranní? Do nedávna jsem si myslel, že v ifcfg-eth1:x, ale tohle vytváří ip aliasy (které ale moc neva, pokud člověk používá výhradně iproute2).
IP aliasy to nevytváří zcela určitě, to je věc, která fungovala pouze v jádrech řady 2.0 (dřív ne a později také ne). Pokud jde o nastavení v konfiguračních souborech, je záležitost konkrétní distribuce, jestli a jak vám umožní napsat přímo do konfiguračního souboru.
DEVICE=eth1 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.0.128 NETMASK=255.255.255.0 NETWORK=192.168.0.0 HWADDR=00:30:4f:56:f8:2b MTU=7000to vytváří device pro každý takový konf. soubor:
inet 172.16.1.1/24 brd 172.16.1.255 scope global eth1:1 inet 192.168.218.1/24 brd 192.168.218.255 scope global eth1:2 inet 172.16.32.1/24 brd 172.16.32.255 scope global eth1:4kdežto ip a add ..... přidá ip ke stávajícímu rozhranní:
inet 192.168.0.128/24 brd 192.168.0.255 scope global eth1 inet 10.0.0.1/16 brd 10.0.255.255 scope global eth1Jaký je v tom tedy rozdíl?
to vytváří device
Nevytváří. Ani device, ani interface. To je pouze fikce, kterou vám předstírá příkaz ifconfig
(a která vám může pěkně zamotat hlavu, kdybyste tomu fiktivnímu rozhraní zkusil nastavit nějaké parametry).
Jaký je v tom tedy rozdíl?
Rozdíl je jen v tom, že inicializační skript použil při volání příkazu ip
parametr label
(horší varianta by byla, že místo něj spustil ifconfig
). Když ho použijete při ručním volání, budete tam mít label také.
ip
nejde mnenit ip adresa ktera je jako "hlavni" na ethX. Pokud tedy chceme napriklad zmenit ip adresu na eth0 tak musime pouzit ifconfig eth0
atd. Toto je zasadni nedostatek jinak bezchybne utility ip
. Toto se zda byt jako nepodstatne pokud ste na tom kompu ale pokud potebujete precislovat kompl vzdaleny 20km od vas je to velky problem.
ip addr add 192.168.10.10 dev eth0 ip addr del 192.168.1.1 dev eth0Nebo ne?
Jste bych mozna doplnil ze s ip nejde mnenit ip adresa ktera je jako "hlavni" na ethX. Pokud tedy chceme napriklad zmenit ip adresu na eth0 tak musime pouzit ifconfig eth0 atd.
Jak jste na to přišel? A co je to vlastně "hlavní adresa"? Jednou z podstatných změn od jádra 2.2 je právě to, že žádná adresa není "hlavní", ale všechny (kromě těch s příznakem secondary
) jsou rovnocenné.
ifconfig
má jednoduchý život: žije si v představě, že adresa se rozhraní nastavuje a že už to skoro devět let není pravda, to ho očividně netrápí. Takže si prostě nějakou adresu nahradí a která to vlastně bude, to je v rukou osudu.
Jak se správně nastaví více IP na jednom rozhranní? Kde se nastaví seznam statických cest?Prikazem ip
Zkrátka proč si musí každý vytvářet skripty umísťované do /etc/rc.d/rc.local?Protoze je to mnohem prehlednejsi a jednodussi nez pouzivat nejaky specificky konfigurak, jehoz moznosti budou generaci za soucasnym moznostmi jadra a nastroju. Navic uzivatel uz stejne ty nastroje zna a zna shell, tak proc se navic ucit syntaxi obsurnich konfiguraku. Nehlede na to, ze pravidla pro netfilter a shaping casto maji nejakou strukturu, kterou je mozne vyjadrit v skriptu pomoci funkci a podobnych abstraktnich konstrukci, zatimco v konfiguraku by to clovek musel rozepsat.
nyní se generuje skript využívající tc přímo z databaseTo ale firehol neumi?
Teď nenacházím ekvivalentní příklad, tak plácnu první blbost co mě napadne. Proč mám statický routy nastavovat pomocí ip route v rc.local, a na konfiguraci apache mám soubor?
Apache je user space aplikace, zatímco router (nebo netfilter) je součást jádra. Nepřipadá mi jako dobrý nápad, aby jádro četlo nějaké konfigurační soubory. Ale můžete si samozřejmě napsat aplikaci (případně skript), která načte konfigurační soubor a podle něj nakonfiguruje příslušnou část jádra. Přesně tohle obvykle dělají inicializační skripty distribucí - jen ne všech a v každé jinak. Takže otázka by spíš měla znít, proč není (aspoň základní) specifikace konfiguračních souborů síťových rozhraní a směrování součástí LSB; pak by to aspoň některé distribuce měly stejně.
Takže otázka by spíš měla znít, proč není (aspoň základní) specifikace konfiguračních souborů síťových rozhraní a směrování součástí LSB; pak by to aspoň některé distribuce měly stejně.
Přesně ta otázka odstartovala tento thread.
Linux na síti vyrostl a očekával bych, že bude existovat jednotná konvence jak siť nastavit. ..........
Takže otázka by spíš měla znít, proč není (aspoň základní) specifikace konfiguračních souborů síťových rozhraní a směrování součástí LSB; pak by to aspoň některé distribuce měly stejně.Tu otázku je možné klidně zobecnit, proč všechny konfigurační soubory, skripty atd. nemají všechny distribuce stejné – také by to usnadnilo přechod mezi distribucemi. (A dál můžeme pokračovat, proč všechny internetové prohlížeče nevykreslují stejně, proč se všechny aplikace jednoho typu – např. kancelářský balík – nechovají stejně, atd.) Odpověď je nasnadě – každému vyhovuje něco jiného, někdo chce zadat do konfiguráku IP adresu, default gateway a DNS (protože na pracovní stanici typicky nic jiného potřebovat nebude), někdo chce přiřazovat rozhraní
x
IP adres, routovat podle aktuální fáze měsíce a pravidla pro iptables
generuje z LDAPu (a pak bude zákonitě používat své vlastní skripty). Řekl bych, že seznámit se s tím, jak daná distribuce nastavuje síťové parametry, je minimum toho, co může udělat správce, když z nějakého důvodu dostane na starosti nový systém s distribucí, kterou nezná.
/etc/rc.inet1
. Takže nikoliv do rc.local
. Ovšem je to už dlouho, ale předpokládám, že tohle se nezměnilo.
Jenže u všeho, co uvádíte, se nejedná o konfigurační soubory, ty si každá distribuce dává jinam a má je v jiném formátu. A právě o těch tu byla řeč.
P.S.: ifconfig
už dnes opravdu ne
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.