Код: Выделить всё
[root@gh_gate /etc]# uname -a
FreeBSD gh_gate.home 7.0-RELEASE FreeBSD 7.0-RELEASE #4: Mon Dec 1 23:15:46 UTC 2008 ghopper@gh_gate.home:/usr/src/sys/i386/compile/gh_kernel i386Код: Выделить всё
[root@gh_gate /etc]# cat /usr/src/sys/i386/conf/gh_kernel
...
# PF
device pf
device pflog
device pfsync
options ALTQ
options ALTQ_CBQ # Class Bases Queuing (CBQ)
options ALTQ_RED # Random Early Detection (RED)
options ALTQ_RIO # RED In/Out
options ALTQ_HFSC # Hierarchical Packet Scheduler (HFSC)
options ALTQ_PRIQ # Priority Queuing (PRIQ)
options ALTQ_NOPCC # Required for SMP build
##
options NETGRAPH
options NETGRAPH_BPF
options NETGRAPH_BRIDGE
options NETGRAPH_DEVICE
options NETGRAPH_ECHO
options NETGRAPH_EIFACE
options NETGRAPH_ETHER
options NETGRAPH_IFACE
options NETGRAPH_KSOCKET
options NETGRAPH_L2TP
options NETGRAPH_MPPC_ENCRYPTION
options NETGRAPH_NETFLOW
options NETGRAPH_ONE2MANY
options NETGRAPH_PPP
options NETGRAPH_PPPOE
options NETGRAPH_PPTPGRE
options NETGRAPH_SOCKET
options NETGRAPH_TCPMSS
options NETGRAPH_TEE
options NETGRAPH_TTY
options NETGRAPH_VJC
#options NETGRAPH_IPFW
#options NETGRAPH_NAT
## ipfw options
#options IPFIREWALL
#options IPFIREWALL_VERBOSE
#options IPFIREWALL_VERBOSE_LIMIT=1000
#options IPDIVERT
#options DUMMYNETКод: Выделить всё
[root@gh_gate /etc]# cat /etc/pf.conf1
icmp_types="{echoreq, unreach}"
block on rl0 all
pass out on rl0 keep state
pass in on rl0 inet proto icmp all icmp-type $icmp_types
#pass in on rl0 inet proto tcp from any to any port 22
anchor goodguys
[root@gh_gate /etc]# pfctl -n -f /etc/pf.conf
[root@gh_gate /etc]# pfctl -f /etc/pf.conf
[root@gh_gate /etc]# pfctl -sr
block drop on rl0 all
pass out on rl0 all flags S/SA keep state
pass in quick on rl0 inet proto icmp all icmp-type echoreq keep state
pass in quick on rl0 inet proto icmp all icmp-type unreach keep state
anchor "goodguys" all
[root@gh_gate /etc]# pfctl -a goodguys:ssh -sr
pfctl: DIOCGETRULES: Invalid argumentКод: Выделить всё
ghopper@main ~ $ ping 192.168.0.1
ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=0.302 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=0.212 ms
--- 192.168.0.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.212/0.257/0.302/0.045 ms
ghopper@main ~ $ ssh ghopper@192.168.0.1
ssh: connect to host 192.168.0.1 port 22: Connection timed outКод: Выделить всё
[root@gh_gate /etc]# echo "pass in on rl0 proto tcp from any to any port 22" | pfctl -a goodguys:ssh -f -
[root@gh_gate /etc]# pfctl -a goodguys:ssh -sr
pass in on rl0 proto tcp from any to any port = ssh flags S/SA keep stateКод: Выделить всё
ghopper@main ~ $ ssh ghopper@192.168.0.1
ssh: connect to host 192.168.0.1 port 22: Connection timed outКод: Выделить всё
[root@gh_gate /etc]# cat pf.conf
icmp_types="{echoreq, unreach}"
block on rl0 all
pass out on rl0 keep state
pass in on rl0 inet proto icmp all icmp-type $icmp_types
pass in on rl0 inet proto tcp from any to any port 22
anchor goodguys
[root@gh_gate /etc]# pfctl -f /etc/pf.confP.S. Изучаю PF с http://www.opennet.ru/base/net/pf_faq.txt.html
P.P.S. На самом деле у меня ситуация намного запутаннее - два провайдера (PPPOE,PPTP) и сеть с клиентами (PPTP). Нужно для каждого поднятого тоннеля динамически добавлять новые правила.
