Jump to content

Нету интернета !!!


Recommended Posts

Привет всем. Прошу помощи, т.к. я уже запарился. СТГ 2.4.8.6, FreeBSD 5.4.

проинсталил, все ок вроде. Конфигуратор подключается, авторизатор подключается, скрипты ОнКоннект ОнДисконнект в файрвол встраивают свои записи, а инета нету. Может я ошибку в файрволе допустил ??? Помогите плз.

 

Файрвол

 

#!/bin/sh

fwcmd="/sbin/ipfw"
#natdcmd='/sbin/natd'
${fwcmd} -f flush

oif="rl0"
onet="192.168.0.0"
omask="255.255.255.0"
oip="192.168.0.10"

iif="fxp0"
inet="192.168.10.0"
imask="255.255.255.0"
iip="192.168.10.1"

admip="192.168.10.161" 

#${natdcmd} -s -m -u -a 192.168.0.10 


${fwcmd} add 10 deny log icmp from any to any frag
${fwcmd} add 11 allow icmp from any to any

${fwcmd} add 15 pass udp from ${oip} to any 53 keep-state
${fwcmd} add 20 pass udp from any to ${oip} 53 keep-state
${fwcmd} add 25 pass udp from ${iip} to ${inet}:${imask} 53 keep-state
${fwcmd} add 30 pass udp from ${inet}:${imask} to ${iip} 53 keep-state

${fwcmd} add 100 pass all from any to any via lo0
${fwcmd} add 200 deny all from any to 127.0.0.0/8
${fwcmd} add 300 deny all from 127.0.0.0/8 to any

${fwcmd} add 400 deny log all from ${inet}:${imask} to any in via ${oif}
${fwcmd} add 500 deny log all from ${onet}:${omask} to any in via ${iif}

${fwcmd} add 600 deny log all from any to 10.0.0.0/8 via ${oif}
${fwcmd} add 700 deny log all from 10.0.0.0/8 to any via ${oif}
${fwcmd} add 800 deny log all from any to 172.16.0.0/12 via ${oif}
${fwcmd} add 900 deny log all from 172.16.0.0/12 to any via ${oif}

${fwcmd} add 1000 deny log all from any to 0.0.0.0/8 via ${oif}
${fwcmd} add 1010 deny log all from 0.0.0.0/8 to any via ${oif}
${fwcmd} add 1020 deny log all from any to 169.254.0.0/16 via ${oif}
${fwcmd} add 1030 deny log all from 169.254.0.0/16 to any via ${oif}
#${fwcmd} add 1040 deny log all from any to 192.0.2.0/24 via ${oif}
#${fwcmd} add 1050 deny log all from 192.0.2.0/24 to any via ${oif}
${fwcmd} add 1060 deny log all from any to 224.0.0.0/4 via ${oif}
${fwcmd} add 1070 deny log all from 224.0.0.0/4 to any via ${oif}
${fwcmd} add 1080 deny log all from any to 240.0.0.0/4 via ${oif}
${fwcmd} add 1090 deny log all from 240.0.0.0/4 to any via ${oif}


#Authorizator Stargazer
${fwcmd} add 1100 allow udp from ${inet}:${imask} to ${iip} 5555 via ${iif}
${fwcmd} add 1101 allow udp from ${iip} to ${inet}:${imask} via ${iif}

#Configurator Stargazer
${fwcmd} add 1102 allow log tcp from ${admip} to ${iip} 4444 via ${iif}
${fwcmd} add 1103 allow log tcp from ${iip} to ${admip} via ${iif}

#SSH
${fwcmd} add 1104 allow tcp from ${admip} to ${iip} 22 via ${iif}
${fwcmd} add 1105 allow tcp from ${iip} to ${admip} via ${iif}

${fwcmd} add 1150 deny log ip from ${inet}:${imask} to ${iip} via ${iif}
${fwcmd} add 1151 deny log ip from ${inet}:${imask} to ${oip} via ${iif}

${fwcmd} add 1200 allow ip from me to any
${fwcmd} add 1200 allow ip from any to me

${fwcmd} add 50001 divert natd all from any to any via ${oif} #!!!

${fwcmd} add 50010 pass tcp from any to any out via ${oif} setup

