LinuxForum.Fans
Тема

Корректиовка правил iptables

Автор: leksstav 15 сообщений 7593 просмотров
#5186

Имеем, такой вот конфиг iptables


#!/bin/sh
#
iptables -F
iptables -t nat -F
echo 1 > /proc/sys/net/ipv4/ip_forward
modprobe ip_nat_ftp
## opisyvayu interfeis na storone provaidera
INET_IP="XXX.XXX.XXX.XXX" # IP который дал провайдер
INET_IFACE="eth0"
INET_BROADCAST="YYY.YYY.YYY.YYY"
## opisyvayu interfeis na storone localnoi seti
LAN_IP="192.168.100.200"
LAN_IP_RANGE="192.168.100.0/24"
LAN_IFACE="eth1"

IPTABLES="/usr/sbin/iptables"

/sbin/depmod -a #podcluchayu modyl
/sbin/modprobe ip_tables #podcluchayu modyl
/sbin/modprobe ip_conntrack #podcluchayu modyl
/sbin/modprobe iptable_filter #podcluchayu modyl
/sbin/modprobe iptable_mangle #podcluchayu modyl
/sbin/modprobe iptable_nat #podcluchayu modyl
/sbin/modprobe ipt_LOG #podcluchayu modyl
/sbin/modprobe ipt_limit #podcluchayu modyl
/sbin/modprobe ipt_state #podcluchayu modyl
/sbin/modprobe ip_nat_ftp #podcluchayu modyl


##Modem заходим удалено на сервак через обычный модем, а также ходим в инет через рабочий шлюз по средством обычного модема
iptables -A INPUT -p ALL -i ppp0 -j ACCEPT #razreshaem podcluchenie po ppp0
iptables -A FORWARD -s 192.168.0.10 #dlya dostupa po PPP

##USERS
iptables -t nat -A POSTROUTING -s 192.168.100.100 -o $INET_IFACE -j SNAT --to-source $INET_IP #ADMIN
iptables -t nat -A POSTROUTING -s 192.168.100.101 -o $INET_IFACE -j SNAT --to-source $INET_IP #User1
iptables -t nat -A POSTROUTING -s 192.168.100.102 -o $INET_IFACE -j SNAT --to-source $INET_IP #User2
iptables -t nat -A POSTROUTING -s 192.168.100.103 -o $INET_IFACE -j SNAT --to-source $INET_IP #User3
#
#
iptables -A INPUT -s zz.zz.zz.zz -j ACCEPT # админим удаленно сервак из дома например
iptables -A INPUT -s localhost -j ACCEPT
#Открываем доступ для всей локалки на определеные порты
iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 3128 -j ACCEPT # squid
iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 25 -j ACCEPT # smtp
iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 80 -j ACCEPT # http
iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 110 -j ACCEPT # pop3
iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 445 -j ACCEPT # samba
iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 443 -j ACCEPT # https
iptables -A INPUT -s 192.168.100.100 -j ACCEPT # Админ ходит на все порты
iptables -t nat -A PREROUTING -p tcp -s $LAN_IP_RANGE -d ! 192.168.100.200 --dport 80 -j REDIRECT --to-ports 3128 # Заворачиваем обращения всех пользователей через прокси
#
iptables -t nat -A POSTROUTING -s 192.168.0.10 -j MASQUERADE # dlya dostupa po PPP
iptables -A INPUT -p icmp -j ACCEPT #Razreshay pingi iz vne
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #podderzhivaem vse sozdannye podclycheniya
iptables -P INPUT DROP # zaprechaem vse

####################################################################

Проблема заключается вот в чем, если я например комментирую скажем правило :
#iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 445 -j ACCEPT # samba
То люди не могут пользоваться самбовой шарой, все зер гуд, а как я только коментирую доступ на 80 порт

#iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 80 -j ACCEPT # HTTP

То нифига, 80 порт все равно открыт, понятно что сквид зарубит, но все же хотелось впервую очередь рубить средствами iptables а потом уже сквидом.

Получается, что все порты нормально перекрываются кроме 80-го.

Просьба кто знает, поправте мой конфиг :rolleyes:

#5241
leksstav написал:
iptables -t nat -A PREROUTING -p tcp -s $LAN_IP_RANGE -d ! 192.168.100.200 --dport 80 -j REDIRECT --to-ports 3128 # Заворачиваем обращения всех пользователей через прокси

