Добавяне на правила към iptables при стартиране
Опитвам се да стартирам два файла по време на стартиране на системата, които добавят правила към iptables. Вторият файл е daemon и го стартирам с -d параметър. Пиша в rc.local два реда:
/usr/local/bin/ipt_rules install и /usr/local/bin/dsl_queue -d. Така мога да ги пускам през конзолата, но при рестартиране правилата не се добавят, а демона се стартира, според логовете, но не го виждам да добавя правила към iptables. Изглежда, че въобще не може по този начин. Видях на едно място при вече добавени правила, се пуска iptables save active и се съхраняват, като оставa само демона, но търся начин правилата да се добавят при рестартиране, без да се запомнят.
Re: Добавяне на правила към iptables при стартиране
Така и не разбрах всеки път искаш да зареждаш едни и същи правила, или тези който са били в действие преди рестарта?
Ако искаш всеки път едни и същи правила, може би най-лесно е, след като заредиш прравилата, които искаш, да ги запазиш в текстов файл чрез: Код:
iprables-save > /some/dir/saved-rules.txt
За да се зареждат при стартиране в rc.local добавяш: Код:
iptables-restore < /some/dir/saved-rules.txt
Re: Добавяне на правила към iptables при стартиране
Правилата са във файла ipt_rules и са постоянни, като при рестартиране на компютъра, съдържанието на файла трябва да се добави към iptables, след което трябва да бъде стартиран демона.
Това съдържа ipt_rules
Код:
#!/bin/bash
# add MYSHAPER-OUT chain to the mangle table in iptables - this sets up the table we'll use
# to filter and mark packets.
DEV=eth0
# Reset everything to a known state (cleared)
iptables -t mangle -D POSTROUTING -o $DEV -j MYSHAPER-OUT 2> /dev/null > /dev/null
iptables -t mangle -F MYSHAPER-OUT 2> /dev/null > /dev/null
iptables -t mangle -X MYSHAPER-OUT 2> /dev/null > /dev/null
if [ "$1" != "install" ]
then
exit
fi
iptables -t mangle -N MYSHAPER-OUT
iptables -t mangle -I POSTROUTING -o $DEV -j MYSHAPER-OUT
# add fwmark entries to classify different types of traffic - Set fwmark from 20-26 according to
# desired class. 20 is highest prio.
iptables -t mangle -A MYSHAPER-OUT -p tcp --sport 0:1024 -j MARK --set-mark 23 # Default for low port traffic
iptables -t mangle -A MYSHAPER-OUT -p tcp --dport 0:1024 -j MARK --set-mark 23 # ""
iptables -t mangle -A MYSHAPER-OUT -p tcp --dport 20 -j MARK --set-mark 26 # ftp-data port, low prio
iptables -t mangle -A MYSHAPER-OUT -p tcp --dport 5190 -j MARK --set-mark 23 # aol instant messenger
iptables -t mangle -A MYSHAPER-OUT -p icmp -j MARK --set-mark 20 # ICMP (ping) - high prio, impress friends
iptables -t mangle -A MYSHAPER-OUT -p udp --dport 123 -j MARK --set-mark 20 # NTP should be low-lag
iptables -t mangle -A MYSHAPER-OUT -p udp --dport 53 -j MARK --set-mark 21 # DNS name resolution (small packets)
iptables -t mangle -A MYSHAPER-OUT -p tcp --dport ssh -j MARK --set-mark 22 # secure shell
iptables -t mangle -A MYSHAPER-OUT -p tcp --sport ssh -j MARK --set-mark 22 # secure shell
iptables -t mangle -A MYSHAPER-OUT -p tcp --dport telnet -j MARK --set-mark 22 # telnet (ew...)
iptables -t mangle -A MYSHAPER-OUT -p tcp --sport telnet -j MARK --set-mark 22 # telnet (ew...)
iptables -t mangle -A MYSHAPER-OUT -p ipv6-crypt -j MARK --set-mark 24 # IPSec - we dont know what the payload is though...
iptables -t mangle -A MYSHAPER-OUT -p udp --dport 10000 -j MARK --set-mark 24 # IPSec (udp tunnel) - we dont know what the payload is though...
iptables -t mangle -A MYSHAPER-OUT -p tcp --sport http -j MARK --set-mark 25 # Local web server
iptables -t mangle -A MYSHAPER-OUT -p tcp -m length --length :64 -j MARK --set-mark 21 # small packets (probably just ACKs)
iptables -t mangle -A MYSHAPER-OUT -p tcp --sport 3389 -j MARK --set-mark 23 # windows remote computer connection
iptables -t mangle -A MYSHAPER-OUT -m mark --mark 0 -j MARK --set-mark 26 # redundant- mark any unmarked packets as 26 (low pri
Re: Добавяне на правила към iptables при стартиране
В rc.local добавяш:
Код:
/path/to/ipt_rules && /path/to/daemond
Re: Добавяне на правила към iptables при стартиране
Махнах няколко реда от ipt_rules и направих и това, което си дал и тръгна след рестарта, но след няколко минути правилата изчезват от iptables. Като направя проверка с iptables -t mangle -L са там и след малко като проверя пак ги няма.
Re: Добавяне на правила към iptables при стартиране
Тук вече стрелям на посоки, но мисля, че най-вероятно този "daemond", който стартираш има пръст в пренаписването. Без допълнителна информация нищо конкретно не мога да кажа. Още нещо, което сега забелязвам:
Код:
if [ "$1" != "install" ]
then
exit
fi
Това ме навежда на мисъта, че трябва да се стартира така:
Код:
/path/to/ipt_rules install && /path/to/daemond
Откъде си намерил този скрипт, няма ли някаква документация към него?
Re: Добавяне на правила към iptables при стартиране
Скрипна е от тук: http://www.sonicspike.net/software/
http://www.sonicspike.net/software/d...e-0.9.3.tar.gz
Идеята му е да дели ъплоад трафика в зависимост от даунлоад-а и така не се запушва линията т.е. не се пречи на даунлоад-а.
Документацията му е вътре, но пише само как се инсталира, без да се казва как да се направи да се стартира автоматично. Използването му през конзолата няма проблем, но автоматичното не става.
Този код "install" го махнах и се стартира без параметри. Пробвах още iptables-save/restore. Интересното е, че дори и да тръгне, като се рестартира и веднага проверя, всичко си е наред и си работи(правилата са сложени, демона е стартиран), но след няколко минути правилата изчезват и демона се изклюва, което си мисля, че е рестартиране на iptables по някаква причина.
Re: Добавяне на правила към iptables при стартиране
Код:
localhost# ./dsl_qos_queue -h
-- dsl_qos_queue (v0.9.3) --
Usage:
dsl_qos_queue <options>
Options:
-h Display this help message.
-d Run as daemon.
-i <device> Specify DSL device (ie eth0, ppp0) Default: eth0
-r <caprate> Specify outbound rate cap in bytes per second. Default: 15900
-n <numbands> Specify number of bands. Default: 7
-m <fwmark> Specify fwmark of first band. Default: 20
-l <qlen> Specify max total queue length in packets. Default: 50
-t <transport> Specify transport mode, RFC1483 or PPPoE. Default: RFC1483
От което следва:
Код:
/path/to/ipt_rules install && /path/to/dsl_qos_queue -d
Re: Добавяне на правила към iptables при стартиране
Понеже не използвам чист линукс, а модификация (clarkconnect) и за това не става както си мислех и това, което си дал ти. Правилата от ipt_rules файла ги сложиш в rc.firewall.local, обаче демона както и да го стартирам, след няколко минути изчезва от iptables(процеса остава активен, с PS го виждам, но като го няма в iptables не върши работа). Според това, което четох във форума на clarkconnect, системата е направена да не стартира допълнителни правила и програми към iptables и за това маха всичко. С правилата може да се каже, че вече няма проблем. Сега търся какво да променя, че да не изхвърля демона. Промених и правата на файла, но нямаше ефект. Има ли начин да му задам някакъв голям приоритет, че да може само с kill script-a при изключване да се спира.
Re: Добавяне на правила към iptables при стартиране
По принцип ОС, които ползват System-V съвместим init, позволяват да накараш някоя програма да се стартира автоматично (в случай, че умре) чрез /etc/inittab.
Форматът на файла е: id:runlevels:action:process
Би могъл да пробваш:
Код:
50:235:respawn:/path/to/dsl_qos_queue -d
Re: Добавяне на правила към iptables при стартиране
След като го напиша това и рестартирам, вместо само да се изключи демона, крашва firewall-а.
Re: Добавяне на правила към iptables при стартиране
Явно много неща са модифицирани в този clarkconnect и доста се различава от основните дистрибуции по начин на работа.
Жалко, че не успях да ти помогна. Аз се предавам.
;-(
Re: Добавяне на правила към iptables при стартиране
:offtopic:
Огледах го това clarkconect и така и не разбрах какви са му предимствата ?
Re: Добавяне на правила към iptables при стартиране
И аз разгледах сайта и пакетите, които предлагат за сваляне. Пакетите са RPM (red hat), в "base system" пише, че пакетът е "base red hat system". Oт друга страна мярнах, че в "професионалната версия" има "apt-get" (debian). Понякога кръстоските излизат много сполучливи (например любимото ми gentoo ползва система за управление на пакетите, базирана на PORTS от *BSD).
Предполагам, че предимството на този clarkconnect е едно - лесната употреба: лесно инсталиране + лесно конфигуриране. Недостатък - силно модифициран, поради което поведението му се отличава от това на основните дистрибуции.
Re: Добавяне на правила към iptables при стартиране
Най-накрая го реших проблема. Правилата от ipt_rules ги бях въвел в rc.firewall.local и нямаше проблем с тях и след като пробвах каквото се сетя за да пусна демона, днес ми хрумна(трябваше по-рано да го пробвам) да сложа и двете правила, които добавя демона към iptables в rc.firewall.local. С iptables-save и сорса ги видях кои са и след рестарта взе, че тръгна. Демона си се стартира от rc.local. Сега, след като изхвърли правилата на демона, остават тези от rc.firewall.local и работи нормално.
@Ghost, благодаря за помощта.