URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 79587
[ Назад ]

Исходное сообщение
"Автоматическое включение NAT при загрузке компьютера"

Отправлено Сергей Петров , 02-Апр-08 10:31 
Здравсвтуйте.

Есть машина под debian, которая выполняет роль рутера. На ней я включаю NAT с помощью скрипта в конце сообщения. Все работает, все хорошо.

Очень хочется, чтобы это все загружалось автоматически при включении компьютера. Скажите, пожалуйста, каким образом это реализовать "иделогичеси" правильно (может быть вообще никакой такой скрипт не нужен, а как-то это делается очень просто?)

Заранее спасибо!

А вот и сам скрипт:

#!/bin/sh

IPTABLES=/sbin/iptables
EXTIF="eth0" #(inet)
INTIF="eth1" #(home lan)

#echo "   External Interface:  $EXTIF"
#echo "   Internal Interface:  $INTIF"

#echo "   enabling forwarding.."
#echo "1" > /proc/sys/net/ipv4/ip_forward

#echo "   enabling DynamicAddr.."
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

#echo "   clearing any existing rules and setting default policy.."
$IPTABLES -P INPUT ACCEPT
$IPTABLES -F INPUT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -F OUTPUT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -F FORWARD
$IPTABLES -t nat -F

#echo "   FWD: Allow all connections OUT and only existing and related ones IN"
$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j
ACCEPT
$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT

#echo "   Enabling SNAT (MASQUERADE) functionality on $EXTIF"
$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE

#echo -e "\nDone.\n"


Содержание

Сообщения в этом обсуждении
"Автоматическое включение NAT при загрузке компьютера"
Отправлено PavelR , 02-Апр-08 11:02 
Не уверен насчет идеологии, пока нет времени разобраться детально

Скопируй команды из своего скрипта в /etc/rc.local


"запуск скрипта при загрузке в Debian"
Отправлено Andrey Mitrofanov , 02-Апр-08 11:19 
>Очень хочется, чтобы это все загружалось автоматически при включении компьютера. Скажите, пожалуйста,
>каким образом это реализовать "иделогичеси" правильно

Добавить вызов скрипта в /etc/rc.local, но тогда файервол будет "подниматься" после интерфейсов, наверное. Некузяво.

Скрипт (или симлинк) - в /etc/init.d/, потом что-нибудь вроде "update-rc.d firehol start 41 S . start 36 0 6 .", но скрипт должен, наверное, понимать параметры start/stop и не "гадить" при повторном запуске. (Хм, firehol запускается после поднятия сети?..)

Или скрипт/симлинк в  /etc/network/if-pre-up.d/ , но надо защищаться от повторного запуска...

> (может быть вообще никакой такой
>скрипт не нужен, а как-то это делается очень просто?)

Можно какой-нибудь "генератор файерволов" из пакетов поставить -- в пакетах запуск при загрузке, обычно встроен.

Я пользуюсь firehol (кстати он написан на bash-e = несколько "тормозой", зато пакет из unstable (=новая версия) ставится напрямую в stable). Вот пример конфигурации с маскарадом на модеме из его примеров:

---8<--- $ egrep -v "^[[:space:]]*(#|$)" </usr/share/doc/firehol/examples/home-dialup.conf
version 5
internet_services="smtp http"
internet_requests="10/sec"
home_interface="eth0"
proxy_port="3128"
if [ ! -z "${proxy_port}" ]
then
        iptables -t nat -A PREROUTING -i ${home_interface} -p tcp --dport 80 -j REDIRECT --to-port ${proxy_port}
fi
interface "${home_interface}" home
        policy accept
interface ppp+ internet src not "${UNROUTABLE_IPS}"
        protection strong ${internet_requests}
        server ident reject with tcp-reset
        server "${internet_services}" accept
        client all accept
router myrouter inface ppp+ outface "${home_interface}"
        masquerade reverse
        client all accept


"Автоматическое включение NAT при загрузке компьютера"
Отправлено Nimdar , 02-Апр-08 11:21 
>Есть машина под debian, которая выполняет роль рутера. На ней я включаю
>NAT с помощью скрипта в конце сообщения. Все работает, все хорошо.
>
>
>Очень хочется, чтобы это все загружалось автоматически при включении компьютера. Скажите, пожалуйста,
>каким образом это реализовать "иделогичеси" правильно (может быть вообще никакой такой
>скрипт не нужен, а как-то это делается очень просто?)

1.
man iptables-restore
man iptables-save

2.
Ищем /etc/default/iptables
Если нет такого, не страшно, можно просто тупо запустить /etc/init.d/iptables. Вываливается Usage:

# /etc/init.d/iptables
/etc/init.d/iptables options:
  start|restart|reload|force-reload
....
....
Saved ruleset locations: /var/lib/iptables/