Ну так вот же destination на 80-й порт. Или я не понял вопрос?

#5298

dimich, немного не поняли :rolleyes:

Мне надо чтобы я мог 80-й порт закрыть для людей без помощи сквида чисто правилом iptables

#iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 80 -j ACCEPT # HTTP

Закоментировал и все, нету доступа в инет через 80-й порт

Т.к. это у меня не работает, то пришлось ставить squid чтобы ограничить доступ. Сквид мне сейчас, не нужен.

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

#5321

Тогда вам надо где-то в начале конфига добавить вот такую строку. И не будет у всех 80-го порта в инете =)

text

iptables -A PREROUTING -p tcp -s $LAN_IP_RANGE --dport 80 -j DROP

А когда понадобится этот порт, то можно закомментировать эту строчку.

З.Ы. Цепочка INPUT отвечает за обращения к серверу. С ее помощью инет вы регулировать не сможете.
А вообще лучше напишите что у вас есть на сервере и как вы хотите и куда ограничивать доступ. Я попробую написать вам новый скрипт.

#5379
elve написал:
Тогда вам надо где-то в начале конфига добавить вот такую строку. И не будет у всех 80-го порта в инете =)
text

iptables -A PREROUTING -p tcp -s $LAN_IP_RANGE --dport 80 -j DROP

А когда понадобится этот порт, то можно закомментировать эту строчку.

З.Ы. Цепочка INPUT отвечает за обращения к серверу. С ее помощью инет вы регулировать не сможете.
А вообще лучше напишите что у вас есть на сервере и как вы хотите и куда ограничивать доступ. Я попробую написать вам новый скрипт.

Спасибо за помощь elve

На сервере у меня вот что стоит:

1) SAMBA шара
2) FTP сервер
3) Почтовый сервер
4) OpenVPN сервер
5) Ну и раздача инета народу
6) PPP сервер подключаюсь через модем из дома при необходимсти
Что я хочу:

1) ограничить доступ в инет для локалки например
Для ip-шника 192.168.100.14 открыты порты в мир 80,25,3128,110,1394,21
Для ip-шника 192.168.100.15 открыты порты в мир 80 все только web
Для ip-шника 192.168.100.16 открыты порты все без ограничения и в обход прокси например
Кто не указан в списке разре-х ip адресов банится само собой.

2)Админить шлюз и выходить в нет при подключении по обычному модему стоит ppp сервер у меня

3)Чтобы был прозрачный прокси т.е. все обращения на 80-й порт перенаправлялись на squid

4) Ходить из дома например на рабочий сервак и админить удалено при необходимости (доступ только на мой внешний ip по все портам)

5) Открыть 25 всему миру для почтового сервака

Сейчас у меня такой:

#!/bin/sh
#
# /etc/rc.d/rc.local: Local system initialization script.
#
# Put any local startup commands in here. Also, if you have
# anything that needs to be run at shutdown time you can
# make an /etc/rc.d/rc.local_shutdown script and put those
# commands in there.
iptables -F
iptables -t nat -F
#echo 1 > /proc/sys/net/ipv4/ip_forward
modprobe ip_nat_ftp
## opisyvayu interfeis na storone provaidera
INET_IP="XXX.XXX.XXX.XXX"
INET_IFACE="eth0"
INET_BROADCAST="YYY.YYY.YYY.YYY"
## opisyvayu interfeis na storone localnoi seti
LAN_IP="192.168.100.200"
LAN_IP_RANGE="192.168.100.0/24"
LAN_IFACE="eth1"

LAN_VPN_RANGE="192.168.99.0/24" #delaem podset dlya VPN

IPTABLES="/usr/sbin/iptables"

/sbin/depmod -a #podcluchayu modyl
/sbin/modprobe ip_tables #podcluchayu modyl
/sbin/modprobe ip_conntrack #podcluchayu modyl
/sbin/modprobe iptable_filter #podcluchayu modyl
/sbin/modprobe iptable_mangle #podcluchayu modyl
/sbin/modprobe iptable_nat #podcluchayu modyl
/sbin/modprobe ipt_LOG #podcluchayu modyl
/sbin/modprobe ipt_limit #podcluchayu modyl
/sbin/modprobe ipt_state #podcluchayu modyl
/sbin/modprobe ip_nat_ftp #podcluchayu modyl

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