${fwcmd} add 50011 pass tcp from any to any via ${oif} established

 

OnConnect

 

#Этот скрипт вызывается в момент, когда пользователь
#спешно прошел авторизацию на сервере. Задача скрита - перестроить #
#айрвол так, что бы пользователь получил доступ в интернет

fwcmd="/sbin/ipfw"
iif="fxp0"

#Login
#echo "$LOGIN"
LOGIN=$1

#user IP
IP=$2

#cash
CASH=$3

#user ID
ID=$4

${fwcmd} add `expr $ID '*' 10 + 10000` allow ip from $IP to any
${fwcmd} add `expr $ID '*' 10 + 10001` allow ip from any to $IP

#${fwcmd} add `expr $ID '*' 10 + 29000` fwd 127.0.0.1,3128 tcp from $IP to any 80 via ${iif}

echo "`date +%Y.%m.%d-%H.%M.%S` connect $ID $IP $CASH" >> /var/stargazer/users/$LOGIN/connect.log
echo "`date +%Y.%m.%d-%H.%M.%S` connect $LOGIN $IP $CASH" >> /var/stargazer/connect.log

 

OnDisconnect

# Этот скрипт вызывается в момент, когда пользователь
# желает отключится от интернета или вышел таймаут у пользователя
# и сервер сам отключает пользователя
# Задача скрипта подобна задаче скрипта OnConnect - перестроить
# файрвол так, что бы пользователю закрыть доступ в интернет

fwcmd="/sbin/ipfw"
iif="fxp0"

# Login
LOGIN=$1

#user IP
IP=$2

#cash
CASH=$3

#user ID
ID=$4

${fwcmd} delete `expr $ID '*' 10 + 10000`
${fwcmd} delete `expr $ID '*' 10 + 10001`

echo "`date +%Y.%m.%d-%H.%M.%S` disconnect $ID $IP $CASH" >> /var/stargazer/users/$LOGIN/connect.log
echo "`date +%Y.%m.%d-%H.%M.%S` disconnect $LOGIN $IP $CASH" >> /var/stargazer/connect.log

 

З.Ы. Ядро собрано с

option IPFIREWALL

option IPFIREWALL_VERBOSE

option IPFIREWALL_VERBOSE_LIMIT 100

option IPDIVERT

Link to post
Share on other sites

Смотри в сторону диверта, ни все тут так...

И еще... в 5-ой ветке бсд по дефолту соберается ipfw2, а это значит что можа вот так (выборка ipfw show):

01230       3        234 deny ip from any to 172.195.65.1 dst-port 20,21,22,23,80,137,138,139,199,443,445,8080,8888 via xl0

и

00050    3949     517691 deny ip from 192.168.0.0/16,172.16.0.0/12,10.0.0.0/8 to any in via rl0

и так

01220   66979    6821124 allow ip from 63.63.202.0/27,63.63.63.14,63.63.63.222,63.63.48.43,63.63.173.9 to 63.63.202.8 dst-port 20,21,22,25,80,587,8020,8888 via rl0

Link to post
Share on other sites

для начала проверьте стоит ли у клиентов основной шлюз? Если да, то посмотрите tcpdump'ом на внешенем ифе какой трафик ходит, если трафика нет совсем, то дело в запрещающих правилах фаера, если есть пакеты из внутрненней сети, то пакеты не попадают в нат.

Link to post
Share on other sites
есть пакеты с моего IP на сайт, типа 192,168,10,161 -> www.rambler.ru, а вот обратно нету.

Вот вам и ответ, пакеты не попадают в прямой нат, тоесть от вашей машины, а идут сразу в инет, добавте в фаер правило типа:

ipfw a №№№№ divert natd ip from 192.168.10.161 to any out via (имя товоего внешнего интерфейса)

К стати обязательно должен быть обратный диверт, типа

ipfw a №№№№ divert natd ip from any to me in via (имя товоего внешнего интерфейса)

Link to post
Share on other sites

2Xeddin:

Ответ прост, на правиле allow или deny пакет закончивает путь по фаерволлу на данном интерфейсе.

Т.е. если пакет удовлетворяет правилу allow или deny, то дальше он фаерволлом не проверяется.

