The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"запуск PF после получения IP"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Открытые системы на сервере (Firewall, Фильтрация пакетов / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"запуск PF после получения IP"  +/
Сообщение от sv_igor email(ok) on 05-Мрт-10, 17:46 
Здравствуйте.

Есть сервер, который через DHCP получает айпишник у провайдера, соответственно после перезагрузки у меня не корректно стартует pf и правила не загружаются. Я заметил это изза того что на момент запуска - PF не знает айпишника интерфейса. После загрузки операционки приходится вручную писать запуск правил - pfctl -f /etc/pf.rules в консоле.
Подскажите как запустить PF после получения айпишника...
Кроме как в rc.local дописывать pfctl -f /etc/pf.rules - есть какието другие варианты, как "корректно" это в конфигах указать?
в rc.conf:
pf_enable="YES"
ifconfig_xl0="DHCP"

Операционка FreeBSD 7.1

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "запуск PF после получения IP"  +/
Сообщение от sage444 (ok) on 05-Мрт-10, 17:57 
>[оверквотинг удален]
>знает айпишника интерфейса. После загрузки операционки приходится вручную писать запуск правил
>- pfctl -f /etc/pf.rules в консоле.
>Подскажите как запустить PF после получения айпишника...
>Кроме как в rc.local дописывать pfctl -f /etc/pf.rules - есть какието другие
>варианты, как "корректно" это в конфигах указать?
>в rc.conf:
>pf_enable="YES"
>ifconfig_xl0="DHCP"
>
>Операционка FreeBSD 7.1

1. читайте мануал - ситуация не новая
2. покажите правила

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "запуск PF после получения IP"  +/
Сообщение от sv_igor email(ok) on 05-Мрт-10, 18:05 
>1. читайте мануал - ситуация не новая

Что именно там читать? там есть гдето информация как запустить pf после получения DHCP?
>2. покажите правила

хммм, а зачем-то правила?
Ладно вот держите

#-------------------------
# Variables and Macros
#-------------------------

# interfaces
inet_if = "tun0"
ext_if = "xl0"
int_if = "em0"
# Block connections
connblk = "synproxy state ( max-src-conn-rate 5/60, overload <BRUTEFORCERS> flush global )"
icmp_types="{ echoreq, unreach }"

#-------------------------
# ip addresses
#-------------------------

extnet = "{ 10.0.0.0/8, 192.168.252.0/24 }"
lannet = "{ 192.168.0.0/24, 192.168.2.0/24 }"
ext_ip = "195.хх.хх.хх"
server = "192.168.0.1"
private_nets = "{ 127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 \
                169.254.0.0/16, 192.0.2.0/24, 0.0.0.0/8, 224.0.0.0/4 }"

#--------------------------
# Tables
#--------------------------

table <uaix> persist file "/etc/pf/prefixes.txt"
table <BRUTEFORCERS> persist

#-------------------------
# Ports
#-------------------------

sshlhc = "52222"
sshserver = "53232"
tcp_ports = "{ smtp, pop3, ftp, ftp-data, domain, 8339, 3333 }"
udp_ports = "{ domain, smtp, ftp, ftp-data }"

#-------------------------
# Options
#-------------------------

# Default policy
set block-policy return
# Type of optimization
#set optimization normal
# State-policy
#set state-policy floating
# skip pf on lo0 interface
set skip on lo0
#timeout to tcp packets
set timeout { frag 10, tcp.established 3600 }
# Normaliztion for all interfaces
scrub in all

#-------------------------
# Queue & Speed Control
#-------------------------

#%A

#%Q

#--------------------------
# NAT & Redirect
#--------------------------

# Nat from local net to inet
nat on $inet_if from $lannet to any -> $ext_ip
# Nat from local net to ext_net
nat on $ext_if from $lannet to $extnet -> ($ext_if)
# Redirect ports
# For Active FTP sessions
nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"
rdr on $int_if proto tcp from any to ! (self) port 21 -> 127.0.0.1 port 8021
# to server ssh
rdr proto tcp from any to $ext_ip port $sshserver -> $server port ssh
# to igor
rdr proto tcp from any to $ext_ip port 44990 -> 192.168.0.8 port rdp
rdr proto tcp from any to $ext_ip port 28188 -> 192.168.0.8 port 28188
# to virtual terminal server1
rdr proto tcp from any to $ext_ip port 44991 -> 192.168.0.17 port 3389
# to virtual terminal server2
rdr proto tcp from any to $ext_ip port 44992 -> 192.168.0.9 port 3389

#--------------------------
# Filter Rules
#--------------------------

# Block all
block all
# IGMP IPTV
pass quick on { $ext_if $int_if } proto igmp allow-opts no state
pass quick proto udp from 192.168.252.0/24 to any allow-opts no state
# Antispoof
antispoof quick for { lo0, $int_if, $ext_if, $inet_if }
# Block all from inet to private networks via internet interface
block drop in quick on $inet_if from $private_nets to any
# Block all from lan with non-lan ip's
# !!!!!!!!!!!!!!!! UNCOMMENT when lhc should be in 192.168.0.0/24 network
#block drop in log quick on $int_if from !$int_if:network to any
# Block all spammers
block drop log quick from <BRUTEFORCERS>

#-----------------------
# In Connections
#-----------------------

# pass all connections from our lan to server
pass in on $int_if from $lannet to $int_if keep state
# pass tcp ports from inet
pass in proto tcp to $inet_if port $tcp_ports keep state
# pass for ssh lhc
pass in log proto tcp to $inet_if port $sshlhc $connblk
# pass udp ports from inet
pass in proto udp to $inet_if port $udp_ports keep state
# for ftp
pass in on $inet_if proto tcp from any to any port > 49151 keep state
# allow from lannet to extnet
pass in from $lannet to $extnet keep state
# allow pings from inet
pass in on $inet_if inet proto icmp from any to $inet_if icmp-type $icmp_types keep state
# block smtp connections to inet
block in quick log on $int_if proto tcp from $lannet to ! $int_if port 25

#--------------------------
# Out Connections
#--------------------------

#for lan
pass out from $int_if to $lannet keep state
#for tenet
pass out from $ext_if to $extnet keep state
#for inet
pass out from $inet_if keep state

#--------------------------
# Rules for rdr
#--------------------------

# Allow rpd to corei5
pass in log on $inet_if proto tcp from any to 192.168.0.8 port rdp keep state
# rdp to virtual server1
pass in log on $inet_if proto tcp from any to 192.168.0.17 port rdp keep state
# rdp to virtual server2
pass in log on $inet_if proto tcp from any to 192.168.0.9 port rdp keep state
# Allow rpd to 192.168.0.1 ssh
pass in log on $inet_if proto tcp from any to 192.168.0.1 port ssh $connblk
# For FTP PROXY
anchor "ftp-proxy/*"

#--------------------------
# тут даем инет юзерам
#--------------------------

Собственно на момент запуска (при pf_enable="YES") он ругается что нет айпишника у ext_if

где еще можно посмотреть какие флаги можно дать скушать pf ? pf_flags

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "запуск PF после получения IP"  +/
Сообщение от sage444 (ok) on 05-Мрт-10, 20:45 
>[оверквотинг удален]
>хммм, а зачем-то правила?
>Ладно вот держите
>
>#-------------------------
># Variables and Macros
>#-------------------------
>
># interfaces
>inet_if = "tun0"
>ext_if = "xl0"

напишите ext_if = "(xl0)" почему так - читайте в мануале
>[оверквотинг удален]
>connblk = "synproxy state ( max-src-conn-rate 5/60, overload <BRUTEFORCERS> flush global )"
>icmp_types="{ echoreq, unreach }"
>
>#-------------------------
># ip addresses
>#-------------------------
>
>extnet = "{ 10.0.0.0/8, 192.168.252.0/24 }"
>lannet = "{ 192.168.0.0/24, 192.168.2.0/24 }"
>ext_ip = "195.хх.хх.хх"

и вроде как ір вам известен изначально ?
ну да ладно -- ваши правила - вам виднее;))
>server = "192.168.0.1"