##Modem
iptables -A INPUT -p ALL -i ppp0 -j ACCEPT #razreshaem podcluchenie po ppp0
iptables -A FORWARD -s 192.168.0.10 #dlya dostupa po PPP

##USERS
iptables -t nat -A POSTROUTING -s 192.168.100.2 -o $INET_IFACE -j SNAT --to-source $INET_IP #ADMIN
iptables -t nat -A POSTROUTING -s 192.168.100.3 -o $INET_IFACE -j SNAT --to-source $INET_IP #user1
iptables -t nat -A POSTROUTING -s 192.168.100.4 -o $INET_IFACE -j SNAT --to-source $INET_IP #user2
iptables -t nat -A POSTROUTING -s 192.168.100.5 -o $INET_IFACE -j SNAT --to-source $INET_IP #user3
iptables -t nat -A POSTROUTING -s 192.168.100.6 -o $INET_IFACE -j SNAT --to-source $INET_IP #user4
# и так далее
##Correcting, uncomment next line
iptables -t nat -A POSTROUTING -s $LAN_VPN_RANGE -o $INET_IFACE -j SNAT --to-source $INET_IP #VPN USERS
##Openvpn MASQUERADE
iptables -t nat -A POSTROUTING -s $LAN_VPN_RANGE -o $LAN_IFACE -j MASQUERADE #MASQUERADE dlya Openvpn
#
iptables -A INPUT -s zz.zz.zz.zz -j ACCEPT # daem dostup iz vne po vsem portam
iptables -A INPUT -i ! lo -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT # открываем 25 из вне для всех
# Какие порты разрешены в локалке
iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 3128 -j ACCEPT # squid
iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 25 -j ACCEPT # smtp
iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 80 -j ACCEPT # http
iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 110 -j ACCEPT # pop3
iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 5300 -j ACCEPT #
iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 15100 -j ACCEPT #
iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 445 -j ACCEPT # samba
iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 443 -j ACCEPT # https
iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 1194 -j ACCEPT # openvpn
iptables -A INPUT -p tcp -s $LAN_IP_RANGE --dport 21 -j ACCEPT #ftp
iptables -A INPUT -s 192.168.100.2 -j ACCEPT # Админ ходит куда хочет
#iptables -t nat -A PREROUTING -p tcp -s $LAN_IP_RANGE -d ! 192.168.100.200 --dport 80 -j REDIRECT --to-ports 3128 # Prozrachnoe procsirovanie
########################################################################################################################################
##Correcting, uncomment next lines
iptables -A INPUT -p tcp -s $LAN_VPN_RANGE --dport 80 -j ACCEPT # http
iptables -A INPUT -p tcp -s $LAN_VPN_RANGE --dport 3128 -j ACCEPT # squid
iptables -A INPUT -p tcp -s $LAN_VPN_RANGE --dport 22 -j ACCEPT # ssh
iptables -A INPUT -p tcp -s $LAN_VPN_RANGE --dport 25 -j ACCEPT # smtp
iptables -A INPUT -p tcp -s $LAN_VPN_RANGE --dport 110 -j ACCEPT # pop3
#
iptables -t nat -A POSTROUTING -s 192.168.0.10 -j MASQUERADE # dlya dostupa po PPP
iptables -A INPUT -p icmp -j ACCEPT #Razreshay pingi iz vne
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #podderzhivaem vse sozdannye podclycheniya
iptables -P INPUT DROP # zaprechaem vse

Вот в общем то и все.

#5559

Вот примерно так. Возможно и ошибся где. А вообще чтобы понять как все это работает неплохо бы почитать мануал официальный.

text
#!/bin/sh
#
# /etc/rc.d/rc.local:  Local system initialization script.
#
# Put any local startup commands in here.  Also, if you have
# anything that needs to be run at shutdown time you can
# make an /etc/rc.d/rc.local_shutdown script and put those
# commands in there.

## Сеть провайдера INET_IP="XXX.XXX.XXX.XXX" INET_IFACE="eth0" INET_BROADCAST="YYY.YYY.YYY.YYY" ## Локальная сеть LAN_IP="192.168.100.200" LAN_IP_RANGE="192.168.100.0/24" LAN_IFACE="eth1"