Пакет пропускается на allow.

Или отвергается на deny.

 

У тебя в OnConnect создаются правила:

${fwcmd} add `expr $ID '*' 10 + 10000` allow ip from $IP to any

${fwcmd} add `expr $ID '*' 10 + 10001` allow ip from any to $IP

 

Вот пакет от клиента на правиле 10000 + Х и проходит проверку фаерволом.

А, если учесть, что пакет от клиента проверяется фаерволом 2 раза (при поступлении на внутренний интерфейс и при уходе с внешнего интерфейса), то фаерволл ему на обоих интерфейсах даст allow на правиле 10000 + Х.

 

А natd у тебя делается на правиле

${fwcmd} add 50001 divert natd all from any to any via ${oif}

Т.е. на правиле с номером 50001.

 

Т.е. пакет от клиента, при выходе с внешнего интерфейса, до 50001 правила просто не доходит, заканчивая свой путь на правиле 10000 + Х.

Вот у тебя с внешнего интерфейса шлюза и видны пакеты типа 192,168,10,161 -> www.rambler.ru.

Шлюз честно исполняет свои обязанности шлюза, пересылает пакеты из одной сети в другую.

 

Вариантов решения этого может быть много.

Я бы посоветовал перестроить фаерволл полностью.

Хотя можно попробовать просто в OnConnect заменить разрешающие правила на правила типа:

${fwcmd} add `expr $ID '*' 10 + 10000` allow ip from $IP to any via fxp0

${fwcmd} add `expr $ID '*' 10 + 10001` allow ip from any to $IP via fxp0

 

Т.е. чтоб правило срабатывало только на внутреннем интерфейсе.

 

Хотя нет.

Надо ещё в конфиге фаерволла правилам:

${fwcmd} add 1200 allow ip from me to any

${fwcmd} add 1200 allow ip from any to me

Дать номера, бОльшие 50001.

Чтоб сначала исполнялся natd, а потом эти правила.

Link to post
Share on other sites

Сделал так:

#!/bin/sh

fwcmd="/sbin/ipfw"
#natdcmd='/sbin/natd'
${fwcmd} -f flush

oif="rl0"
onet="192.168.0.0"
omask="255.255.255.0"
oip="192.168.0.10"

iif="fxp0"
inet="192.168.10.0"
imask="255.255.255.0"
iip="192.168.10.1"

admip="192.168.10.161"

#Authorizator Stargazer
${fwcmd} add 1100 allow udp from ${inet}:${imask} to ${iip} 5555 via ${iif}
${fwcmd} add 1101 allow udp from ${iip} to ${inet}:${imask} via ${iif}

#Configurator Stargazer
${fwcmd} add 1102 allow log tcp from ${admip} to ${iip} 4444 via ${iif}
${fwcmd} add 1103 allow log tcp from ${iip} to ${admip} via ${iif}

#SSH
${fwcmd} add 1104 allow tcp from ${admip} to ${iip} 22 via ${iif}
${fwcmd} add 1105 allow tcp from ${iip} to ${admip} via ${iif}

${fwcmd} add 1115 pass udp from ${oip} to any 53 keep-state
${fwcmd} add 1120 pass udp from any to ${oip} 53 keep-state
${fwcmd} add 1125 pass udp from ${iip} to ${inet}:${imask} 53 keep-state
${fwcmd} add 1130 pass udp from ${inet}:${imask} to ${iip} 53 keep-state

${fwcmd} add 10000 allow ip from 192.168.10.161 to any via fxp0
${fwcmd} add 10001 allow ip from any to 192.168.10.161 via fxp0

${fwcmd} add 15001 divert natd all from any to any via ${oif} #!!!

${fwcmd} add 20000 allow ip from me to any
${fwcmd} add 20001 allow ip from any to me

 

все равно нифига нету. Уже пробовал

 

${fwcmd} add 10000 allow ip from 192.168.10.161 to any via fxp0

${fwcmd} add 10001 allow ip from any to 192.168.10.161 via fxp0

 

${fwcmd} add 15001 divert natd all from any to any via ${oif} #!!!

 

${fwcmd} add 20000 allow ip from me to any

