Классика жанра ;P

1. Как настроить конфиги инитскриптов, чтобы для eth0 перед поднятием устанавливался спецефический hw ether? В /etc/init.d/net.eth0 покопался, нашел там что-то вроде user preup function, что вроде оно самое, вопрос только как и где прописать эту функцию чтобы она делала ifconfig eth0 hw ether 00:80...bla-bla

UPDATE: вроде это решилось, mac_eth0 в /etc/conf.d/net. Спасибо [RUsh] на #gentoo-ru. Остается второй вопрос... =)

2. Как лучше SNAT разрешать/запрещать для определенных хостов локальных/удаленных? На данный момент я прописываю 2 правила в FORWARD (для -s и -d), но здается мне это криво =) Вот кусок конфига:

...[CUT]...
# Очищаем правила
iptables -F
iptables -t nat -F
ip route delete default

# Установка шлюза по умолчанию
ip route add default via $DSL_GATEWAY

# Настройка SNAT
iptables -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 -j SNAT --to-source $DSL_IP

...[CUT]...

# Кому разрешать инет
iptables -A inet -s 192.168.1.222 -j ACCEPT
iptables -A inet -d 192.168.1.222 -j ACCEPT
iptables -A inet -s 192.168.1.2 -d mail.ru -j ACCEPT
iptables -A inet -d 192.168.1.2 -s mail.ru -j ACCEPT
...[CUT]...
iptables -A inet -j DROP

# И добавим правило для инета
iptables -A FORWARD -j inet

конечно

конечно криво

самое кривое - это удаление и прописывание шлюза по умолчанию :) зачем это надо ? если можно в net.eth0 прописать...

и еще. Зачем нужна цепочка, если она используется всего один раз ? это все равно что разбивать программу на процедуры совершенно без необходимости.

я так понимаю, задумка с двумя правилами в форварде - чтобы пакеты соединения в обе стороны бегали ? для этого есть state.

вот мой iptables-conf на одном из серваков
его легко переносить куда угодно, т.к. в нем даже ip-адреса нигде не фигурируют.
в целом можно легко понять как и что используется.

I=/sbin/iptables

in_i=eth1
in_o=eth0

$I -P INPUT DROP
$I -P OUTPUT ACCEPT
$I -P FORWARD DROP
$I -F
$I -X
$I -t nat -F
$I -t nat -X
$I -t mangle -F
$I -t mangle -X

$I -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
$I -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$I -A INPUT -i lo -j ACCEPT

$I -A INPUT -p icmp -j ACCEPT
$I -A INPUT -p tcp --syn --dport 22 -j ACCEPT
$I -A INPUT -p tcp --syn --dport 25 -j ACCEPT

$I -A INPUT -i $in_i -p tcp --syn --dport 80 -j ACCEPT
$I -A INPUT -i $in_i -p tcp --syn --dport 3128 -j ACCEPT
$I -A INPUT -i $in_i -p udp --dport 53 -j ACCEPT

$I -A FORWARD -i $in_i -j ACCEPT

$I -t nat -A PREROUTING -i $in_i -p tcp --dport 80 -j REDIRECT --to-port 3128
$I -t nat -A POSTROUTING -o $in_o -j MASQUERADE

/etc/init.d/iptables save

в общем случае - правила для пакетов уже установленных соединений:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

строка с OUTPUT в моем конфиге не нужна, т.к. политика для OUTPUT = accept.

ставишь правила на первые места после сброса, и после этого любое соединение разрешается одним правилом без траходрома. Кстати, в iptables-tutorial в примерах всё это описано, несмотря на то, что в остальном примеры там фиговые.

последний совет общего плана: при раздаче прав на какие-то ресурсы отдельным ипам или подсетям желательно проверять интерфейс, откуда пришел пакет.

Удаление и

Удаление и прописывание шлюза по умолчанию, потому что есть несколько выходов через разные интерфейсы в инет. Нужно в скрипте сразу маршрутизацию по умолчанию прописывать.