LAN_VPN_RANGE="192.168.99.0/24" #подсеть для VPN

ipt="/usr/sbin/iptables"

# загружаем модули /sbin/depmod -a /sbin/modprobe ip_tables /sbin/modprobe ip_conntrack /sbin/modprobe iptable_filter /sbin/modprobe iptable_mangle /sbin/modprobe iptable_nat /sbin/modprobe ipt_LOG /sbin/modprobe ipt_limit /sbin/modprobe ipt_state /sbin/modprobe ip_nat_ftp

# Включаем форвардинг echo 1 > /proc/sys/net/ipv4/ip_forward

# Очищаем цепочки от того что там есть $ipt -F $ipt -X $ipt -t nat -F $ipt -t nat -X $ipt -t mangle -F $ipt -t mangle -X

# Выставляем политики по умолчанию (если не разрешено, то запрещено) $ipt -P INPUT DROP $ipt -P FORWARD DROP

## Создаем цепочки с наборами правил # Доступ из локалки $ipt -N localnetwork $ipt -A localnetwork -p tcp --dport 21 -j ACCEPT # ftp $ipt -A localnetwork -p tcp --dport 25 -j ACCEPT # mail $ipt -A localnetwork -p tcp --dport 139 -j ACCEPT # samba $ipt -A localnetwork -p tcp --dport 445 -j ACCEPT # samba

# Доступ снаружи $ipt -N inside # открываем доступ с домашнего ип $ipt -A inside -s домашний_ип -j ACCEPT # открыли всем 25-й порт $ipt -A inside -p tcp --dport 25 -j ACCEPT

## INPUT $ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $ipt -A INPUT -p icmp -j ACCEPT # можно разрешить только пинг, но не вижу повода так прятаться # направляем в цепочку локальной сети $ipt -A INPUT -i $LAN_IFACE -j localnetwork # направляем в цепочку инетовского интерфейса $ipt -A INPUT -i $INET_IFACE -j inside

## FORWARD

# Пускаем пользователей в инет $ipt -t nat -A POSTROUTING -s 192.168.100.16 -j MASQUERADE $ipt -t nat -A POSTROUTING -s 192.168.100.15 -p tcp --dport 80 -j MASQUERADE $ipt -t nat -A POSTROUTING -s 192.168.100.14 -p tcp -m multiport --multiport 21,25,80,110,3128,1394 -j MASQUERADE

$ipt -t nat -A PREROUTING -p tcp -s $LAN_IP_RANGE -d ! 192.168.100.200 --dport 80 -j REDIRECT --to-ports 3128

З.Ы. Мне кажется что правило с REDIRECT будет срабатывать раньше чем те что с MASQUERADE, потому что цепочка PREROUTING обрабатывается раньше. Как обойти это не смог придумать.

#5989
elve написал:
Вот примерно так. Возможно и ошибся где. А вообще чтобы понять как все это работает неплохо бы почитать мануал официальный.
text
#!/bin/sh
#
# /etc/rc.d/rc.local:  Local system initialization script.
#
# Put any local startup commands in here.  Also, if you have
# anything that needs to be run at shutdown time you can
# make an /etc/rc.d/rc.local_shutdown script and put those
# commands in there.

## Сеть провайдера INET_IP="XXX.XXX.XXX.XXX" INET_IFACE="eth0" INET_BROADCAST="YYY.YYY.YYY.YYY" ## Локальная сеть LAN_IP="192.168.100.200" LAN_IP_RANGE="192.168.100.0/24" LAN_IFACE="eth1"

LAN_VPN_RANGE="192.168.99.0/24" #подсеть для VPN

ipt="/usr/sbin/iptables"

# загружаем модули /sbin/depmod -a /sbin/modprobe ip_tables /sbin/modprobe ip_conntrack /sbin/modprobe iptable_filter /sbin/modprobe iptable_mangle /sbin/modprobe iptable_nat /sbin/modprobe ipt_LOG /sbin/modprobe ipt_limit /sbin/modprobe ipt_state /sbin/modprobe ip_nat_ftp

# Включаем форвардинг echo 1 > /proc/sys/net/ipv4/ip_forward

# Очищаем цепочки от того что там есть $ipt -F $ipt -X $ipt -t nat -F $ipt -t nat -X $ipt -t mangle -F $ipt -t mangle -X