${fwcmd} add 20001 allow ip from any to me

 

во всех комбинациях. не получается.

 

 

А что там XoRe говорил по поводу изменения файрвола в целом??? Может подкинешь примерчик ??? Мне что-то тяжело понять некоторые моменты прохождения пакетов.

 

Вот как понимаю я:

 

1. 192.168.10.161 - > ya.ru - через внутренний интерфейс (правило 10000 разрешило)

 

2. НАТд хватает пакет, делает из него 192.168.0.10 -> ya.ru и отправляет через внешний интерфейс (правило 20000 разрешило)

 

3. ya.ru -> 192.168.0.10 через внешний интерфейс (правило 20001 разрешило)

 

4. НАТд хватает пакет, делает из него ya.ru -> 192.168.10.161 отправляет через внутренний интерфейс (правило 10001 разрешило)

 

Может я что не так думаю ???

Link to post
Share on other sites
2 натд не хватает! так как пакет вышел из фаера из-за 10000 правила.

где именно вставить нуна? И еще, если использовать такие настройки, можно ли собирать ядро с

 

option IPFIREWALL

option IPFIREWALL_VERBOSE

option IPFIREWALL_VERBOSE_LIMIT 100

option IPDIVERT

 

или в случае сборки с этими опциями нужно по другому инсталить старгейзер и настраивать ????

Link to post
Share on other sites

2Max: хавает, хавает )

Он же в 10000 правиле указал внутренний интерфейс.

Значит при полете пакета на внешнем интерфейсе правило 10000 задеваться не будет.

 

2Xeddin: В целом рассуждения верные.

Скажу так - когда пакет проходит через nat, у него меняется адрес источника при полете наружу и меняется адрес получателя при полете внутрь.

Т.е. пакет 192.168.10.161 - > ya.ru на внутреннем интерфейсе будет "192.168.10.161 - > ya.ru".

И на внешнем будет такой, пока не зайдет в natd.

После ната он уже будет "192.168.0.10 - > ya.ru"

И фаерволл его выпустит на 20000 правиле.

 

А когда пакет придет от яндекса, он ДО правила с натом будет такой: "ya.ru - > 192.168.0.10".

А после этого правила, он будет проходить цепочку правил дальше уже как "ya.ru - > 192.168.10.161".

Поэтому правило 20001 работать не будет ни там, ни там.

Оно нафик не нужно.

Я бы даже сказал - его следует убрать, т.к. оно открывает все порты твоего компа с локалки и с интернета.

 

Попробуй вместо правил 20000 и 20001 написать одно правило:

${fwcmd} add 20000 allow ip from any to not me

 

И ещё - у тебя natd запущен? )

Link to post
Share on other sites

натд запущен с ключем -n, а вот

 

${fwcmd} add 20000 allow ip from any to not me

 

не помогает.

 

Буду сегодня на работе на новой машине ставить, может дома какие-то закорючки :)=)

Link to post
Share on other sites

Ура, заработало. В чем была проблема, х.з., но файрвол теперь такой:

#!/bin/sh

fwcmd="/sbin/ipfw"
natdcmd='/sbin/natd'
${fwcmd} -f flush

oif="rl0"
onet="192.168.0.0"
omask="255.255.255.0"
oip="192.168.0.10"

iif="fxp0"
inet="192.168.10.0"
imask="255.255.255.0"
iip="192.168.10.1"

admip="192.168.10.161"

${natdcmd} -s -m -u -a 192.168.0.10 -l

${fwcmd} add 100 check-state

${fwcmd} add 200 deny log icmp from any to any frag
${fwcmd} add 210 deny log icmp from any to any in icmptype 5,9,13,14,15,16,17

${fwcmd} add 300 pass all from any to any via lo0
${fwcmd} add 310 deny all from any to 127.0.0.0/8
${fwcmd} add 320 deny all from 127.0.0.0/8 to any

#DNS
${fwcmd} add 330 pass udp from ${oip} to any 53 keep-state
${fwcmd} add 340 pass udp from any to ${oip} 53 keep-state
${fwcmd} add 350 pass udp from ${iip} to ${inet}:${imask} 53 keep-state
${fwcmd} add 360 pass udp from ${inet}:${imask} to ${iip} 53 keep-state

