В обще господа хорошие выручайте :)
Свершилось. Проаптгетил ядро и дистриб своего дебиана который на шлюзе в инет на 2.4.х и woody вместо древнего potato.
Поставил iptables, вместо старых ipchains.
Настроил файрвол.
Затык ждал в самом неожиданном месте. Маскарадинге.Есть у меня сквид, и есть несколько машин в локальной сети которые должны ходить в обход сквида.
В чейнзах это решалось посредством
ipchains -A forward -j MASQ -s 10.4.253.100 -d 0/0 >/dev/nullа тут, даже не знаю как поступить. перечитал ман по iptables, облазил список статей тут по информационной безопасности... На просмотр форума уже не хватает сил и времени. Сроки поджимают... Люди, дайте строчку правила к iptables которая пропустит в инет машину например с тем же адресом 10.4.253.100 в инет, через шлюз 82.209.212.10 на интерфейсе eth1 который смотрит в инет.
Не знаю что еще из подробностей дать... Знаю задача простецкая, люди ее решают не плюнув, но что то у меня не хватает.
по манам пишу
iptables -t nat -A PREROUTING -s 10.4.253.100 -j SNAT --to-source 82.209.212.10не пашет...
Чаво прописать то надо? :)
http://www.opennet.me/tips/info/379.shtmlТы одну машину выпускаешь, а наверное нужно подсеть прописать? Типа 10.4.253.0/24 ну или какая она там у тебя?
--to-source - IP, который наружу смотрит
-o ethXX - тот интерфейс, который смотрит наружуи не забыть про echo "1" > /proc/sys/net/ipv4/ip_forward
>http://www.opennet.me/tips/info/379.shtml
>
>Ты одну машину выпускаешь, а наверное нужно подсеть прописать? Типа 10.4.253.0/24 ну
>или какая она там у тебя?Не, как раз пропустить надо скажем 5 машин с фиксированными айпишниками.
ну допустим сведем задачу к пропуску одной машины. 10.4.253.100 - моей :)>--to-source - IP, который наружу смотрит
ага. именно этот айпишник у меня пришит к интерфейсу который смотрит в инет.>-o ethXX - тот интерфейс, который смотрит наружу
>
ага. в моем случае это eth1...>и не забыть про echo "1" > /proc/sys/net/ipv4/ip_forward
прописано. еще с чейнзов осталось... проверял в процессах. наличествует.выходит следующая строка
iptables -t nat -A POSTROUTING -s 10.4.253.100 -d 0/0 -o eth1 -j SNAT --to-source 82.209.212.10сейчас пропишу проверю...
>выходит следующая строка
>iptables -t nat -A POSTROUTING -s 10.4.253.100 -d 0/0 -o eth1 -j
>SNAT --to-source 82.209.212.10
не заработало. продолжает не пускать в инет. :(
чге я не то написал?вот мой файрвол. писал практически по инструкции :)
может тут где чего не пущает тоже...iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -F
iptables -X
iptables -N bad_tcp_packets
iptables -N allowed
iptables -N tcp_packets
iptables -N udp_packets
iptables -N icmp_packets
iptables -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j DROP
iptables -A allowed -p tcp --syn -j ACCEPT
iptables -A allowed -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A allowed -j DROP
iptables -A tcp_packets -p tcp -s 0/0 --dport 80 -j allowed
iptables -A tcp_packets -p tcp -s 0/0 --dport 25 -j allowed
iptables -A tcp_packets -p tcp -s 0/0 --dport 110 -j allowed
iptables -A tcp_packets -p tcp -s 0/0 --dport 1024: -j allowed
iptables -A udp_packets -p udp -s 0/0 --dport 1024: -j allowed
iptables -A udp_packets -p udp -s 0/0 --sport 53 -j ACCEPT
iptables -A icmp_packets -p icmp -s 0/0 --icmp-type 3 -j ACCEPT
iptables -A icmp_packets -p icmp -s 0/0 --icmp-type 11 -j ACCEPT
iptables -A icmp_packets -p icmp -s 0/0 --icmp-type 12 -j ACCEPT
iptables -A icmp_packets -p icmp -s 0/0 --icmp-type 8 -j ACCEPT
iptables -A INPUT -p tcp -j bad_tcp_packets
iptables -A INPUT -p all -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -i eth1 -j tcp_packets
iptables -A INPUT -p udp -i eth1 -j udp_packets
iptables -A INPUT -p icmp -i eth1 -j icmp_packets
>>выходит следующая строка
>>iptables -t nat -A POSTROUTING -s 10.4.253.100 -d 0/0 -o eth1 -j
>>SNAT --to-source 82.209.212.10
>
>
>не заработало. продолжает не пускать в инет. :(
>чге я не то написал?
>
>вот мой файрвол. писал практически по инструкции :)
>может тут где чего не пущает тоже...
>
> iptables -P INPUT DROP
> iptables -P OUTPUT ACCEPT
> iptables -F
> iptables -X
> iptables -N bad_tcp_packets
> iptables -N allowed
> iptables -N tcp_packets
> iptables -N udp_packets
> iptables -N icmp_packets
iptables -A FORWARD(или INPUT?) -j bad_tcp_packets(и все сазданные цепочки)
> iptables -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK
>-m state --state NEW -j DROP
> iptables -A allowed -p tcp --syn -j ACCEPT
>
> iptables -A allowed -p tcp -m state --state
>ESTABLISHED,RELATED -j ACCEPT
> iptables -A allowed -j DROP
> iptables -A tcp_packets -p tcp -s 0/0 --dport
>80 -j allowed
> iptables -A tcp_packets -p tcp -s 0/0 --dport
>25 -j allowed
> iptables -A tcp_packets -p tcp -s 0/0 --dport
>110 -j allowed
> iptables -A tcp_packets -p tcp -s 0/0 --dport
>1024: -j allowed
> iptables -A udp_packets -p udp -s 0/0 --dport
>1024: -j allowed
> iptables -A udp_packets -p udp -s 0/0 --sport
>53 -j ACCEPT
> iptables -A icmp_packets -p icmp -s 0/0 --icmp-type
>3 -j ACCEPT
> iptables -A icmp_packets -p icmp -s 0/0 --icmp-type
>11 -j ACCEPT
> iptables -A icmp_packets -p icmp -s 0/0 --icmp-type
>12 -j ACCEPT
> iptables -A icmp_packets -p icmp -s 0/0 --icmp-type
>8 -j ACCEPT
> iptables -A INPUT -p tcp -j bad_tcp_packets
> iptables -A INPUT -p all -i eth1 -m
>state --state ESTABLISHED,RELATED -j ACCEPT
> iptables -A INPUT -p tcp -i eth1 -j
>tcp_packets
> iptables -A INPUT -p udp -i eth1 -j
>udp_packets
> iptables -A INPUT -p icmp -i eth1 -j
>icmp_packetsне забыть про:
echo "1" /proc/sys/net/ipv4/ip_forward
поправте если не прав :)
> iptables -A FORWARD(или INPUT?) -j bad_tcp_packets(и все
>сазданные цепочки)>> iptables -A INPUT -p tcp -j bad_tcp_packets
>> iptables -A INPUT -p all -i eth1 -m
>>state --state ESTABLISHED,RELATED -j ACCEPT
>> iptables -A INPUT -p tcp -i eth1 -j
>>tcp_packets
>> iptables -A INPUT -p udp -i eth1 -j
>>udp_packets
>> iptables -A INPUT -p icmp -i eth1 -j
>>icmp_packetsТак вот же оно. только ниже.
>не забыть про:
>echo "1" /proc/sys/net/ipv4/ip_forward
>поправте если не прав :)
это тоже есть. просто в другой секции. с маскарадами.
и ещё ....
>iptables -t nat -A POSTROUTING -s 10.4.253.100 -d 0/0 -o eth1 -j SNAT
--to-source 82.209.212.10<
сменить на: iptables -t nat -A POSTROUTING -o eth1 -p tcp -j SNAT --to-source 82.209.212.10
клиентов добавлять:
iptables -A FORWARD -i eth0 -s XXX -p tcp --dport YY -j ACCEPT
iptables -A FORWARD -i eth1 -d XXX -p tcp --sport YY -j ACCEPT
может чтото упустил ... должно работать
>>iptables -t nat -A POSTROUTING -s 10.4.253.100 -d 0/0 -o eth1 -j SNAT
>--to-source 82.209.212.10<
>сменить на: iptables -t nat -A POSTROUTING -o eth1 -p tcp -j
>SNAT --to-source 82.209.212.10
>клиентов добавлять:
> iptables -A FORWARD -i eth0 -s XXX -p tcp --dport YY
>-j ACCEPT
> iptables -A FORWARD -i eth1 -d XXX -p tcp --sport YY
>-j ACCEPT
>может чтото упустил ... должно работать
м... это что же, по кажому порту такую канитель прописывать?
или я не понял двух нижних правил... пропускать по локальному интерфейсу клиента ххх по порту уу
форвардить в интерфейс внешний клиента по порту...
это же громоздко...
>не заработало. продолжает не пускать в инет. :(Во-первых удали все правила, кроме POSTROUTING SNAT
Во-вторых не прописывай -s и -d
т.е. просто # iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 82.209.212.10Ну и проверь лишний раз # cat /proc/sys/net/ipv4/ip_forward, чтоб 1 стояло
>>не заработало. продолжает не пускать в инет. :(
>
>Во-первых удали все правила, кроме POSTROUTING SNAT
>Во-вторых не прописывай -s и -d
>т.е. просто # iptables -t nat -A POSTROUTING -o eth1 -j SNAT
>--to-source 82.209.212.10
>
>Ну и проверь лишний раз # cat /proc/sys/net/ipv4/ip_forward, чтоб 1 стояло
Этим я разрешу доступ в нет ВСЕМ машинам локалки. а я в начале говорил что хочу всем разрешить только через сквида. Собственно они так и ходят...
А пару машин насквозь... как у меня и было на ipchains
>Этим я разрешу доступ в нет ВСЕМ машинам локалки. а я в
>начале говорил что хочу всем разрешить только через сквида. Собственно они
>так и ходят...
>А пару машин насквозь... как у меня и было на ipchainsТы можешь запретить доступ другим машинам. Просто как я понимаю с -s правило работает не так, как кажется. Для этого правила -s является ip, который у тебя на хостах в default маршруте прописан, скорее всего у тебя этот ip тот, который внутрь локалки смотрит с роутера.
Т.е. правило звучит, для всех пакетов, которые идут наружу, перед отправкой на роутер провайдера, преобразовывать ip источника в ip на внешнем интерфейсе.
Поэтому проще открыть доступ всем, перекрыть доступ к нужным сервисам тем, кому не нужно. Например перекрыть всем http, а открыть только отдельным машинам и т.д. Не ставить же в случае, когда все перекрыто pop/smtp proxy например.
>Ты можешь запретить доступ другим машинам. Просто как я понимаю с -s
>правило работает не так, как кажется. Для этого правила -s является
>ip, который у тебя на хостах в default маршруте прописан, скорее
>всего у тебя этот ip тот, который внутрь локалки смотрит с
>роутера.
>Т.е. правило звучит, для всех пакетов, которые идут наружу, перед отправкой на
>роутер провайдера, преобразовывать ip источника в ip на внешнем интерфейсе.
>Поэтому проще открыть доступ всем, перекрыть доступ к нужным сервисам тем, кому
>не нужно. Например перекрыть всем http, а открыть только отдельным машинам
>и т.д. Не ставить же в случае, когда все перекрыто pop/smtp
>proxy например.
Беда в том что у меня виндовый домен с дхцп. народу туча сидит, айпишники динамические, кроме нескольких машин. плюс еще кроме канала на инет, есть еще канал на WAN где айпишники 10.0.0.0, и надо туда всех пускать, и еще есть модемный пул, где клиентов тоже надо в инет пропускать...эхма. лана, попробую поперекрывать после открытия всем всё кроме определенных айпишников.