# Выставляем политики по умолчанию (если не разрешено, то запрещено) $ipt -P INPUT DROP $ipt -P FORWARD DROP

## Создаем цепочки с наборами правил # Доступ из локалки $ipt -N localnetwork $ipt -A localnetwork -p tcp --dport 21 -j ACCEPT # ftp $ipt -A localnetwork -p tcp --dport 25 -j ACCEPT # mail $ipt -A localnetwork -p tcp --dport 139 -j ACCEPT # samba $ipt -A localnetwork -p tcp --dport 445 -j ACCEPT # samba

# Доступ снаружи $ipt -N inside # открываем доступ с домашнего ип $ipt -A inside -s домашний_ип -j ACCEPT # открыли всем 25-й порт $ipt -A inside -p tcp --dport 25 -j ACCEPT

## INPUT $ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $ipt -A INPUT -p icmp -j ACCEPT # можно разрешить только пинг, но не вижу повода так прятаться # направляем в цепочку локальной сети $ipt -A INPUT -i $LAN_IFACE -j localnetwork # направляем в цепочку инетовского интерфейса $ipt -A INPUT -i $INET_IFACE -j inside

## FORWARD

# Пускаем пользователей в инет $ipt -t nat -A POSTROUTING -s 192.168.100.16 -j MASQUERADE $ipt -t nat -A POSTROUTING -s 192.168.100.15 -p tcp --dport 80 -j MASQUERADE $ipt -t nat -A POSTROUTING -s 192.168.100.14 -p tcp -m multiport --multiport 21,25,80,110,3128,1394 -j MASQUERADE

$ipt -t nat -A PREROUTING -p tcp -s $LAN_IP_RANGE -d ! 192.168.100.200 --dport 80 -j REDIRECT --to-ports 3128

З.Ы. Мне кажется что правило с REDIRECT будет срабатывать раньше чем те что с MASQUERADE, потому что цепочка PREROUTING обрабатывается раньше. Как обойти это не смог придумать.

Спасибо буду в конце недели на работе, попробую :)
По результатам отпишусь.

#6364

Всем привет, создавал тему раньше но так и не смог добиться результат, кто-нить сможет помочь объяснить в чем я ошибся. Пытаюсь абсолютно всем дать прямой доступ к некоторым серверам в инете, всё остальное для сети 192,168,0,128/25 пустить через сквид, после запуска конфига получается что те кто напрямую спокойно работают, а кого заворачиваю в сквид вообще ничо не работает

#!/bin/bash
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe iptable_nat
modprobe ip_nat_ftp
echo 1 > /proc/sys/net/ipv4/ip_forward


iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -t nat -F POSTROUTING
iptables -t nat -F PREROUTING

iptables -A INPUT -p esp -j ACCEPT
iptables -A OUTPUT -p esp -j ACCEPT
iptables -A INPUT -p ah -j ACCEPT
iptables -A OUTPUT -p ah -j ACCEPT
iptables -A INPUT -p gre -j ACCEPT
iptables -A OUTPUT -p gre -j ACCEPT


iptables -A INPUT -j ACCEPT -s 192.168.0.1/24 -d 0/0
iptables -A INPUT -j ACCEPT -s 79.170.186.215/24 -d 0/0
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE

iptables -A FORWARD -s 192.168.0.0/24 -d 79.170.111.11/32 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -d 217.11.1.50/32 -j ACCEPT

iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.128/25 -p tcp -d ! 79.170.111.11 --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.128/25 -p tcp -d ! 217.11.1.50 --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.128/25 -p tcp -d ! 192.168.0.1 --dport 80 -j REDIRECT --to-port 3128

iptables -A FORWARD -d 192.168.0.20/32 -j ACCEPT
iptables -A FORWARD -d 192.168.0.21/32 -j ACCEPT
iptables -A FORWARD -d 192.168.0.22/32 -j ACCEPT
iptables -A FORWARD -d 192.168.0.23/32 -j ACCEPT
iptables -A FORWARD -d 192.168.0.25/32 -j ACCEPT
iptables -A FORWARD -d 192.168.0.40/32 -j ACCEPT
iptables -A FORWARD -d 192.168.0.111/32 -j ACCEPT
iptables -A FORWARD -d 192.168.0.112/32 -j ACCEPT
iptables -A FORWARD -d 192.168.0.0/24 -j DROP