Найди в скрипте, какой именно файл он считывает из /var/lib/iptables/ (например, active)

iptables-save >/var/lib/iptables/active - у тебя сохранятся все текущие правила в "правильном" формате (эту команду запускать только один раз, для создания файла с твоими правилами).

При /etc/init.d/iptables start они подгрузятся. Для добавления/удаления правил, тебе нужно будет править только /var/lib/iptables/active


"Автоматическое включение NAT при загрузке компьютера"
Отправлено PavelR , 06-Апр-08 18:04 
Маны первого пункта давным-давно известны. А вот второго пункта в моем дебиан "почему-то" нет.

Каким пакетом это дело организуется у Вас ?


"Автоматическое включение NAT при загрузке компьютера"
Отправлено Nimdar , 07-Апр-08 12:57 
>Маны первого пункта давным-давно известны. А вот второго пункта в моем дебиан
>"почему-то" нет.
>
>Каким пакетом это дело организуется у Вас ?

# apt-get install iptables

/usr/share/doc/iptables/examples/oldinitdscript.gz


"Автоматическое включение NAT при загрузке компьютера"
Отправлено hate , 02-Апр-08 12:01 

>Очень хочется, чтобы это все загружалось автоматически при включении компьютера. Скажите, пожалуйста,
>каким образом это реализовать "иделогичеси" правильно (может быть вообще никакой такой
>скрипт не нужен, а как-то это делается очень просто?)

apt-get install arno-iptables-firewall


  Прочитай документацию, настрой и будешь доволен.



"Автоматическое включение NAT при загрузке компьютера"
Отправлено PavelR , 06-Апр-08 18:47 
>
>>Очень хочется, чтобы это все загружалось автоматически при включении компьютера. Скажите, пожалуйста,
>>каким образом это реализовать "иделогичеси" правильно (может быть вообще никакой такой
>>скрипт не нужен, а как-то это делается очень просто?)
>
>apt-get install arno-iptables-firewall
>
>
>  Прочитай документацию, настрой и будешь доволен.

Как по мне - уж больно наворочено, хотя конечно функционально :)

Подскажите, какой пакет поставить чтобы было как в redhat -
/etc/init.d/iptables save|start|stop делало банальные iptables-save iptables-restore ...

Комбайны с чужой идеологией построения цепочек файрволла мне пока не нужны..


"Автоматическое включение NAT при загрузке компьютера"
Отправлено hate , 06-Апр-08 19:32 

>>apt-get install arno-iptables-firewall
>>  Прочитай документацию, настрой и будешь доволен.
>
>Как по мне - уж больно наворочено, хотя конечно функционально :)

Это не комбайн. Довольно простенький.


>Подскажите, какой пакет поставить чтобы было как в redhat -
>/etc/init.d/iptables save|start|stop делало банальные iptables-save iptables-restore ...

  Посмотри на предложенный и переделай.

>Комбайны с чужой идеологией построения цепочек файрволла мне пока не нужны..

"чужой идеология" - это как? Ты на марсе в сети IPMars? :)


  


"Автоматическое включение NAT при загрузке компьютера"
Отправлено PavelR , 06-Апр-08 20:05 
>[оверквотинг удален]
>>Как по мне - уж больно наворочено, хотя конечно функционально :)
>
>Это не комбайн. Довольно простенький.
>
>
>>Подскажите, какой пакет поставить чтобы было как в redhat -
>>/etc/init.d/iptables save|start|stop делало банальные iptables-save iptables-restore ...
>
>  Посмотри на предложенный и переделай.
>

Свой я сам написать могу, я как-бы готовым, имеющимся пакетом интересуюсь...

>
>>Комбайны с чужой идеологией построения цепочек файрволла мне пока не нужны..
>
> "чужой идеология" - это как? Ты на марсе в сети IPMars?
>:)

У меня своя специфика фильтрации траффика, свои отдельные цепочки, несколько провайдеров, несколько внутренних сеток и т п... Мне удобно сделать что-то вроде

iptables -I FORWARD XXX -i eth0 -p tcp --dport 80 -d xxx.x.x.x -j ACCEPT
/etc/init.d/iptables save

- вот и хочу аналогичного в Debian

PS: Да, железный рутер лучше, но так сложилось ....

PPS: Когда там в Lenny появится 2.6.24-smp ?


"Автоматическое включение NAT при загрузке компьютера"
Отправлено hate , 06-Апр-08 20:43 
>>[оверквотинг удален]
>У меня своя специфика фильтрации траффика, свои отдельные цепочки, несколько провайдеров, несколько
>внутренних сеток и т п... Мне удобно сделать что-то вроде
>
>iptables -I FORWARD XXX -i eth0 -p tcp --dport 80 -d xxx.x.x.x
>-j ACCEPT
>/etc/init.d/iptables save
>
>- вот и хочу аналогичного в Debian

  Вот тебе кусок из рабочего того что я предлагаю. Никак не пойму что тебя в нем не устаивает.


