Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Небольшая загадка с iptables.  (Прочитано 888 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн triangel

  • Автор темы
  • Участник
  • *
  • Сообщений: 139
    • Просмотр профиля
Небольшая загадка с iptables.
« : 20 Августа 2010, 16:44:06 »
Доброго времени суток, форумчане! Решил красиво переписать свои скриптики для iptables и столкнулся с проблемой.

В оригинале у меня железно работают правила:

iptables -A INPUT -p tcp -d 192.168.1.1 -s 192.168.1.2 --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp -s 192.168.1.1 -d 192.168.1.2 --sport 22 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP

То есть доступ к серверу (1.1) по ssh с админской машины (1.2), работает, а остальное по умолчанию дропается.

В новом скрипте заменил этот отрывок кода следующим:

# Required proc configuration

echo "1" > /proc/sys/net/ipv4/ip_forward

# Resets iptables to default values.

# filter table.

$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT

# nat table.

$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT

# mangle table.

$IPTABLES -t mangle -P PREROUTING ACCEPT
$IPTABLES -t mangle -P INPUT ACCEPT
$IPTABLES -t mangle -P FORWARD ACCEPT
$IPTABLES -t mangle -P OUTPUT ACCEPT
$IPTABLES -t mangle -P POSTROUTING ACCEPT

# flush all the rules in the filter, nat and mangle tables.

$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F

# erase all chains that's not default in the filter, nat and mangle tables.

$IPTABLES -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X

# Set default policies in the filter table.

$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP

# Rules for iptables!!!!!!!

# Rules for admining server by ssh.

$IPTABLES -A INPUT -p tcp -d $LAN_IP -s $ADMIN_IP --dport 22 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -s $LAN_IP -d $ADMIN_IP --dport 22 -j ACCEPT

В результате дропается все, и доступ с админской машины, и форвардиг, и редирект! Если закоментариваю эти три политики, которые дропают по умолчанию, все начинает работать, и доступ с админской машины, и форвардиг, и редирект. Переменные все проверил, все правильные. Совершенно не знаю на что думать... Может кто подскажет?

С надеждой на внимание, совет или помощь, triangel.
« Последнее редактирование: 20 Августа 2010, 17:07:13 от triangel »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28469
    • Просмотр профиля
Re: Небольшая загадка с iptables.
« Ответ #1 : 20 Августа 2010, 17:18:05 »
man iptables-save
man iptables-restore
https://forum.ubuntu.ru/index.php?topic=99586.0
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Sam Stone

  • Старожил
  • *
  • Сообщений: 1131
    • Просмотр профиля
Re: Небольшая загадка с iptables.
« Ответ #2 : 20 Августа 2010, 18:41:48 »
Если копипастил, то в последнем правиле ошибка.
Jellyfish 6.5.0-45-generic
2690v4 64Gb

Оффлайн MaratSh

  • Участник
  • *
  • Сообщений: 204
  • Всё пройдёт...
    • Просмотр профиля
Re: Небольшая загадка с iptables.
« Ответ #3 : 20 Августа 2010, 20:22:01 »
Если копипастил, то в последнем правиле ошибка.
Ага, в последнем правиле "--dport 22" вместо "--sport 22".

Пользователь решил продолжить мысль 20 Августа 2010, 20:23:36:
В результате дропается все, и доступ с админской машины, и форвардиг, и редирект!
А где у тебя правила, разрешающие форвард и редирект?
« Последнее редактирование: 20 Августа 2010, 20:23:36 от MaratSh »

Оффлайн triangel

  • Автор темы
  • Участник
  • *
  • Сообщений: 139
    • Просмотр профиля
Re: Небольшая загадка с iptables.
« Ответ #4 : 23 Августа 2010, 10:03:32 »
Спасибо огромное, всем кто откликнулся :)! Простите, что не ответил раньше, так и не смог на выходных до форума добраться...
По существу:
1. Действительно, с "--sport 22" моя ошибка, опечатался. Спасибо огромное что заметили, сам бы долго наверное искал. Исправил - доступ заработал!
2. А вот с редиректом все еще остаются проблемы:

    так работает:

# Set default policies in the filter table.

#$IPTABLES -P INPUT DROP
#$IPTABLES -P FORWARD DROP
#$IPTABLES -P OUTPUT DROP

# Rules for iptables!!!!!!!

..................

# Rules for accessing another server.

$IPTABLES -t nat -A PREROUTING -p tcp -d $INET_IP --dport 3389 -j DNAT --to-destination  $TERM_IP
$IPTABLES -t nat -A OUTPUT -p tcp -d $LAN_IP --dport 3389 -j DNAT --to-destination $TERM_IP
$IPTABLES -t nat -A POSTROUTING -p tcp -d $TERM_IP --dport 3389 -j SNAT --to-source $LAN_IP

      а так не работает:

# Set default policies in the filter table.

$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP

# Rules for iptables!!!!!!!

..................

