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


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

Автор Тема: Срочно NAT и IP-tables  (Прочитано 1383 раз)

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

Оффлайн Integra

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Срочно NAT и IP-tables
« : 05 Февраль 2010, 13:05:00 »
Прошу помощи. К завтрашнему утру должен заработать маршрутизатор под Ubuntu Server 9.10. Иначе меня сделают крайним =(.

Условия следующие: для доступа к веб-ресурсам используется Squid (это я уже настроил). Для всех остальных сетевых приложений по умолчанию доступ во внешние сети должен быть закрыт. Однако для двух отдельных машин в локальной сети должен работать доступ к почте (pop и smtp через NAT) и к одной из локальных машин должен быть доступ извне по порту RDP:3389 (то есть при подключении на внешний интерфейс шлюза по порту 3389 запросы должны пробрасываться в LAN на конкретную машину) . На шлюзе уже настроил DHCP с присвоением конкретных IP по MAC. Настроил кэширующий DNS-сервер (bind9).

Помогите, пожалуйста, сделать скрипт для iptables, чтобы работал NAT вышеописанным образом.

Доп.информация: на шлюзе два интерфейса
- eth0 смотрит во внешние сети (192.168.164.0/24), ip 192.168.164.100, шлюз/dns-сервер 192.168.164.2
- eth1 смотрит в локальную сеть (192.168.100.0/24), ip 192.168.100.100.
Адреса машинок, для которых должен работать NAT для POP3 и SMTP: 192.168.100.106, 192.168.100.110.
Адрес машины, для которой должен работать проброс порта 3389: 192.168.100.101.


С iptables буду разбираться на выходных, тема объёмная для новичка. Когда разберусь, перепешу скрипт сам. Но пока не могу осилить, а нужно срочно.
Заранее спасибо. Очень надеюсь на вашу помощь.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 25938
    • Просмотр профиля
Re: Срочно NAT и IP-tables
« Ответ #1 : 05 Февраль 2010, 14:22:54 »
Не нужны никакие скрипты. Для кого iptables-save/restore придумали?
Вот и выложи сюда iptables-save, посмотрим, что есть сейчас, оттуда и плясать будем.
Проброс порта внутрь, смотри правило DNAT, примеры есть в соседних темах.
Наружу просто разрешающее правило в цепочке форварда.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн Integra

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Срочно NAT и IP-tables
« Ответ #2 : 05 Февраль 2010, 14:49:37 »
Не нужны никакие скрипты. Для кого iptables-save/restore придумали?
Вот и выложи сюда iptables-save, посмотрим, что есть сейчас, оттуда и плясать будем.
Проброс порта внутрь, смотри правило DNAT, примеры есть в соседних темах.
Наружу просто разрешающее правило в цепочке форварда.

iptables-save:

*filter
:INPUT ACCEPT [24:3317]
:FORWARD ACCEPT [20:888]
:OUTPUT ACCEPT [22:1772]
COMMIT

Пользователь решил продолжить мысль 05 Февраль 2010, 14:53:54:
Наружу просто разрешающее правило в цепочке форварда.

Я хочу основательно разобраться с iptables, но я почитал разные описания, оценил время и понял, что не успеваю. Так что буду заниматься этим в выходные. А пока надо просто получить скрипт, выполняемый при загрузке, или последовательность действий, как заставить работать то, что я описал. Надеюсь на понимание. Это не лень и желание получить всё готовое, просто меня поставили в такие условия, что время строго ограничено. А когда разберусь с iptables сам, переделаю всё. К тому же там появится необходимость в новых соединениях "изнутри" и пробросах "снаружи".
« Последнее редактирование: 05 Февраль 2010, 14:53:54 от Integra »

Оффлайн aSmile

  • Активист
  • *
  • Сообщений: 715
    • Просмотр профиля
Re: Срочно NAT и IP-tables
« Ответ #3 : 05 Февраль 2010, 15:31:02 »
Попробуй вот это http://easyfwgen.morizot.net/gen/
Там просто говоришь, что тебе надо, а оно тебе скрипт.

Только подправить остается, чтобы все блокировал в FORWARD, tcp_outbound и udp_outbound + дописать несколько строк типа
$IPT -A tcp_outbound -s 192.168.100.106 --dport 25 -j ACCEPT
« Последнее редактирование: 05 Февраль 2010, 15:44:48 от aSmile »

Оффлайн Integra

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Срочно NAT и IP-tables
« Ответ #4 : 05 Февраль 2010, 16:35:15 »
Попробуй вот это http://easyfwgen.morizot.net/gen/
Там просто говоришь, что тебе надо, а оно тебе скрипт.

Только подправить остается, чтобы все блокировал в FORWARD, tcp_outbound и udp_outbound + дописать несколько строк типа
$IPT -A tcp_outbound -s 192.168.100.106 --dport 25 -j ACCEPT


Воспользовался ссылкой. Создал конфиг, который разрешает изнутри всё, кроме почты с конкретных внутренних адресов. Получилось следующее:

# This chain is used with a private network to prevent forwarding for
# requests on specific protocols.  Applied to the FORWARD rule from
# the internal network.  Ends with an ACCEPT

# Block Email Access to external servers

# SMTP
$IPT -A tcp_outbound -p TCP -s 0/0 --destination-port 25 -j REJECT

# POP3
$IPT -A tcp_outbound -p TCP -s 0/0 --destination-port 110 -j REJECT

# IMAP4
$IPT -A tcp_outbound -p TCP -s 0/0 --destination-port 143 -j REJECT


# No match, so ACCEPT
$IPT -A tcp_outbound -p TCP -s 0/0 -j ACCEPT

Я правильно понимаю, что если сделать это правило таким:

# This chain is used with a private network to prevent forwarding for
# requests on specific protocols.  Applied to the FORWARD rule from
# the internal network.  Ends with an ACCEPT

# Block Email Access to external servers

# SMTP
$IPT -A tcp_outbound -p TCP -s 192.168.100.106 192.168.100.110 --destination-port 25 -j ACCEPT

# POP3
$IPT -A tcp_outbound -p TCP -s 192.168.100.106 192.168.100.110 --destination-port 110 -j ACCEPT

# No match, so REJECT
$IPT -A tcp_outbound -p TCP -s 0/0 -j REJECT

... то изнутри будет запрещено всё, кроме попыток связаться с почтовыми серверами для двух локальных машин? И ещё, при таких правилах что-то нужно добавить, чтобы локальные машины могли работать со Squid, DNS и DHCP на шлюзе?

Оффлайн aSmile

  • Активист
  • *
  • Сообщений: 715
    • Просмотр профиля
Re: Срочно NAT и IP-tables
« Ответ #5 : 05 Февраль 2010, 16:39:25 »
Наверное не REJECT, а DROP
И для каждого айпишника по отдельности правило.
Изнутри весь INPUT разрешен.

Оффлайн Integra

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Срочно NAT и IP-tables
« Ответ #6 : 05 Февраль 2010, 16:51:20 »
Наверное не REJECT, а DROP
И для каждого айпишника по отдельности правило.
Изнутри весь INPUT разрешен.

Итак, если я правильно понял, то для моих нужд в скрипте должно быть следующее:


# Форвардим на 101 машину 3389 порт
$IPT -t nat -A PREROUTING -p tcp -i $INET_IFACE --destination-port 3389:3389 \
     -j DNAT --to-destination 192.168.100.101:3389

# Это что?
$IPT -t nat -A PREROUTING -p tcp -i $LOCAL_IFACE --destination-port 3389:3389 \
     --destination $INET_ADDRESS -j DNAT --to-destination 192.168.100.101:3389



# SMTP
$IPT -A tcp_outbound -p TCP -s 192.168.100.110 --destination-port 25 -j ACCEPT
$IPT -A tcp_outbound -p TCP -s 192.168.100.106  --destination-port 25 -j ACCEPT

# POP3
$IPT -A tcp_outbound -p TCP -s 192.168.100.110 --destination-port 110 -j ACCEPT
$IPT -A tcp_outbound -p TCP -s 192.168.100.106 destination-port 110 -j ACCEPT

# Всё остальное исходящее по TCP режем?
$IPT -A tcp_outbound -p TCP -s 0/0 -j DROP

Теперь конкретные вопросы:
1. Где запретить весь остальной исходящий траффик из внутренней сети во внешнюю?
2. Как разрешить локальным машинам обращаться к шлюзу (к Squid, DNS и DHCP)
3. Как разрешить Squid и DNS отправлять запросы и получать ответы со внешних сетей?

Оффлайн aSmile

  • Активист
  • *
  • Сообщений: 715
    • Просмотр профиля
Re: Срочно NAT и IP-tables
« Ответ #7 : 05 Февраль 2010, 16:58:50 »
1. Где запретить весь остальной исходящий траффик из внутренней сети во внешнюю?
$IPT -A tcp_outbound -p TCP -s 0/0 -j DROP
2. Как разрешить локальным машинам обращаться к шлюзу (к Squid, DNS и DHCP)
3. Как разрешить Squid и DNS отправлять запросы и получать ответы со внешних сетей?
Там есть строчки типа
$IPT -A INPUT -p ALL -i $LOCAL_IFACE -s $LOCAL_NET -j ACCEPT

$IPT -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LO_IFACE -j ACCEPT
$IPT -A OUTPUT -p ALL -s $LOCAL_IP -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LOCAL_IFACE -j ACCEPT
$IPT -A OUTPUT -p ALL -o $INET_IFACE -j ACCEPT


Пользователь решил продолжить мысль 05 Февраль 2010, 15:00:38:
те строчки дописывай в тот скрипт в нужные места.

Пользователь решил продолжить мысль 05 Февраль 2010, 17:02:54:
# Это что?
$IPT -t nat -A PREROUTING -p tcp -i $LOCAL_IFACE --destination-port 3389:3389 \
     --destination $INET_ADDRESS -j DNAT --to-destination 192.168.100.101:3389

В общем-то не обязательно. Благодаря этой строчке ты можешь обращаться по рдп к 100.101 по внешнему айпишнику (или, например, по доменному имени)
« Последнее редактирование: 05 Февраль 2010, 17:02:54 от aSmile »

Оффлайн Integra

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Срочно NAT и IP-tables
« Ответ #8 : 05 Февраль 2010, 17:13:16 »

Спасибо большое! Чуть позже опробую. Если будут проблемы, напишу ещё.

 

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