Имеется прокся Suse, на ней поднят Squid 2.6, подключена сразу в инет. На клиенских машинах, инет работает через указанный порт и айпишник в свойствах браузера. Решил сделать прозрачный прокси, внес изменения в конфиге squid, включил встроенный браундмауэр на сусе, указал переадресацию портов в нем и через шлюз инет на машинах работает, тоесть без проблем ходить и почта и аська и http. Теперь возникла необходимость, настроить передаресацию поротов, а именно: в офисе стоить эксченж, у хостера прописан в МХ записи мой айпишник, тоесно нужно что бы почта приходила на проксю и отправляла на эксченж сервер. В принципе почти тоже самое нужно и с радминкой, что бы по порту 4899 из инета, была переадресация на определенный порт компа в офисе. Как это делается и где? Сам линукс изучаю не давно, поэтому многое могу не знать, не судите строго.
>[оверквотинг удален]
>включил встроенный браундмауэр на сусе, указал переадресацию портов в нем и
>через шлюз инет на машинах работает, тоесть без проблем ходить и
>почта и аська и http. Теперь возникла необходимость, настроить передаресацию поротов,
>а именно: в офисе стоить эксченж, у хостера прописан в МХ
>записи мой айпишник, тоесно нужно что бы почта приходила на
>проксю и отправляла на эксченж сервер. В принципе почти тоже самое
>нужно и с радминкой, что бы по порту 4899 из инета,
>была переадресация на определенный порт компа в офисе. Как это делается
>и где? Сам линукс изучаю не давно, поэтому многое могу не
>знать, не судите строго.Это делается правилами firewall iptables и прокси squid тут не при делах.
Iptables Tutorial 1.1.19 на русском языке:
http://www.opennet.me/docs/RUS/iptables/
ну раз новичок то в помощь тебе онлайн генератор правил iptables
http://easyfwgen.morizot.net/gen/
Как оказалось, инет шел через браундмауер самого suse, теперь отключил его, настроил в скрипте для iptables http через suse. Но не могу настроить почту, что делаю не так?
#!/bin/sh
#
INET_IFACE="eth0"
UNPRIPORTS="1024:65535"
iptables -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 25 --sport $UNPRIPORTS -j ACCEPT
iptables -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 25 -j ACCEPT ! --syn
iptables -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 110 --sport $UNPRIPORTS -j ACCEPT
iptables -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 110 -j ACCEPT ! --syn
iptables -t nat -A PREROUTING -i eth1 -d ! 192.168.17.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.17.30:3128причем
linux-yja4:~ # iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp spt:smtp dpts:1024:65535 flags:!FIN,SYN,RST,ACK/SYN
ACCEPT tcp -- anywhere anywhere tcp spt:pop3 dpts:1024:65535 flags:!FIN,SYN,RST,ACK/SYNChain FORWARD (policy ACCEPT)
target prot opt source destinationChain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp spts:1024:65535 dpt:smtp
ACCEPT tcp -- anywhere anywhere tcp spts:1024:65535 dpt:pop3
linux-yja4:~ # service iptables
service: no such service iptables
>Как оказалось, инет шел через браундмауер самого suse, теперь отключил его, настроил
>в скрипте для iptables http через suse. Но не могу настроить
>почту, что делаю не так?если имеете ввиду проброс в локалку, то делайте DNAT и SNAT для нее, а фильтровать этот трафик в FORWARD, а не в INPUT/OUTPUT
>[оверквотинг удален]
>
>Chain FORWARD (policy ACCEPT)
>target prot opt source destination
>
>Chain OUTPUT (policy ACCEPT)
>target prot opt source destination
>ACCEPT tcp -- anywhere anywhere tcp spts:1024:65535 dpt:smtp
>ACCEPT tcp -- anywhere anywhere tcp spts:1024:65535 dpt:pop3
>linux-yja4:~ # service iptables
>service: no such service iptables
Имеется ввиду возможность пользователям забирать почту из инета по pop и smtp
>Имеется ввиду возможность пользователям забирать почту из инета по pop и smtp
>если клиенты в серой сети, то нужен SNAT и фильтровать в FORWARD
Клиенты в той же сети, что и прокся.
>Клиенты в той же сети, что и прокся.если 192.168.17.0/24 реально используется, то делайте SNAT для этих портов или для всего, в зависимости от вашего желания и умения пользователями обходить прокси
SNAT имеет одну опцию --to-source, которая служит для указания адреса, присваемового пакету. Пример:
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 171.26.34.251не очень понятно, что нужно указать, мне же нужно открыть порт, а тут айпишник. А можно ли компу вообще все разрешить в инет?
> SNAT имеет одну опцию --to-source, которая служит для указания адреса, присваемового
>пакету. Пример:
># iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 171.26.34.251
>
>
>не очень понятно, что нужно указать, мне же нужно открыть порт, а
>тут айпишник. А можно ли компу вообще все разрешить в инет?
>этим правилом вы изменяете адрес отправителя пакета на свой внешний адрес. адресов из 192.168.0.0/16 подсети в инете нет, они для внутреннего использования, поэтому и подменяете чтобы сервер к которому вы хотите обратится знал куда отсылать ответ.
если адрес у вас динамический , то лучше используйте MASQUERADE
http://www.opennet.me/docs/RUS/iptables/#MASQUERADETARGETiptables не открывает порты, он или пропускает пакеты, или блокирует, или иногда может изменить порт, в основном он использует номера портов как критерий отбора пакетов для применения к ним правил которые вы и будите указывать. а слушают и соответственно открывают порты другие программы.
рулить, что пропускать, а что нет для транзитных пакетов будите в таблице фильтров в цепочке FORWARD.
разрешить все в инет теоритически можно, но практически это не безопасно и также работа через SNAT накладывает определенные ограничения.
думаю вам нужно прочитать о принципах работы сети, без понимания этого вам будет трудно управлять работой шлюза и сети.
У меня статические айпишники в сети, следовательно snat мне более подходит.
Я так понимаю, что указываю eth0 - сетевое подключение локалки, 171.26.34.251 - айпишник инетовский. Верно я понимаю? Мне же в iptables нужно будет указывать не обходимые порты? Тоесть для открытия допустим 25 порта не достаточно одного правила?
>У меня статические айпишники в сети, следовательно snat мне более подходит.
>Я так понимаю, что указываю eth0 - сетевое подключение локалки, 171.26.34.251 --o eth0 означает, что правило будет действовать для пакетов уходящих с eth0, в вашем случае на месте eth0 должен быть интерфейс смотрящий на провайдера.
>айпишник инетовский. Верно я понимаю? Мне же в iptables нужно будет
>указывать не обходимые порты? Тоесть для открытия допустим 25 порта не
>достаточно одного правила?это зависит в каком правиле вы будите использовать критерий "порт 25" и от того какие еще у вас используются правила.
то есть если вы его укажите в правиле с SNAT, то SNAT будет применяться к пакетам которые будут связаны с портом 25. если в таблице фильтров, то в зависимости от политик по умолчанию и других правил. писать правило для 25 порта может не потребоваться , если например разрешено прохождение всех пакетов, может потребоваться правила для обоих направлений, либо скажем для пакетов идущих от клиента в инет на 25 порт указать разрешающее правило, а для разрешения прохождения ответов разрешить пакеты со статусом
-m state --state RELATED,ESTABLISHED
так что все зависит от того как вы захотите реализовать
Тогда наверно правильно опишу задачу и что сделано и работает.
Требуется настроить прокси, для предоставления интернета (на данный момент http, pop, smtp, icq дальше будет видно) пользователям офиса. Стоит suse + squid + iptables. В squid создал файлик где указаны какие айпишники могут исползовать инет, в конфиге iptables (rc.firewall такого файла небыло, создал сам)прописано всего одно правило, которое позволяет использовать прозрачное проксирование. http работает. Теперь тудаже надо добавить почту и аську. Чуть позже, пользователям не нужно будет забирать почту из инета, будет стоять эксченж. Пробывал различные варинаты с почтной, но ничего так и не прокатило.
>Тогда наверно правильно опишу задачу и что сделано и работает.
>Требуется настроить прокси, для предоставления интернета (на данный момент http, pop, smtp,
>icq дальше будет видно) пользователям офиса. Стоит suse + squid +
>iptables. В squid создал файлик где указаны какие айпишники могут исползовать
>инет, в конфиге iptables (rc.firewall такого файла небыло, создал сам)прописано всего
>одно правило, которое позволяет использовать прозрачное проксирование. http работает. Теперь тудаже
>надо добавить почту и аську. Чуть позже, пользователям не нужно будет
>забирать почту из инета, будет стоять эксченж. Пробывал различные варинаты с
>почтной, но ничего так и не прокатило.у клиентов прописываете шлюз, DNS
на шлюзе (suse)
echo 1 > /proc/sys/net/ipv4/ip_forward
и SNAT , если в FORWARD все разрешено, то должно работать, потом уже можете придумывать фильтры
Спасибо большое, вот теперь после добавления этих строк в автозагрузку, почта заработала :)echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -i eth1 -d ! 192.168.17.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.17.30:3128
iptables -t nat -A POSTROUTING -s 192.168.17.0/24 -p tcp --dport 25 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.17.0/24 -p tcp --dport 110 -j MASQUERADE
> если в FORWARD все разрешено, то должно работать, потом
>уже можете придумывать фильтрыА если мне определенному компу, допустим себе, нужно разрешить весь исходящий трафик, что бы порты не переписывать, будет ли такая схема работать?
iptables -t nat -A POSTROUTING -s 192.168.17.10 -p all --dport -j MASQUERADE
или лучше
iptables -t nat -A POSTROUTING -s 192.168.17.0/24 -p tcp --dport 21-68000 -j MASQUERADE
>[оверквотинг удален]
>А если мне определенному компу, допустим себе, нужно разрешить весь исходящий трафик,
>что бы порты не переписывать, будет ли такая схема работать?
>
>iptables -t nat -A POSTROUTING -s 192.168.17.10 -p all --dport -j MASQUERADE
>
>
>или лучше
>
>iptables -t nat -A POSTROUTING -s 192.168.17.0/24 -p tcp --dport 21-68000 -j
>MASQUERADEпишите без указания портов, а само правило ставьте выше других в SNAT
при -j MASQUERADE и динамическом адресе, так же может понадобится
echo "1" > /proc/sys/net/ipv4/ip_dynaddrно в целом лучше SNAT делать для всех исходящих через внешний интерфейс, а фильтровать в таблице фильтров в FORWARD, тогда у провайдера уж точно не возникнет вопросов почему от вас приходят пакеты с внутренними адресами
у меня нету динамических адресов, у меня статика.
Вот тут назрел еще вопрос, допустим мне нужно открыть порты почты не всем, а только части народа. Это мне в правилах айпитабса нужно будет каждому добавлять или открыть всем, а уже в squid указать кому давать этот порт?
>у меня нету динамических адресов, у меня статика.
>Вот тут назрел еще вопрос, допустим мне нужно открыть порты почты не
>всем, а только части народа. Это мне в правилах айпитабса нужно
>будет каждому добавлять или открыть всем, а уже в squid указать
>кому давать этот порт?вообще то, squid с почтой не работает
>>у меня нету динамических адресов, у меня статика.
>>Вот тут назрел еще вопрос, допустим мне нужно открыть порты почты не
>>всем, а только части народа. Это мне в правилах айпитабса нужно
>>будет каждому добавлять или открыть всем, а уже в squid указать
>>кому давать этот порт?
>
>вообще то, squid с почтой не работаетВ sqid есть хорошая возможность, указывать в файле айпишники, кому чего, а тут даже диаппазон нельзя указать. Мне допустим нужно открыть почту с 192.168.17.20-192.168.17.60 и 192.168.17.120-192.168.17.130 т.п. как это реализуется или придется каждому свою строчку писать?
>[оверквотинг удален]
>>>всем, а только части народа. Это мне в правилах айпитабса нужно
>>>будет каждому добавлять или открыть всем, а уже в squid указать
>>>кому давать этот порт?
>>
>>вообще то, squid с почтой не работает
>
>В sqid есть хорошая возможность, указывать в файле айпишники, кому чего, а
>тут даже диаппазон нельзя указать. Мне допустим нужно открыть почту с
>192.168.17.20-192.168.17.60 и 192.168.17.120-192.168.17.130 т.п. как это реализуется или придется каждому свою
>строчку писать?маски придумали злые люди.
так же можно попробовать как -m iprange --src-range ip-ip работаетhttp://www.opennet.me/man.shtml?topic=iptables&russian=0&cat...