----------------------  iptables.save  ----------------------------


A INPUT -i eth1 -p ! icmp -m state --state NEW -j EXT_INPUT_CHAIN
-A INPUT -i eth1 -p icmp -m state --state NEW -m limit --limit 20/sec --limit-burst 100 -j EXT_INPUT_CHAIN
-A INPUT -i eth1 -p icmp -m state --state NEW -j EXT_ICMP_CHAIN
-A INPUT -m limit --limit 1/sec -j LOG --log-prefix "Dropped INPUT packet: " --log-level 6
-A INPUT -j DROP
-A FORWARD -i lo -j ACCEPT
-A FORWARD -o eth1 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-A FORWARD -m state --state ESTABLISHED -j ACCEPT
-A FORWARD -p tcp -m state --state RELATED -m tcp --dport 1024:65535 -j ACCEPT
-A FORWARD -p udp -m state --state RELATED -m udp --dport 1024:65535 -j ACCEPT
-A FORWARD -p icmp -m state --state RELATED -j ACCEPT
-A FORWARD -i eth1 -j HOST_BLOCK
-A FORWARD -j SPOOF_CHK
-A FORWARD -i eth1 -j VALID_CHK
-A FORWARD -m limit --limit 1/min --limit-burst 3 -j LOG --log-prefix "Dropped FORWARD packet: " --log-level 6
-A FORWARD -j DROP
-A OUTPUT -o eth1 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-A OUTPUT -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -f -m limit --limit 3/min -j LOG --log-prefix "FRAGMENTED PACKET (OUT): " --log-level 6
-A OUTPUT -f -j DROP
-A OUTPUT -o eth1 -j EXT_OUTPUT_CHAIN
-A EXT_ICMP_CHAIN -p icmp -m icmp --icmp-type 8 -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP-request(ping) flood: " --log-level 6
-A EXT_ICMP_CHAIN -p icmp -m icmp --icmp-type 3 -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP-unreachable flood: " --log-level 6
-A EXT_ICMP_CHAIN -p icmp -m icmp --icmp-type 4 -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP-source-quench flood: " --log-level 6
-A EXT_ICMP_CHAIN -p icmp -m icmp --icmp-type 11 -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP-time-exceeded flood: " --log-level 6
-A EXT_ICMP_CHAIN -p icmp -m icmp --icmp-type 12 -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP-param.-problem flood: " --log-level 6
-A EXT_ICMP_CHAIN -p icmp -m icmp --icmp-type 8 -j DROP
-A EXT_ICMP_CHAIN -p icmp -m icmp --icmp-type 3 -j DROP
-A EXT_ICMP_CHAIN -p icmp -m icmp --icmp-type 4 -j DROP
-A EXT_ICMP_CHAIN -p icmp -m icmp --icmp-type 11 -j DROP
-A EXT_ICMP_CHAIN -p icmp -m icmp --icmp-type 12 -j DROP
-A EXT_ICMP_CHAIN -p icmp -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP(other) flood: " --log-level 6
-A EXT_ICMP_CHAIN -p icmp -j DROP
-A EXT_INPUT_CHAIN -p tcp -m tcp --dport 0 -m limit --limit 6/hour --limit-burst 1 -j LOG --log-prefix "TCP port 0 OS fingerprint: " --log-level 6
-A EXT_INPUT_CHAIN -p udp -m udp --dport 0 -m limit --limit 6/hour --limit-burst 1 -j LOG --log-prefix "UDP port 0 OS fingerprint: " --log-level 6
-A EXT_INPUT_CHAIN -p tcp -m tcp --dport 0 -j DROP
-A EXT_INPUT_CHAIN -p udp -m udp --dport 0 -j DROP
-A EXT_INPUT_CHAIN -p tcp -m tcp --sport 0 -m limit --limit 6/hour -j LOG --log-prefix "TCP source port 0: " --log-level 6
-A EXT_INPUT_CHAIN -p udp -m udp --sport 0 -m limit --limit 6/hour -j LOG --log-prefix "UDP source port 0: " --log-level 6
-A EXT_INPUT_CHAIN -p tcp -m tcp --sport 0 -j DROP

----------------------


"Автоматическое включение NAT при загрузке компьютера"
Отправлено PavelR , 06-Апр-08 21:13 

  и как ты получил этот файл ?