# Rules for accessing another server.

$IPTABLES -t nat -A PREROUTING -p tcp -d $INET_IP --dport 3389 -j DNAT --to-destination  $TERM_IP
$IPTABLES -t nat -A OUTPUT -p tcp -d $LAN_IP --dport 3389 -j DNAT --to-destination $TERM_IP
$IPTABLES -t nat -A POSTROUTING -p tcp -d $TERM_IP --dport 3389 -j SNAT --to-source $LAN_IP

В двух словах, когда политика/действие по умолчанию ACCEPT редирект работает, когда DROP - нет. Почему, я не могу этого понять. Еще раз просмотрел листинг, на наличие описок, вроде все в порядке...

С балагодарностью за уже оказанное внимание и надеждой на дальнейшие советы, triangel.

Оффлайн MaratSh

  • Участник
  • *
  • Сообщений: 204
  • Всё пройдёт...
    • Просмотр профиля
Re: Небольшая загадка с iptables.
« Ответ #5 : 23 Августа 2010, 10:42:54 »
    так работает:
....
    а так не работает:

А в чём разница?  :idiot2:

Оффлайн triangel

  • Автор темы
  • Участник
  • *
  • Сообщений: 139
    • Просмотр профиля
Re: Небольшая загадка с iptables.
« Ответ #6 : 23 Августа 2010, 10:50:44 »
В первом (работающем) варианте - закоментаренные дропы (то есть политика по умолчанию ACCEPT). Во втором (не работающем) - политика по умолчанию DROP. Ошибка у меня очевидно где-то в:

# Rules for accessing another server.

$IPTABLES -t nat -A PREROUTING -p tcp -d $INET_IP --dport 3389 -j DNAT --to-destination  $TERM_IP
$IPTABLES -t nat -A OUTPUT -p tcp -d $LAN_IP --dport 3389 -j DNAT --to-destination $TERM_IP
$IPTABLES -t nat -A POSTROUTING -p tcp -d $TERM_IP --dport 3389 -j SNAT --to-source $LAN_IP

Но где она там, я понять не могу. С моей (наверняка ошибочной), точки зрения все вроде верно...

P.S.: эти простые три правила, по моей задумке, вроде бы должны предоставлять терминальный доступ к терм.серверу. Впрочем, без дропа, они работают как надо.

Оффлайн MaratSh

  • Участник
  • *
  • Сообщений: 204
  • Всё пройдёт...
    • Просмотр профиля
Re: Небольшая загадка с iptables.
« Ответ #7 : 23 Августа 2010, 11:11:22 »
А где хоть одно разрешающее правило в цепочке FORWARD ?

Пользователь решил продолжить мысль 23 Августа 2010, 11:13:59:
и что должны делать эти правила?
Цитировать
$IPTABLES -t nat -A PREROUTING -p tcp -d $INET_IP --dport 3389 -j DNAT --to-destination  $TERM_IP
$IPTABLES -t nat -A OUTPUT -p tcp -d $LAN_IP --dport 3389 -j DNAT --to-destination $TERM_IP
$IPTABLES -t nat -A POSTROUTING -p tcp -d $TERM_IP --dport 3389 -j SNAT --to-source $LAN_IP

Пользователь решил продолжить мысль 23 Августа 2010, 11:17:10:
если тебе нужен NAT, правило должно выглядеть как-то так:
Цитировать
$IPTABLES -t nat A POSTROUTING -s АДРЕС ЛОКАЛЬНОЙ СЕТИ -j SNAT --to-source ИНТЕРНЕТ-АДРЕС
PREROUTING нужен если надо пробросить порт из интернета в локалку.
OUTPUT вообще здесь не участвует
« Последнее редактирование: 23 Августа 2010, 11:25:16 от MaratSh »

Оффлайн triangel

  • Автор темы
  • Участник
  • *
  • Сообщений: 139
    • Просмотр профиля
Re: Небольшая загадка с iptables.
« Ответ #8 : 23 Августа 2010, 12:06:06 »
Спасибо огромнейшее, MaratSh, твой последний пост, все решил. Я действительно, чего-то слишком положился на всякие там, маны и руководства (тот-же iptables tutorial 1.1.19) и головой не в ту сторону думал:-). Проблема действительно была в цепочке FORWARD таблицы filter.

Добавил правила:

$IPTABLES -t filter -A FORWARD -p tcp -d $TERM_IP --dport 3389 -j ACCEPT
$IPTABLES -t filter -A FORWARD -p tcp -s $TERM_IP --sport 3389 -j ACCEPT

И все заработало :D!!! (и что важно с дропами по умолчанию)

А от правила в OUTPUT избавился, оно и правда не причем. И теперь все так красивенько, симетрично в скриптике смотрица - лепота :)! Красота - один из критериев истинности.

Огромное спасибо, MaratSh и всем форумчанам.

 

Страница сгенерирована за 0.039 секунд. Запросов: 23.