[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Openbsd 3.4 pf ppp et accessoirement les queues
Bonjour à tous,
Je tourne sous openbsd depuis la 2.9 et j'ai de nombreux problèmes sur
la 3.4.
Le autres ferons l'objet d'autres mails, mais d'abord:
J'ai un firewall/nat en 3.4 connecté à l'adsl via la célèbre raie
alcatel speedtouch USB avec les drivers sourceforge et pppoa 2 lancés
via rc.local. Ip dynamique. une carte wifi et une carte ethernet.
De manière relativement aléatoire (disons tous les deux jours) mais
manifestement au moment du changement d'ip mes règles nat ne
fonctionnent plus mes maj de redirection dynamique ne passent plus et,
un peu moins souvent, mon serveur devient carrément inaccessible via
toutes les interfaces (internes et externe).
quand le nat ne fonctionne plus et que je peu tout de même accéder via
ssh à la carte ethernet je constate avec un:
pfctl -s nat
que tun0 contient ancore l'ancienne adresse ip et tout rentre dans
l'ordre quand je fais un:
pfctl -F nat -f /etc/pf.conf
Lorsqu'il n'est plus joignable depuis l'interface interne je ne sais pas
ce qui arrive (je n'ai pas d'écran sur cette machine) mais je vais y
remédier.
c'est peut être à cause du wifi?? il me fais souvent: /bsd: wi0: device
timeout (la borne est loin ??)
Je comptait sur ppp.linkup pour contourner le problème et faire un pfctl
-F all -f /etc/pf.conf mais je n'arrive pas à l'exécuter (j'ai essayé
plusieurs syntaxes de plusieurs exemples).
D'abord est-ce que c'est normal d'être obliger de flusher?
*Quelqu'un pourrait-il me donner la bonne syntaxe pour exécuter quelque
chose dans ppp.linkup?*
déjà essayé:
adsl:
! sh -c "/sbin/pfctl -F all -f /etc/pf.conf"
et !bg /sbin/pfctl -F all -f /etc/pf.conf
-> marche pas
Sinon vous vous faites comment avec une ip dynamique, pf/nat et ppp
(j'ai vagement aperçu que certain faisaient du nat dans la conf ppp?ça
marche avec openbsd?)?
Voici mon pf.conf, y-t-il un anomalie (si vous avez des suggestion en
particulier sur hfsc elles sont les bienvenues, notez que certaines
règles n'existent que pour leur affecter des queues)
ext_if="tun0" # replace with actual external interface name i.e., dc0
int_if="rl0" # replace with actual internal interface name i.e., dc1
wifi="wi0" # le wifi
set timeout { interval 30, frag 10 }
set timeout { tcp.first 120, tcp.opening 30, tcp.established 86400 }
set timeout { tcp.closing 900, tcp.finwait 45, tcp.closed 90 }
set timeout { udp.first 60, udp.single 30, udp.multiple 60 }
set timeout { icmp.first 20, icmp.error 10 }
set timeout { other.first 60, other.single 30, other.multiple 60 }
set limit { states 10000, frags 5000 }
set loginterface $ext_if
set optimization aggressive
#on normalise
scrub in all
#on defini des queues pour la gestion de la bande passant et on leur
affecte une priorité (notez que dans le howto de pf tous les exemples de
synthaxe pour les queues sont faux!!!!!)
altq on tun0 priq queue { up_vulgate, up_wire, up_server }
queue up_vulgate priq(default)
queue up_wire priority 9
queue up_server priority 15
# #ici des priorités qui ne fonctionnent pas encore parce que je n'ai
pas trouvé la bonne syntaxe et que hfsc n'est pas du tout documenté ->si
vous avez des suggestions...
#altq hfsc bandwith 100% queue { bw_wlan, bw_wire, bw_serv }
#queue bw_wlan hfsc(default)
#queue bw_wire priority 3 hfsc(realtime 40%)
#queue bw_serv priority 7 hfsc(realtime 20%)
# on active la fonction passerelle/network adress translation pour les
réseaux interne et wifi
nat on tun0 from $int_if:network to any -> tun0
nat on tun0 from $wifi:network to any -> tun0
#aprés les options, les queues, la translation, voici les règles
#D'abord les règles de bases: NON
block in log all
block out all
pass quick on lo0 all keep state
antispoof quick for { $wifi, $int_if } inet
#on permet tous types de protocoles d'accéder à internet depuis le wifi
et le réseau interne
pass in on $int_if from $int_if:network to any
pass out on $int_if from any to $int_if:network # queue bw_wire
#on blocque tout de même pour les hosts du réseau wifi l'accés direct au
serveur et l'accés au réseau interne (je sais sert à rien)
block in quick on $wifi from any to { $wifi, $int_if:network }
pass in on $wifi from $wifi:network to any
pass out on $wifi from any to $wifi:network
#et on limite la bande passant par réseau comme défini plus haut
pass out on $ext_if from $int_if:network to any keep state queue up_wire
pass out on $ext_if from $wifi:network to any keep state
pass out on $ext_if proto tcp from $ext_if port { 80, 443 }to any queue
up_server
#bon la ligne juste en dessous n'existe que parceque j'ai besoin de tous
les types de protocoles depuis ce serveur pour la maintenance et le scan
(au cas où)
pass out on $ext_if from $ext_if to any keep state
#mais on authorise les connexions au site web et l'accés ssh
pass in on $ext_if proto tcp from any to $ext_if port { 80, 443, 22 }
flags S/SA keep state # queue bw_serv
#divers: client noip, dhcp, dns
pass out on $ext_if proto tcp from $ext_if to any port 8245 keep state
pass in on $ext_if proto udp from any to $ext_if port 68
pass out on $ext_if proto udp from { $ext_if, $int_if:network,
$wifi:network } to any port 53 keep state
(END)
Merci D'avance et désolé pour la longueur
Olivier H.