Willy Tarreau | d1142aa | 2007-01-07 13:03:59 +0100 | [diff] [blame] | 1 | Nécessite CAP_NET_ADMIN (12) |
| 2 | On peut donc aussi mettre CAP_NET_BIND_SERVICE (10) pour autoriser les ports < 1024 |
| 3 | |
| 4 | |
| 5 | charger le module : |
| 6 | # modprobe ip_conntrack hashsize=65536 |
| 7 | # modprobe iptable_tproxy hashsize=65536 |
| 8 | # echo 15 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_time_wait |
| 9 | # echo 30 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_fin_wait |
| 10 | |
| 11 | |
| 12 | Si on utilise "usesrc client", alors on rencontre ce problème en cas |
| 13 | de réutilisation d'un port : |
| 14 | |
| 15 | # dmesg |
| 16 | IP_TPROXY: error applying NAT mapping, hooknum=4 0103000a:e5a2 -> 05000001:d204 |
| 17 | IP_TPROXY: error applying NAT mapping, hooknum=4 0103000a:e5a2 -> 05000001:d204 |
| 18 | |
| 19 | Solution retenue pour la configuration : |
| 20 | |
| 21 | You have to write "usesrc XXXX" on the "source" line. "XXXX" is either |
| 22 | an IP address or the keyword "clientip" to reuse the client's IP with |
| 23 | a dynamically allocated port, or "client" to reuse both the client's IP |
| 24 | and port (dangerous). But due to the way cttproxy works, the source address |
| 25 | is mandatory. Eg: |
| 26 | |
| 27 | backend static |
| 28 | source 192.168.1.254 usesrc clientip |
| 29 | server static1 192.168.1.10 source 192.168.1.254 usesrc clientip |
| 30 | |
| 31 | |
| 32 | ---- Anciennes réflexions ---- |
| 33 | |
| 34 | Il faudrait donc peut-être toujours avoir un port dynamique, ou bien |
| 35 | traiter le TIME_WAIT correctement en appliquant natdel => corrige pratiquement |
| 36 | toujours le problème (mais réduire les timeouts semble important) |
| 37 | |
| 38 | |
| 39 | source 10.1.2.3 present 10.2.3.4 |
| 40 | source 10.1.2.3 present same_ip |
| 41 | source 10.1.2.3 present same |
| 42 | source 10.1.2.3:5000 present same |
| 43 | |
| 44 | source 10.1.2.3 appear_as 10.2.3.4 |
| 45 | source 10.1.2.3 appear_as same_ip |
| 46 | source 10.1.2.3 appear_as same |
| 47 | source 10.1.2.3:5000 appear_as same |
| 48 | |
| 49 | source 10.1.2.3 {keepsrc | keepip | usesrc 1.2.3.4} |
| 50 | |
| 51 | source 10.1.2.3 snat { client | clientip | 1.2.3.4 } |
| 52 | source 10.1.2.3 extbind same |
| 53 | source 10.1.2.3 intercept same |
| 54 | source 10.1.2.3 spoof same |
| 55 | source 10.1.2.3 showsrc same |
| 56 | source 10.1.2.3 usesrc same |
| 57 | source 10.1.2.3 setsrc same |
| 58 | source 10.1.2.3 withsrc same |
| 59 | source 10.1.2.3 usesrc clientip:sameport |
| 60 | source 10.1.2.3 alias same |
| 61 | source 10.1.2.3 as same |
| 62 | source 10.1.2.3 outgoing same |
| 63 | source 10.1.2.3 public same |
| 64 | source 10.1.2.3:5000 pretend same |
| 65 | |
| 66 | source 10.1.2.3=same |
| 67 | source 10.1.2.3=10.2.3.4 |
| 68 | |
| 69 | source 10.1.2.3^same |
| 70 | source 10.1.2.3^10.2.3.4 |
| 71 | |
| 72 | source 10.1.2.3@same |
| 73 | source 10.1.2.3@10.2.3.4 |
| 74 | |
| 75 | source 10.1.2.3!same |
| 76 | source 10.1.2.3!10.2.3.4 |
| 77 | |
| 78 | source 10.1.2.3|same |
| 79 | source 10.1.2.3|10.2.3.4 |
| 80 | |
| 81 | source 10.1.2.3(same) |
| 82 | source 10.1.2.3(10.2.3.4) |
| 83 | |
| 84 | source 10.1.2.3~same |
| 85 | source 10.1.2.3~10.2.3.4 |
| 86 | |
| 87 | A l'inverse, si "source" contient l'adresse vue : |
| 88 | |
| 89 | source same bindto 1.2.3.4 |
| 90 | source 2.3.4.5 bindto 1.2.3.4 |
| 91 | |
| 92 | Problème: si "bindto" est oublié, le bind sur 2.3.4.5 ne fonctionnera pas. |
| 93 | |
| 94 | Pour l'adresse de listen (avec "bind"), il serait bien que l'adresse |
| 95 | translatée apparaisse au même niveau que l'IP afin que les plages et |
| 96 | listes continuent de fonctionner par association. |
| 97 | |
| 98 | Différences entre source et bind : |
| 99 | - source: 1 seule IP source, éventuellement un port, plus tard une plage |
| 100 | - bind : liste de (IP source facultatives, port obligatoire, parfois une plage) |
| 101 | |