Настройка IPFW ADSL bridge

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
igorlviv2
проходил мимо

Настройка IPFW ADSL bridge

Непрочитанное сообщение igorlviv2 » 2009-10-28 15:52:11

Здравствуйте!!
Помогите мне мне настроить фаервол !!! А то вторй день мучаюсь

Есть сервер ФРЯ в нем 2 сетевухи одна в локальную сеть RL1(192.168.0.254 и 192.168.1.254 два адреса) а вторая RL0(192.168.2.2) включена в АДСЛ модем (модем в режиме бриджа 192.168.2.1). Сервер поднимает ПППоЕ tun0 и получает реальный IP но динамический. Примерно раз в сутки Укртелеком обрывает связь и после востановления ПППоЕ tun0 получает новый реальный IP .

Роль сервера : на нем поднят Сквид и идет раздача инета , Поднят Апач, Почта, ДНС, пользователь локальный 192.168.1.100 должен иметь доступ к внешнему РОР3 и СМТП, также разрешон доступ извне для SSH

Подскажите как настроить правильно IPFW при динамическом IP tun0. А лучше всего Выложите свои правила по возможности с комментариями.
Спасибо за помощь

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Настройка IPFW ADSL bridge

Непрочитанное сообщение paradox » 2009-10-28 16:15:56

полно на форуме
ищите

Гость
проходил мимо

Re: Настройка IPFW ADSL bridge

Непрочитанное сообщение Гость » 2009-10-28 18:48:22

Убире адрес с сетевухе каторая смотрит в модем вообще...
и в фаерволе нечего про неё не указывай а строй конфиу на основе tun0

вот пример скромно но запреты сам выставишь

Код: Выделить всё

#!/bin/sh	
ipfw="/sbin/ipfw"
LanOut="tun0"
NetOut="0/32"
IpOut="x.x.x.x"  // параметр не обезательный сматря какие цели
LanIn1="vr0"

NetIn="192.168.1.0/24"

${ipfw} -f flush

${ipfw} add 130 deny ip from any to ${IpOut} 21,22,135-139,443,445 via ${LanOut}  // здеть тоже ip необезательно  
${ipfw} add 200 allow ip from any to any via lo0                                                                                    
${ipfw} add 300 deny ip from ${NetIn} to any in via ${LanOut}
${ipfw} add 310 deny ip from ${NetOut} to any in via ${LanIn1}
${ipfw} add 1200 allow ip from any to any via ${LanIn1}
${ipfw} add 65535 deny ip from any to any


igorlviv2
проходил мимо

Re: Настройка IPFW ADSL bridge

Непрочитанное сообщение igorlviv2 » 2009-10-29 9:48:11

Спасибо за ответ!!
Идею понял
Однозначно так и сделаю. Как я понял
LanOut="tun0" интерфейс ПППоЕ
NetOut="0/32" диапозон

LanIn1="vr0" интерфейс карты в локальную сеть
NetIn="192.168.1.0/24" адресное пространство локальной сети

вопрос
IpOut="x.x.x.x" это адрес ПППоЕ но он динамичный, я же незнаю каким он будет, как я могу его прописать? У меня на сервере поднят DyDNS но он сопоставляет мой IP и мое доменное имя (DyDNS) только после поднятия ПППоЕ и то намного подже минуты через 3-4.
И как быть если провайдер раз в сутки рвет ПППоЕ и после востановления связи у меня новый Адрес, как сделать чтоб правила обновлялись если внешний IP изменился


В принципе задача довольно таки типичная (просто я пока ламер)
Но хотелось бы еще примеров.

RAGNAR
ст. прапорщик
Сообщения: 530
Зарегистрирован: 2009-07-10 22:12:06
Откуда: Ржев
Контактная информация:

Re: Настройка IPFW ADSL bridge

Непрочитанное сообщение RAGNAR » 2009-10-29 17:25:18

В место него можно указать диапозон адресов например 94.220.0.0/16 это значит (94.22.0.0 - 94.220.255.254 )
или 94.220.53.0/24 ( 94.220.53.0-94.220.53.254) маска разная в зависимости от диапазона выдаваемых адресов
... Да освятится имя твое и pасшиpение твое, Господи...

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35266
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Настройка IPFW ADSL bridge

