mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-17 00:44:33 +00:00
d1142aa073
Those documentations provide nothing to users nor contributors but at least now I know where they are.
102 lines
3.0 KiB
Plaintext
102 lines
3.0 KiB
Plaintext
Nécessite CAP_NET_ADMIN (12)
|
|
On peut donc aussi mettre CAP_NET_BIND_SERVICE (10) pour autoriser les ports < 1024
|
|
|
|
|
|
charger le module :
|
|
# modprobe ip_conntrack hashsize=65536
|
|
# modprobe iptable_tproxy hashsize=65536
|
|
# echo 15 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_time_wait
|
|
# echo 30 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_fin_wait
|
|
|
|
|
|
Si on utilise "usesrc client", alors on rencontre ce problème en cas
|
|
de réutilisation d'un port :
|
|
|
|
# dmesg
|
|
IP_TPROXY: error applying NAT mapping, hooknum=4 0103000a:e5a2 -> 05000001:d204
|
|
IP_TPROXY: error applying NAT mapping, hooknum=4 0103000a:e5a2 -> 05000001:d204
|
|
|
|
Solution retenue pour la configuration :
|
|
|
|
You have to write "usesrc XXXX" on the "source" line. "XXXX" is either
|
|
an IP address or the keyword "clientip" to reuse the client's IP with
|
|
a dynamically allocated port, or "client" to reuse both the client's IP
|
|
and port (dangerous). But due to the way cttproxy works, the source address
|
|
is mandatory. Eg:
|
|
|
|
backend static
|
|
source 192.168.1.254 usesrc clientip
|
|
server static1 192.168.1.10 source 192.168.1.254 usesrc clientip
|
|
|
|
|
|
---- Anciennes réflexions ----
|
|
|
|
Il faudrait donc peut-être toujours avoir un port dynamique, ou bien
|
|
traiter le TIME_WAIT correctement en appliquant natdel => corrige pratiquement
|
|
toujours le problème (mais réduire les timeouts semble important)
|
|
|
|
|
|
source 10.1.2.3 present 10.2.3.4
|
|
source 10.1.2.3 present same_ip
|
|
source 10.1.2.3 present same
|
|
source 10.1.2.3:5000 present same
|
|
|
|
source 10.1.2.3 appear_as 10.2.3.4
|
|
source 10.1.2.3 appear_as same_ip
|
|
source 10.1.2.3 appear_as same
|
|
source 10.1.2.3:5000 appear_as same
|
|
|
|
source 10.1.2.3 {keepsrc | keepip | usesrc 1.2.3.4}
|
|
|
|
source 10.1.2.3 snat { client | clientip | 1.2.3.4 }
|
|
source 10.1.2.3 extbind same
|
|
source 10.1.2.3 intercept same
|
|
source 10.1.2.3 spoof same
|
|
source 10.1.2.3 showsrc same
|
|
source 10.1.2.3 usesrc same
|
|
source 10.1.2.3 setsrc same
|
|
source 10.1.2.3 withsrc same
|
|
source 10.1.2.3 usesrc clientip:sameport
|
|
source 10.1.2.3 alias same
|
|
source 10.1.2.3 as same
|
|
source 10.1.2.3 outgoing same
|
|
source 10.1.2.3 public same
|
|
source 10.1.2.3:5000 pretend same
|
|
|
|
source 10.1.2.3=same
|
|
source 10.1.2.3=10.2.3.4
|
|
|
|
source 10.1.2.3^same
|
|
source 10.1.2.3^10.2.3.4
|
|
|
|
source 10.1.2.3@same
|
|
source 10.1.2.3@10.2.3.4
|
|
|
|
source 10.1.2.3!same
|
|
source 10.1.2.3!10.2.3.4
|
|
|
|
source 10.1.2.3|same
|
|
source 10.1.2.3|10.2.3.4
|
|
|
|
source 10.1.2.3(same)
|
|
source 10.1.2.3(10.2.3.4)
|
|
|
|
source 10.1.2.3~same
|
|
source 10.1.2.3~10.2.3.4
|
|
|
|
A l'inverse, si "source" contient l'adresse vue :
|
|
|
|
source same bindto 1.2.3.4
|
|
source 2.3.4.5 bindto 1.2.3.4
|
|
|
|
Problème: si "bindto" est oublié, le bind sur 2.3.4.5 ne fonctionnera pas.
|
|
|
|
Pour l'adresse de listen (avec "bind"), il serait bien que l'adresse
|
|
translatée apparaisse au même niveau que l'IP afin que les plages et
|
|
listes continuent de fonctionner par association.
|
|
|
|
Différences entre source et bind :
|
|
- source: 1 seule IP source, éventuellement un port, plus tard une plage
|
|
- bind : liste de (IP source facultatives, port obligatoire, parfois une plage)
|
|
|