#Web-server
${fwcmd} add 400 pass tcp from ${inet}:${imask} to ${iip} http,https via ${iif}

${fwcmd} add 1000 deny log all from ${inet}:${imask} to any in via ${oif}
${fwcmd} add 1010 deny log all from ${onet}:${omask} to any in via ${iif}

# Authorizator Stargazer
${fwcmd} add 2000 allow udp from ${inet}:${imask} to ${iip} 5555 via ${iif}
${fwcmd} add 2010 allow udp from ${iip} to ${inet}:${imask} via ${iif}

# Configurator Stargazer
${fwcmd} add 2020 allow log tcp from ${admip} to ${iip} 4444 via ${iif}
${fwcmd} add 2030 allow log tcp from ${iip} to ${admip} via ${iif}

# SSH
${fwcmd} add 2040 allow tcp from ${admip} to ${iip} 22 via ${iif}
${fwcmd} add 2050 allow tcp from ${iip} to ${admip} via ${iif}

# Deny all query to router
${fwcmd} add 2060 deny log ip from ${inet}:${imask} to ${iip} via ${iif}
${fwcmd} add 2070 deny log ip from ${inet}:${imask} to ${oip} via ${iif}

${fwcmd} add 10000 allow log ip from 192.168.10.161 to any via ${iif}
${fwcmd} add 10001 allow log ip from any to 192.168.10.161 via ${iif}

# NAT
${fwcmd} add 25050 divert natd all from any to any via ${oif} #!!!

# From me to ...
${fwcmd} add 25100 allow log ip from me to not me via ${oif}

${fwcmd} add 50000 pass tcp from any to any out via ${oif} setup
${fwcmd} add 50010 pass tcp from any to any via ${oif} established

# Ping ICMP
${fwcmd} add 50020 pass icmp from any to any

# SSH from World
${fwcmd} add 60000 pass tcp from any to ${oip} 22 via ${oif}

 

P.S. Чего в нем еще не хватает для безопасности?

Link to post
Share on other sites

Имхо, правила избыточны.

 

# Authorizator Stargazer

${fwcmd} add 2000 allow udp from ${inet}:${imask} to ${iip} 5555 via ${iif}

${fwcmd} add 2010 allow udp from ${iip} to ${inet}:${imask} via ${iif}

 

# Configurator Stargazer

${fwcmd} add 2020 allow log tcp from ${admip} to ${iip} 4444 via ${iif}

${fwcmd} add 2030 allow log tcp from ${iip} to ${admip} via ${iif}

 

Правило 2030 является частным случаем правила 2010.

Ну и вообще конструкция ${iip} to ${inet}:${imask} означает "разрешить отправку пакетов от меня с любого порта".

Сама по себе мысль правильная.

Себе-же мы доверяем )

Но если оно идет сразу за правилом 2000, то логично предположить, что оно составляет с ним пару.

так вот, для пары правила 2000 правило 2010, на мой взгляд, слишком общее.

Хотя в принципе пох, главное чтоб работало )

Link to post
Share on other sites
Имхо, правила избыточны.

 

# Authorizator Stargazer

${fwcmd} add 2000 allow udp from ${inet}:${imask} to ${iip} 5555 via ${iif}

${fwcmd} add 2010 allow udp from ${iip} to ${inet}:${imask} via ${iif}

 

# Configurator Stargazer

${fwcmd} add 2020 allow log tcp from ${admip} to ${iip} 4444 via ${iif}

${fwcmd} add 2030 allow log tcp from ${iip} to ${admip} via ${iif}

 

Правило 2030 является частным случаем правила 2010.

Ну и вообще конструкция ${iip} to ${inet}:${imask} означает "разрешить отправку пакетов от меня с любого порта".

Сама по себе мысль правильная.

Себе-же мы доверяем )

Но если оно идет сразу за правилом 2000, то логично предположить, что оно составляет с ним пару.

так вот, для пары правила 2000 правило 2010, на мой взгляд, слишком общее.

Хотя в принципе пох, главное чтоб работало )

так 2000 и 2010 по UDP протоколу, а 2020 и 2030 по TCP протоколу.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...