#6499

dolf85
Сам сквид-то настроен для transparent-proxy и запущен?
Да и вот эти правила странные:


iptables -A INPUT -j ACCEPT -s 192.168.0.1/24 -d 0/0
iptables -A INPUT -j ACCEPT -s 79.170.186.215/24 -d 0/0

Не видел чтобы условие шло перед действием.

#7225

да вроде всё нормально, одна проблема, фиг с ним со сквидом, я не могу дать прямой доступ до серверов:
iptables -A FORWARD -s 192.168.0.0/24 -d 79.170.111.11/32 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -d 217.11.1.50/32 -j ACCEPT

#7579
elve написал:
Вот примерно так. Возможно и ошибся где. А вообще чтобы понять как все это работает неплохо бы почитать мануал официальный.
text
#!/bin/sh
#
# /etc/rc.d/rc.local:  Local system initialization script.
#
# Put any local startup commands in here.  Also, if you have
# anything that needs to be run at shutdown time you can
# make an /etc/rc.d/rc.local_shutdown script and put those
# commands in there.

## Сеть провайдера INET_IP="XXX.XXX.XXX.XXX" INET_IFACE="eth0" INET_BROADCAST="YYY.YYY.YYY.YYY" ## Локальная сеть LAN_IP="192.168.100.200" LAN_IP_RANGE="192.168.100.0/24" LAN_IFACE="eth1"

LAN_VPN_RANGE="192.168.99.0/24" #подсеть для VPN

ipt="/usr/sbin/iptables"

# загружаем модули /sbin/depmod -a /sbin/modprobe ip_tables /sbin/modprobe ip_conntrack /sbin/modprobe iptable_filter /sbin/modprobe iptable_mangle /sbin/modprobe iptable_nat /sbin/modprobe ipt_LOG /sbin/modprobe ipt_limit /sbin/modprobe ipt_state /sbin/modprobe ip_nat_ftp

# Включаем форвардинг echo 1 > /proc/sys/net/ipv4/ip_forward

# Очищаем цепочки от того что там есть $ipt -F $ipt -X $ipt -t nat -F $ipt -t nat -X $ipt -t mangle -F $ipt -t mangle -X

# Выставляем политики по умолчанию (если не разрешено, то запрещено) $ipt -P INPUT DROP $ipt -P FORWARD DROP

## Создаем цепочки с наборами правил # Доступ из локалки $ipt -N localnetwork $ipt -A localnetwork -p tcp --dport 21 -j ACCEPT # ftp $ipt -A localnetwork -p tcp --dport 25 -j ACCEPT # mail $ipt -A localnetwork -p tcp --dport 139 -j ACCEPT # samba $ipt -A localnetwork -p tcp --dport 445 -j ACCEPT # samba

# Доступ снаружи $ipt -N inside # открываем доступ с домашнего ип $ipt -A inside -s домашний_ип -j ACCEPT # открыли всем 25-й порт $ipt -A inside -p tcp --dport 25 -j ACCEPT

## INPUT $ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $ipt -A INPUT -p icmp -j ACCEPT # можно разрешить только пинг, но не вижу повода так прятаться # направляем в цепочку локальной сети $ipt -A INPUT -i $LAN_IFACE -j localnetwork # направляем в цепочку инетовского интерфейса $ipt -A INPUT -i $INET_IFACE -j inside

## FORWARD

# Пускаем пользователей в инет $ipt -t nat -A POSTROUTING -s 192.168.100.16 -j MASQUERADE $ipt -t nat -A POSTROUTING -s 192.168.100.15 -p tcp --dport 80 -j MASQUERADE $ipt -t nat -A POSTROUTING -s 192.168.100.14 -p tcp -m multiport --multiport 21,25,80,110,3128,1394 -j MASQUERADE

$ipt -t nat -A PREROUTING -p tcp -s $LAN_IP_RANGE -d ! 192.168.100.200 --dport 80 -j REDIRECT --to-ports 3128

З.Ы. Мне кажется что правило с REDIRECT будет срабатывать раньше чем те что с MASQUERADE, потому что цепочка PREROUTING обрабатывается раньше. Как обойти это не смог придумать.