Мне вот например не нужны:

  # Create several chains that we will use later on
  ######################################################################
  $IPTABLES -N HOST_BLOCK
  $IPTABLES -N MAC_FILTER
  $IPTABLES -N VALID_CHK
  $IPTABLES -N RESERVED_NET_CHK
  $IPTABLES -N SPOOF_CHK
  $IPTABLES -N DMZ_INPUT_CHAIN
  $IPTABLES -N DMZ_LAN_FORWARD_CHAIN
  $IPTABLES -N INET_DMZ_FORWARD_CHAIN
  $IPTABLES -N DMZ_INET_FORWARD_CHAIN
  $IPTABLES -N LAN_INPUT_CHAIN
  $IPTABLES -N LAN_INET_FORWARD_CHAIN
  $IPTABLES -N EXT_INPUT_CHAIN
  $IPTABLES -N EXT_ICMP_FLOOD_CHAIN
  $IPTABLES -N EXT_OUTPUT_CHAIN


как бы это сказать, задачи несколько другие....



"Автоматическое включение NAT при загрузке компьютера"
Отправлено hate , 07-Апр-08 00:19 

>  и как ты получил этот файл ?

  Повтроряю, настрой и запусти то что я говорю. Дальше поймешь и увидишь все сам.



"Автоматическое включение NAT при загрузке компьютера"
Отправлено PavelR , 07-Апр-08 10:32 
>>  и как ты получил этот файл ?
>
>  Повтроряю, настрой и запусти то что я говорю. Дальше поймешь
>и увидишь все сам.
>
>

Я не получил ответ на вопрос - как был получен этот файл..

И далее - ты сам эти правила посоставлял ? Нет, это тебе скрипт их нагенерил. Думаю, что не сильно ты можешь правила менять как тебе нужно.
Я поизучал содержимое стартового скрипта, и меня это не устраивает.


"Автоматическое включение NAT при загрузке компьютера"
Отправлено hate , 07-Апр-08 11:55 
>>>  и как ты получил этот файл ?
>>
>>  Повтроряю, настрой и запусти то что я говорю. Дальше поймешь
>>и увидишь все сам.
>Я не получил ответ на вопрос - как был получен этот файл..

  Он был сгенерен самим arno-iptables-firewall
  
>И далее - ты сам эти правила посоставлял ? Нет, это тебе
>скрипт их нагенерил.

  Это даже ежу ясно.


>Думаю, что не сильно ты можешь правила менять как тебе нужно.

  Я меняю все что мне нужно.


>Я поизучал содержимое стартового скрипта, и меня это не устраивает.

А переделать скрипт так как тебе нужно "камасутра не позволяет"?  :)


"Автоматическое включение NAT при загрузке компьютера"
Отправлено PavelR , 07-Апр-08 12:59 

>>Я поизучал содержимое стартового скрипта, и меня это не устраивает.
>
> А переделать скрипт так как тебе нужно "камасутра не позволяет"?  
>:)

Цитирую свое сообщение:

>[оверквотинг удален]
>>
>>Это не комбайн. Довольно простенький.
>>
>>
>>>Подскажите, какой пакет поставить чтобы было как в redhat -
>>>/etc/init.d/iptables save|start|stop делало банальные iptables-save iptables->restore ...
>>
>>  Посмотри на предложенный и переделай.
>>
>Свой я сам написать могу, я как-бы готовым, имеющимся пакетом интересуюсь...

Поясните, почему в RH могут сделать удобный скрипт в базовой системе/пакетах, а в Debian я такого найти не могу ?

Итого:

1. Перепиши под себя скрипт файрволла
2. Смени syslog на syslog-ng потому что кто-то придумал извращенный скрипт ротации логов сислога _не_ через logrotate (все интересующиеся изучают состав пакета syslog)
3. Sarg ставится конечно из пакетов, но вот бага с моментами генерации отчетов за месяц из 7 ежедневных файлов уже сколько лет висит..

и это только мелкий сервер, который только начинает жить...


"Автоматическое включение NAT при загрузке компьютера"
Отправлено hate , 07-Апр-08 13:31 

>[оверквотинг удален]
>
>1. Перепиши под себя скрипт файрволла
>2. Смени syslog на syslog-ng потому что кто-то придумал извращенный скрипт ротации
>логов сислога _не_ через logrotate (все интересующиеся изучают состав пакета syslog)
>
>3. Sarg ставится конечно из пакетов, но вот бага с моментами генерации
>отчетов за месяц из 7 ежедневных файлов уже сколько лет висит..
>
>
>и это только мелкий сервер, который только начинает жить...

  Мир не совершенен. :)


"Автоматическое включение NAT при загрузке компьютера"
Отправлено Anonimous , 06-Июн-08 04:25 
На самом деле если ставить GNU/Debian 4 "с нуля", в отличии от апгрейда с версии 3, то в файл /etc/init.d/iptables отсуствует, соответственно негде посмотреть откуда грузятся автоматически правила, да и не грузятся они в общем, приходится самому все писать :((
В третьей версии все было нормально в четвертой сломали....