Непрочитанное сообщение Alex Keda » 2009-10-30 10:15:40

раз в минуту, по планировщику

Код: Выделить всё

p3-800# more /root/scripts/get.address.sh
#!/bin/sh

tmp="/tmp/$$.txt"
ip_file="/tmp/ip.txt"
old_ip_file="/tmp/ip.old.txt"
mask_file="/tmp/mask.txt"
fake_file="/tmp/ip.fake.txt"
iface="em0"

/sbin/ifconfig $iface | /usr/bin/grep inet | /usr/bin/awk '{print $2}' > $tmp

if test -s $tmp
then
        cat $tmp > $ip_file
        # ip addresses logging
        date=`/bin/date "+%Y-%m-%d %H:%M:%S"`
        ip="`cat $tmp`"
        echo $date $ip >> /root/scripts/ip.addresses.logging.txt

        /sbin/ifconfig $iface | /usr/bin/grep inet | /usr/bin/awk '{print $4}' > $mask_file
        /usr/bin/touch $old_ip_file
        # diff old and new file
        /usr/bin/diff $ip_file $old_ip_file >/dev/null
        if [ x$? = x1 ]
        then
                # copy new file to old
                cp $ip_file $old_ip_file
                # restart firewall if address != 0.0.0.0
                if [ `cat $ip_file` != "0.0.0.0"
                then
                        sh /etc/rc.firewall.main
                fi
        fi
        # delete fake file
        rm -f $fake_file
else
        # no IP addresses - set fake address
        if test ! -f $fake_file
        then
                echo 1.1.1.1 > $ip_file
                echo 255.255.255.255 > $mask_file
                sh /etc/rc.firewall.main
                rm -f $ip_file
                echo 1.1.1.1 > $fake_file
        fi
fi


rm -f $tmp

Код: Выделить всё

p3-800# cat /etc/rc.firewall.main
#!/bin/sh

# vvodim peremennie:

FwCMD="/sbin/ipfw"
LanOut="em0"
LanIn="em1"
LanWiFi="ath0"
LanTunnel="gif0"
#IpOut="10.21.64.215"
IpOut="`cat /tmp/ip.txt`"
IpIn="192.168.254.254"
NetMask="24"
NetIn="192.168.254.0"
#NetOut="10.21.64.0"
NetOut="$IpOut/`cat /tmp/mask.txt`"
NetInWiFi="192.168.253.0"
# rule top for natd
TopRule="2300"

# disable
${FwCMD} disable firewall
# sbrasivaem ranee ustanowlennie prawila:
${FwCMD} -f flush
${FwCMD} -f pipe flush
${FwCMD} -f queue flush
${FwCMD} -f table 0 flush

####### DUMMYNET ###################
#${FwCMD} add pipe 1 ip from me 21 to any
#${FwCMD} pipe 1 config bw 1000000
#${FwCMD} add pipe 2 ip from ${IpIn} to ${NetIn}/${NetMask}
#${FwCMD} pipe 2 config bw 1000Mbit/s
#${FwCMD} add pipe 3 ip from ${NetIn}/${NetMask} to me
#${FwCMD} pipe 3 config bw 1000Mbit/s
# `спецтруба` для мелкиз пакетов типа ack - ибо если они теряются
#${FwCMD} add pipe 4 ip from any to any tcpflags ack iplen 0-128
#${FwCMD} pipe 4 config bw 1000Mbit/s
# Пропускаем следующие трубы - чтобы мелкие пакеты не лимитировались
#${FwCMD} add skipto 39999 ip from any to any tcpflags ack iplen 0-128
# От глюков при работе с серваком изнутри по внешнему имени (траффик в трубы лезет)
#${FwCMD} add skipto 39999 ip from me to any
#${FwCMD} add skipto 39999 ip from any to me

# Рубаем самому себе инет - слишком быстно - плохо...
#${FwCMD} add pipe 5 ip from not ${NetIn}/24 to ${NetIn}/24
#${FwCMD} pipe 5 config bw 1280000bit/s


# WiFi

# proveryaem vremennie pravila:
${FwCMD} add check-state

# razreschaem vnutrenniy interfeys
${FwCMD} add allow ip from any to any via lo0

# rulezz for sshit table
${FwCMD} add deny not icmp from "table(0)" to me

# ipsec
${FwCMD} add pass esp from 192.168.253.253 to me via ${LanWiFi}
${FwCMD} add pass esp from me to 192.168.253.253 via ${LanWiFi}
${FwCMD} add pass log udp from 192.168.253.253 500 to me 500 via ${LanWiFi}
${FwCMD} add pass log udp from me 500 to 192.168.253.253 500 via ${LanWiFi}
#${FwCMD} add pass all from any to any via ${LanTunnel}



#${FwCMD} add allow ip from 80.253.9.18 to ${IpOut} via ${LanTunnel}
#${FwCMD} add allow ip from ${IpOut} to 80.253.9.18 via ${LanTunnel}
#${FwCMD} add allow ipencap from ${IpOut} to 80.253.9.18
#${FwCMD} add allow ipencap from 80.253.9.18 to ${IpOut}
#${FwCMD} add allow udp from ${IpOut} to 80.253.9.18 isakmp
#${FwCMD} add allow udp from 80.253.9.18 to ${IpOut} isakmp
#${FwCMD} add allow esp from ${IpOut} to 80.253.9.18
#${FwCMD} add allow esp from 80.253.9.18 to ${IpOut}
#${FwCMD} add allow ip from any to any via ${LanTunnel}
#${FwCMD} add allow ip from 192.168.11.0/${NetMask} to any via ${LanTunnel}
#${FwCMD} add allow ip from 192.168.0.0/16 192.168.11.0/${NetMask} via ${LanTunnel}

# zapres4aem:
${FwCMD} add deny log ip from 192.168.0.0/16 to any in via ${LanOut}
${FwCMD} add deny log ip from 172.16.0.0/12 to any in via ${LanOut}
#${FwCMD} add deny ip from 10.0.0.0/8 to any in via ${LanOut}
#${FwCMD} add deny ip from any to ${NetIn}/${NetMask} via ${LanOut}
${FwCMD} add deny log tcp from any to any 135-140 via ${LanOut}
${FwCMD} add deny log tcp from any 135-140 to any via ${LanOut}
${FwCMD} add deny log tcp from any 445 to any via ${LanOut}
${FwCMD} add deny tcp from any to ${IpOut} 21 via ${LanOut}
${FwCMD} add deny log tcp from any to ${IpOut} 144-1026 via ${LanOut}
${FwCMD} add deny log tcp from any 3000-3001 to any via ${LanOut}
${FwCMD} add deny log tcp from any to any 3000-3001 via ${LanOut}
${FwCMD} add deny log tcp from any to ${IpOut} 3306 via ${LanOut}

# established connections on external interface
${FwCMD} add allow tcp from me to any established via ${LanOut}


# otprawlyaem vseh na SQUID:
#${FwCMD} add fwd 192.168.254.254,2121 tcp from ${NetIn}/${NetMask} to any 21 via ${LanOut}
${FwCMD} add fwd 127.0.0.1,3128 tcp from ${NetIn}/${NetMask} to any 80 via ${LanOut}
${FwCMD} add fwd 127.0.0.1,3128 tcp from ${NetInWiFi}/${NetMask} to any 80 via ${LanOut}
#${FwCMD} add fwd 127.0.0.1,3128 tcp from 192.168.252.253 to any 90 via ${LanOut}

##########  NATD #########
# пропускаем - может прокатит для ftp...
#${FwCMD} add skipto ${TopRule} tcp from me 21 to any out via ${LanOut}
${FwCMD} add divert natd ip from ${NetIn}/${NetMask} to any out via ${LanOut}
${FwCMD} add divert natd ip from ${NetInWiFi}/${NetMask} to any out via ${LanOut}
${FwCMD} add divert natd ip from 192.168.252.0/24 to any out via ${LanOut}
${FwCMD} add divert natd ip from any to ${IpOut} in via ${LanOut}

# разрешаем инет посторонним
${FwCMD} add allow ip from any to not me via ${LanWiFi}
${FwCMD} add allow ip from not me to any via ${LanWiFi}
${FwCMD} add allow udp from any to me 53 via ${LanWiFi}
${FwCMD} add allow udp from me 53 to any via ${LanWiFi}
${FwCMD} add allow tcp from any to not me via ${LanWiFi}
${FwCMD} add allow tcp from not me to any via ${LanWiFi}

########## VPN ###################
#${FwCMD} add allow tcp from any to any 1723 # ампутировано, т.к. мешает
#${FwCMD} add allow tcp from any 1723 to any # работе VPN изнутри
${FwCMD} add allow gre from any to any via ${LanOut}
${FwCMD} add allow gre from any to any via ${LanIn}
${FwCMD} add allow gre from any to any via ${LanTunnel}

#############################################################################
${FwCMD} add allow tcp from any to any established      # on all interfaces
${FwCMD} add allow ip from me to any out xmit ${LanOut}
${FwCMD} add allow udp from any 53 to any via ${LanOut}
${FwCMD} add allow udp from any 123 to any via ${LanOut}
${FwCMD} add allow icmp from any to any icmptypes 0,8,11
#${FwCMD} add allow tcp from any to ${IpOut} 80 via ${LanOut}
#${FwCMD} add allow tcp from any to ${IpOut} 25 via ${LanOut}
${FwCMD} add allow tcp from any to ${IpOut} 22,22022 via ${LanOut}
${FwCMD} add allow udp from any to me 161
#${FwCMD} add allow tcp from any to ${IpOut} 143 via ${LanOut}
#${FwCMD} add allow tcp from any to ${IpOut} 110 via ${LanOut}
${FwCMD} add allow tcp from any to any via ${LanIn}
${FwCMD} add allow tcp from any to any via ${LanTunnel}
${FwCMD} add allow udp from any to any via ${LanIn}
${FwCMD} add allow udp from any to any via ${LanTunnel}
${FwCMD} add allow icmp from any to any via ${LanIn}
${FwCMD} add allow icmp from any to any via ${LanTunnel}
#${FwCMD} add allow tcp from any to ${IpOut} 21 via ${LanOut}
${FwCMD} add allow tcp from any to ${IpOut} 40000-65534 via ${LanOut}

# добавлено для ipnat
#${FwCMD} add allow tcp from ${NetIn}/${NetMask} to any setup

${FwCMD} add 65534 deny log all from any to any

${FwCMD} enable firewall
несколько раз в сутки делаю так

Код: Выделить всё

# restart firewall
6       */2     *       *       *       /bin/sh /etc/rc.firewall.main >/dev/null 2>&1
сервер необслуживаемый, стоит на антресолях.
три месяца - полёт нормальный.
писалось на скору руку.
Убей их всех! Бог потом рассортирует...

RAGNAR
ст. прапорщик
Сообщения: 530
Зарегистрирован: 2009-07-10 22:12:06
Откуда: Ржев
Контактная информация:

Re: Настройка IPFW ADSL bridge

Непрочитанное сообщение RAGNAR » 2009-10-30 12:25:37

у меня ipnat и без этой строки работает , смысел её?

# добавлено для ipnat
#${FwCMD} add allow tcp from ${NetIn}/${NetMask} to any setup
... Да освятится имя твое и pасшиpение твое, Господи...

wp2
рядовой
Сообщения: 42
Зарегистрирован: 2009-10-25 2:26:03

Re: Настройка IPFW ADSL bridge

Непрочитанное сообщение wp2 » 2009-10-30 16:13:03

что-то вы забыли про ppp.linkup и ppp.linkdown

в этих файлах можно прописать скрипт, который будет выполняться каждый раз при поднятии/упадка tun0

ну а в том скрипте, просто обновлять правила фаервола. С нужными IP

igorlviv2
проходил мимо

Re: Настройка IPFW ADSL bridge

Непрочитанное сообщение igorlviv2 » 2009-11-12 9:32:52

Спасибо много прояснило