Опробывал, я ваш конфиг :(

text
#!/bin/sh

## Сеть провайдера INET_IP="XX.XX.XX.XX" INET_IFACE="eth0" INET_BROADCAST="YYY.YYY.YYY.YYY" ## Локальная сеть LAN_IP="192.168.100.200" LAN_IP_RANGE="192.168.100.0/24" LAN_IFACE="eth1"

LAN_VPN_RANGE="192.168.99.0/24" #подсеть для VPN

ipt="/usr/sbin/iptables"

# загружаем модули /sbin/depmod -a /sbin/modprobe ip_tables /sbin/modprobe ip_conntrack /sbin/modprobe iptable_filter /sbin/modprobe iptable_mangle /sbin/modprobe iptable_nat /sbin/modprobe ipt_LOG /sbin/modprobe ipt_limit /sbin/modprobe ipt_state /sbin/modprobe ip_nat_ftp

# Включаем форвардинг echo 1 > /proc/sys/net/ipv4/ip_forward

# Очищаем цепочки от того что там есть $ipt -F $ipt -X $ipt -t nat -F $ipt -t nat -X $ipt -t mangle -F $ipt -t mangle -X

# Выставляем политики по умолчанию (если не разрешено, то запрещено) $ipt -P INPUT DROP $ipt -P FORWARD DROP

## Создаем цепочки с наборами правил # Доступ из локалки $ipt -N localnetwork $ipt -A localnetwork -p tcp --dport 21 -j ACCEPT # ftp $ipt -A localnetwork -p tcp --dport 25 -j ACCEPT # mail $ipt -A localnetwork -p tcp --dport 139 -j ACCEPT # samba $ipt -A localnetwork -p tcp --dport 445 -j ACCEPT # samba

# Доступ снаружи $ipt -N inside # открываем доступ с домашнего ип $ipt -A inside -s ZZ.ZZ.ZZ.ZZ -j ACCEPT # открыли всем 25-й порт $ipt -A inside -p tcp --dport 25 -j ACCEPT

## INPUT $ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $ipt -A INPUT -p icmp -j ACCEPT # можно разрешить только пинг, но не вижу повода так прятаться # направляем в цепочку локальной сети $ipt -A INPUT -i $LAN_IFACE -j localnetwork # направляем в цепочку инетовского интерфейса $ipt -A INPUT -i $INET_IFACE -j inside

## FORWARD

# Пускаем пользователей в инет $ipt -t nat -A POSTROUTING -s 192.168.100.16 -j MASQUERADE

Вывод команды Iptables -L

text
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTAB       LISHED
ACCEPT     icmp --  anywhere             anywhere
localnetwork  all  --  anywhere             anywhere
inside     all  --  anywhere             anywhere

Chain FORWARD (policy DROP) target prot opt source destination

Chain OUTPUT (policy ACCEPT) target prot opt source destination

Chain inside (1 references) target prot opt source destination ACCEPT all -- host-ZZ-ZZ-ZZ-ZZ.stv.ru anywhere ACCEPT tcp -- anywhere anywhere tcp dpt:25

Chain localnetwork (1 references) target prot opt source destination ACCEPT tcp -- anywhere anywhere tcp dpt:21 ACCEPT tcp -- anywhere anywhere tcp dpt:25 ACCEPT tcp -- anywhere anywhere tcp dpt:139 ACCEPT tcp -- anywhere anywhere tcp dpt:445 ACCEPT tcp -- anywhere anywhere tcp dpt:22

Для отладки прокси отключил.
В итоге интернета нет :-(((((

#7715

Добавьте в FORWARD еще

text

$ipt -A FORWARD -s 192.168.100.0/24 -j ACCEPT
#8548
elve написал:
Добавьте в FORWARD еще
text

$ipt -A FORWARD -s 192.168.100.0/24 -j ACCEPT

Не помогло к сожалению :(

#8629

Не помогло потому что мне кажется нат странно настроен, что за ip 16???

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j SNAT --to-source INET_IP вот так кажись должно быть у тебя

#8789
dolf85 написал:
Не помогло потому что мне кажется нат странно настроен, что за ip 16???

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j SNAT --to-source INET_IP вот так кажись должно быть у тебя

У меня, так и стоит, посмотрите в самое первое сообщение.
Мой конфиг работает, но только проблема с 80-м портом.

UP

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