LinuxForum.Fans
Тема

Снова iptables

Автор: deleted_user 25 сообщений 5939 просмотров
#215966

Порты мне нужны на доступ к внешнему серверу который находиться за пределами офиса , точнее в другом офисе (почтовый сервер) порты нужны 25/110 , а нужно что-бы пользователи на прямую могли выходить на тот сервер.

#215968
bearwoolfs написал:
Интернет я раздать могу , его спокойно по Http прокидывает SQUID , а вот порты пробросить это уже мука целой недели smile

В плане пробросить? Опишите цель ребятам будет проще.
Какие порты куда надо их.

#215970
Kettler написал:
[quote=bearwoolfs]Интернет я раздать могу , его спокойно по Http прокидывает SQUID , а вот порты пробросить это уже мука целой недели smile

В плане пробросить? Опишите цель ребятам будет проще.
Какие порты куда надо их.[/quote]
Порты мне нужны на доступ к внешнему серверу который находиться за пределами офиса , точнее в другом офисе (почтовый сервер) порты нужны 25/110 , а нужно что-бы пользователи на прямую могли выходить на тот сервер.

#215984

Тоесть почтовый сервер у Вас вне офиса?
Так бы и сказали.
Тогда объясняю на пальцах.
Цепочка INPUT - все пакеты входящие на ЭТОТ самый, компьютер, на котором Вы сидите.
Цепочка OUTPUT - все пакты исходящие с этого самого комьютера, на котором Вы сидите.
Цепочка FORWARD - все пакеты проходящие с одного сетевого интерфейса на другой.
Заметьте - есть разница, INPUT + OUTPUT никогда не будет FORWARD!!!!!
INPUT и OUTPUT - это локальная машина.
FORWARD - это NAT, шлюза в Интернет, Default Gateway (чаще всего именно по умолчанию) и т.д. и т.п.

Отсюда идём дальше. Что бы с ЭТОЙ самой машины получить доступ к почтовому серверу (не важно где он, если не локально) то разрешаем 25 и 110 порты в цепочке OUTPUT.
Что бы другим компам дат ьвозможность подключаться к почтовому сереру, который снаружи Вашей локалки - разрешаем 25 и 110 порты в цепочке FORWARD.
Скрипт тогда будет примерно такой:

text

#!/bin/bash
## Rules filter for ip v.4
## Flush all default
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -t nat -F
/sbin/iptables -t nat -X
#
## Setup policy DROP for all
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT DROP
#
## loop=trusted.
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT
#
## Drop invalid pakets
/sbin/iptables -A INPUT -m state --state INVALID -j DROP
/sbin/iptables -A FORWARD -m state --state INVALID -j DROP
#
## ESTABLISHED connection
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
#
## NAT for all
/sbin/iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/24 -j SNAT --to-source [b][u]ВАШ_ВНЕШНИЙ_БЕЛЫЙ_IP[/u][/b]
# Если провайдером выдаётся динамический адрес, то тогда нужно использовать маскарад
#
## Setup PING
/sbin/iptables -A INPUT -p icmp -m icmp -i eth0 --icmp-type echo-request -j ACCEPT             # Позволим себя пинговать из локалки
/sbin/iptables -A OUTPUT -p icmp -m icmp --icmp-type echo-request -j ACCEPT                     # Позволим себе пинговать кого угодно
/sbin/iptables -A FORWARD -p icmp -m icmp -i eth0 --icmp-type echo-request -j ACCEPT    # Позволим из локалки пинговат ького угодно во внешке
#/sbin/iptables -A INPUT -p icmp -m icmp -i eth1 --icmp-type echo-request -j ACCEPT          # Позволим себя пинговать из внешки (ИМХО нах не надо)
#
# Правила для локальной почты
/sbin/iptables -A OUTPUT -p udp --dport 53 -j ACCEPT                                                                 # Разрешаем себе обращатся к внешнему ДНС
/sbin/iptables -A OUTPUT -p tcp -m multiport --dport 25,53,110 -j ACCEPT                              # Разрешаем себе обращатся к внешней почте
#
/sbin/iptables -A FORWARD -i eth0 -p udp -s 192.168.0.0/24 --dport 53 -j ACCEPT                # # Разрешаем из локалки обращатся к внешнему ДНС
/sbin/iptables -A FORWARD -i eth0 -p tcp -m multiport --dport 25,53,110 -s 192.168.0.0/24 -j ACCEPT # Разрешаемиз локалки обращатся к внешней почте
#
## Rules for users access to sites on HTTP \SQUID
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 3128 -s $ALL -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p udp --dport 3128 -s $ALL -j ACCEPT
#
#/sbin/iptables -A FORWARD -i eth0 -p tcp -s 192.168.0.0/24 --dport 80 -j ACCEPT                 # Доступ к сайтам минуя проксю (иногда бывает нужно)

Здесь минимум, который я понял исходя из Ваших объяснений. Впринципе ничего сложного. По аналогии можно добавлять другии правила.
Особо хочу отметить - политики по умолчанию - DROP, тоесть все всраги! Это не маловажно!
При этом, как Вы заметили нету ни одного "обратного правила", который бы разрешал ответные пакеты на уже отосланные. И это не случайно.
Секция ESTABLISHED connection отвечает за возврат пакетов, и ответов на запросы. Поэтому можно не городить огорода двойными правилами (туда-сюда), а писать тиолько нужные (туда), а те которые "сюда" вернуться сами.
Вот в такой конфиге это работает.
Удачи!

#216359
bearwoolfs написал:
[quote=Kettler][quote=bearwoolfs]Интернет я раздать могу , его спокойно по Http прокидывает SQUID , а вот порты пробросить это уже мука целой недели smile

В плане пробросить? Опишите цель ребятам будет проще.
Какие порты куда надо их.[/quote]
Порты мне нужны на доступ к внешнему серверу который находиться за пределами офиса , точнее в другом офисе (почтовый сервер) порты нужны 25/110 , а нужно что-бы пользователи на прямую могли выходить на тот сервер.[/quote]
Если внешний сервер имеет итернет(АКА белый) адрес, то:
Простой и сердитый - просто на рутере в iptables настроить NAT,
Если адрес на внешнем сервере адрес интранет(АКА серый) то просто - никак. Надо на рутере(который перед удалённым сервером и имеет белый IP) организовать проброс портов.

Войдите или зарегистрируйтесь, чтобы ответить.