IPTABLES помогите срочно нужно

Аватар пользователя cleric

Помогите с этим монстром. Есть сервак ASP10, eth0 локалка, eth1 мир. Для WWW стоит squid. Все работает ок. Но нужно сделать так что бы 192.168.0.5 из локалки мог таскать и передавать почту в мир напрямую (25 и 110 порты). Наваял так но почту не забирает:

*nat
:PREROUTING ACCEPT [387790:32256690]
:POSTROUTING ACCEPT [4714:249445]
:OUTPUT ACCEPT [4714:249445]
-A POSTROUTING -s 192.168.0.0/255.255.0.0 -o eth1 -j SNAT --to-source 195.1.1.1
COMMIT

*filter
:INPUT DROP [388815:32484105]
:FORWARD DROP [0:0]
:OUTPUT DROP [5544:265904]
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth2 -p tcp -m tcp --dport 3128 -j ACCEPT
-A INPUT -i eth2 -p udp -m udp --dport 3128 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A FORWARD -s 192.168.0.5 -i eth2 -j ACCEPT
-A FORWARD -d 192.168.0.5 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 32768:65535 -j ACCEPT
-A OUTPUT -p udp -m udp --sport 32768:65535 -j ACCEPT
-A OUTPUT -o eth2 -p tcp -m tcp --sport 3128 -j ACCEPT
-A OUTPUT -o eth2 -p udp -m udp --sport 3128 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 110 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 25 -j ACCEPT
-A OUTPUT -p udp -m udp --sport 53 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 53 -j ACCEPT
COMMIT

Аватар пользователя sergeil

Re: IPTABLES помогите срочно нужно

cleric писал(а):
Помогите с этим монстром. Есть сервак ASP10, eth0 локалка, eth1 мир. Для WWW стоит squid. Все работает ок. Но нужно сделать так что бы 192.168.0.5 из локалки мог таскать и передавать почту в мир напрямую (25 и 110 порты). Наваял так но почту не забирает:

Настройка forward + masquerade. В приведеннных правилах неразбериха с интерфейсами... маскарад разрешен только для выхода через eth1, Пакеты от 192.168.0.5 разрешено получать по eth2. Не понятно, так где-же у Вас LAN.

Ну, да ладно. Если Ваш хост подключен к eth2, то должно работать, если у Вас разрешен FORWARD для системы... У меня разрешен. А у Вас?

cat /proc/sys/net/ipv4/ip_forward
1
Аватар пользователя DRVTiny

Re: IPTABLES помогите срочно нужно

Н-да, странные правила, вообще по жизни для того, чтобы получать/забирать почту, нужно приблизительно следующее (ещё бы защиту по мак-адресам клиентов с привязкой к их IP организовать... Но автору топика, наверное, пока что не до этого):
#!/bin/bash
INT_INTERFACE=eth1 # интерфейс, из которого кабель тянется к свичу локальной сети
EXT_INTERFACE=eth0 # интерфейс, в который воткнут кабель, тянущийся до интернет-провайдера
LAN="192.168.0.0/24"
UNPRIVPORTS="1024:"
MXPORTS="110,25"
# Разрешаем отправлять низкоуровневые запросы и пакеты высокоуровневых протоколов на почтовые сервера
iptables -A FORWARD -i $INT_INTERFACE -o $EXT_INTERFACE -s $LAN -d ! $LAN --sport $UNPRIVPORTS -m mport --dports $MXPORTS -j ACCEPT
# Разрешаем получать ответы почтовых серверов (пакеты данных, подтверждение установки соединения и т.д.)
iptables -A FORWARD -i $EXT_INTERFACE -o $INT_INTERFACE -s ! $LAN -d $LAN --dport $UNPRIVPORTS -m mport --sports $MXPORTS -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t nat -A POSTROUTING -o $EXT_INTERFACE -j MASQUERADE

Аватар пользователя cleric

Re: IPTABLES помогите срочно нужно

спасибо за помощь всем откликнувшимся... там все верно, только действительно вместо eth2 должен стоять eth0. Все работает. Спасибо!!!.

PS. MASQUARADE - достаточно тормознут. А вот по поводу привязки МАК можно подробнее?

Аватар пользователя DRVTiny

Re: IPTABLES помогите срочно нужно

Цитата:
А вот по поводу привязки МАК можно подробнее?

В таком вот духе реализуется:

GATEWAY="192.168.0.1"
tblCLIENTS="/etc/sysconfig/clients"
iptables -N fwd2inet
iptables -N lan_inp_gw
while read line; do
ip_addr="192.168.0.`echo $line | awk '{print $1}'`"
mac_addr="`echo $line | awk '{print $2}'`"
iptables -A FORWARD -i $INT_INTERFACE -o $EXT_INTERFACE -s $ip_addr -d ! $LAN -m mac --mac-source $mac_addr -j fwd2inet
iptables -A INPUT -i $INT_INTERFACE -s $ip_addr -d $GATEWAY -m mac --mac-source $mac_addr -j lan_inp_gw
done < $tblCLIENTS
iptables -A fwd2inet .... -j ...
iptables -A lan_inp_gw .... -j ...

Соответственно /etc/sysconfig/clients должен выглядеть так:
2 00:0A:BC:DE:E0:11
3 00:DA:CE:5F:EE:F1
и т.д., и т.п. (строки вида: № компьютера в сети<пробел/табуляция>MAC)

Аватар пользователя malor

Re: IPTABLES помогите срочно нужно

Я каждый раз перезагружаясь смотрю на вывод iptables -L и вижу пару строчек типа DROP(было дело, ставил когда-то...). Сбрасываю iptables -F, сохраняю iptables-save. Больше ничего не изменяю. Но при следующей загрузке те два правила снова как ни в чем не бывало на месте. Почему снова воскресают?
ASPLinux 11

Аватар пользователя Meloman

Re: IPTABLES помогите срочно нужно

malor писал(а):
Сбрасываю iptables -F, сохраняю iptables-save. Больше ничего не изменяю. Но при следующей загрузке те два правила снова как ни в чем не бывало на месте. Почему снова воскресают?

Читая статью можно сделать вывод, что правила нужно сохранять так: iptables-save >/root/iptables.save. Во-вторых, Ваши правила записаны в файле /etc/sysconfig/iptables.
Кстати говоря, iptables -F равносильно /etc/rc.d/init.d/iptables stop, т.е.- сброс всех правил iptables.

Аватар пользователя DRVTiny

IPTABLES помогите срочно нужно

На самом деле всё несколько проще: service iptables save
Зря что ли люди типа меня (скромность, безусловно, украшает, но написание стартовых скриптов действительно является моим давним увлечением) специальные сервисные скрипты пишут?

Аватар пользователя alu

Re: IPTABLES помогите срочно нужно

Выполни вот это:
# echo "1" > /proc/sys/net/ipv4/ip_forward

Добавь вот это в /etc/sysconfig/iptables (или где это у тебя лежит)

*filter
...
-A FORWARD -s 192.168.0.5 -p tcp -m multiport --dport 25,110 -j ACCEPT
-A FORWARD -d 192.168.0.5 -p tcp -m multiport --sport 25,110 -j ACCEPT

*nat
...
-A POSTROUTING -s 192.168.0.5 -p tcp -m multiport --dport 25,110 -j SNAT --to-source 195.1.1.1

На машине 192.168.0.5 пропиши шлюз (default route) и DNS (надеюсь фаервол твой пропускает эти запросы - проверь это на машине 192.168.0.5 - "nslookup pop.mail.ru" и "telnet pop.mail.ru 110" и "telnet pop.mail.ru 25")

RSS-материал