2 правила, да для пакетов в обе стороны... у тебя просто в твоем скрипте всей локалке форвард в инет разрешен, а мне нужно именно конретным ip, и некоторым еще и только до конкретных хостов. Нужно будет про state завтра почитать, кажется я понял как можно одним правилом делать используя state по твоему примеру.

Ну и отдельная цепочка просто на время теста, чтобы пока настраиваю мусора не собиралось.

Re: Удаление и

Storm написал(а):
Удаление и прописывание шлюза по умолчанию, потому что есть несколько выходов через разные интерфейсы в инет. Нужно в скрипте сразу маршрутизацию по умолчанию прописывать.

для этого есть /etc/conf.d/net !

Storm написал(а):
2 правила, да для пакетов в обе стороны... у тебя просто в твоем скрипте всей локалке форвард в инет разрешен, а мне нужно именно конретным ip, и некоторым еще и только до конкретных хостов. Нужно будет про state завтра почитать, кажется я понял как можно одним правилом делать используя state по твоему примеру.

тогда, в моем примере, вместо:
$I -A FORWARD -i $in_i -j ACCEPT
для данного случая, пишем:
$I -A FORWARD -i $in_i -s 192.168.1.222 -j ACCEPT
$I -A FORWARD -i $in_i -s 192.168.1.2 -d 194.67.57.26 -j ACCEPT
и так далее. Пакеты в обратную сторону будут разрешаться правилом, проверяющим состояние пакета (если он принадлежит установленному соединению, он будет разрешен).

кстати, не помню точно, но вроде ведь в iptables не работают хостнеймы ? проверял когда-то давно.. :)

PS. если часто стоит задача ограничивать доступ к сайтам, есть смысл поставить прокси.

Re: Удаление и

Shadow написал(а):
Storm написал(а):
Удаление и прописывание шлюза по умолчанию, потому что есть несколько выходов через разные интерфейсы в инет. Нужно в скрипте сразу маршрутизацию по умолчанию прописывать.

для этого есть /etc/conf.d/net !

Я то ведь интерфейсы не опускаю/поднимаю. Мне нужно интерфейсы держать поднятыми, нужно только маршрутизацию по умолчанию менять.

Цитата:
Storm написал(а):
2 правила, да для пакетов в обе стороны... у тебя просто в твоем скрипте всей локалке форвард в инет разрешен, а мне нужно именно конретным ip, и некоторым еще и только до конкретных хостов. Нужно будет про state завтра почитать, кажется я понял как можно одним правилом делать используя state по твоему примеру.

тогда, в моем примере, вместо:
$I -A FORWARD -i $in_i -j ACCEPT
для данного случая, пишем:
$I -A FORWARD -i $in_i -s 192.168.1.222 -j ACCEPT
$I -A FORWARD -i $in_i -s 192.168.1.2 -d 194.67.57.26 -j ACCEPT
и так далее. Пакеты в обратную сторону будут разрешаться правилом, проверяющим состояние пакета (если он принадлежит установленному соединению, он будет разрешен).

Ясно, спасибо.

Цитата:
кстати, не помню точно, но вроде ведь в iptables не работают хостнеймы ? проверял когда-то давно.. :)

Сейчас работает, но у меня все-равно IPшники прописаны, это я сюда когда постил - исправил, чтобы понятнее было что за правило.

Цитата:
PS. если часто стоит задача ограничивать доступ к сайтам, есть смысл поставить прокси.

Не настолько много правил, чтобы ставить прокси. Там просто 1 машине открыть доступ только к 1 хосту, 2м машинам запретить всего 4 хоста.

Re: Удаление и

Storm написал(а):
Я то ведь интерфейсы не опускаю/поднимаю. Мне нужно интерфейсы держать поднятыми, нужно только маршрутизацию по умолчанию менять.

если нужно именно менять, то может это и имеет смысл. но в общем случае лучше один раз настроить iptables, а потом другим скриптом менять маршрутизацию в случае необходимости

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".