[cut]

>Собственно на момент запуска (при pf_enable="YES") он ругается что нет айпишника у
>ext_if
>где еще можно посмотреть какие флаги можно дать скушать pf ? pf_flags

еще если почитать man rc.conf то узнаете про up-script'ы имхо тоже выход

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "запуск PF после получения IP"  +/
Сообщение от sv_igor email(ok) on 05-Мрт-10, 21:27 
>напишите ext_if = "(xl0)" почему так - читайте в мануале

При таком раскладе - пишет куча ошибок в синтаксисе....так-то

>и вроде как ір вам известен изначально ?

да известен, но он может измениться....
>ну да ладно -- ваши правила - вам виднее;))

и тем более заметил что он ругается на интерфейс tun0 - т.к. у него нет айпишника
(tun0) пробовал писать - не помогало. Tun0 получает адрес когда соединяется через pppoe
тоже на синтаксис ругалось

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "запуск PF после получения IP"  +/
Сообщение от sage444 (ok) on 05-Мрт-10, 21:35 
>[оверквотинг удален]
>
>>и вроде как ір вам известен изначально ?
>
>да известен, но он может измениться....
>>ну да ладно -- ваши правила - вам виднее;))
>
>и тем более заметил что он ругается на интерфейс tun0 - т.к.
>у него нет айпишника
>(tun0) пробовал писать - не помогало
>тоже на синтаксис ругалось

постом выше вы писали что проблема с ext_if (xl0) теперь уже проблема с tun0

определитесь у вас динамический ір на xl0  или интерфейс tun0 создается динамически ?

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

6. "запуск PF после получения IP"  +/
Сообщение от sv_igor email(ok) on 05-Мрт-10, 21:46 
>[оверквотинг удален]
>>и тем более заметил что он ругается на интерфейс tun0 - т.к.
>>у него нет айпишника
>>(tun0) пробовал писать - не помогало
>>тоже на синтаксис ругалось
>
>постом выше вы писали что проблема с ext_if (xl0) теперь уже проблема
>с tun0
>
>определитесь у вас динамический ір на xl0  или интерфейс tun0 создается
>динамически ?

вначале я писал xl0 это ради примера, но вы уже попросили полный конфиг....

Вообщем сейчас ситуация такая, что ругается на tun0...и он создается динамически при поднятии сессии pppoe

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

7. "запуск PF после получения IP"  +/
Сообщение от sage444 (ok) on 05-Мрт-10, 22:17 
>Вообщем сейчас ситуация такая, что ругается на tun0...и он создается динамически при
>поднятии сессии pppoe

ppp? умеет запускать скрипты после поднятия интерфейса.

потому если чтоб-красиво создать два набора правил
- один минимальный загружаете при старте системы
- второй - из скрипта при поднятии интерфейса

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру