Parfait !
Effectivement c'est le boulot de SNAT de réécrire l'ip source, comme c'est
expliqué en détail dans http://www.inetdoc.net/guides/
iptables-tutorial/snattarget.html (merci David)

Ceci a l'air de fonctionner (10.0.3.78 est ici l'IP du container d'où
provient la requête, 1.2.3.* sont les IP des interfaces publiques) :

iptables -t nat -A POSTROUTING -s 10.0.3.78/32 ! -d 10.0.3.0/24 -p tcp -m
tcp --dport 80 -m statistic --mode nth --every 2 --packet 0 -j SNAT
--to-source 1.2.3.4

iptables -t nat -A POSTROUTING -s 10.0.3.78/32 ! -d 10.0.3.0/24 -p tcp -m
tcp --dport 80 -m statistic --mode nth --every 2 --packet 1 -j SNAT
--to-source 1.2.3.5


Wallace : il n'y a pas de session http. En l'occurence, l'objectif est
d'augmenter la fréquence de requêtes sur certaines API tout en respectant
le quota en question.

MrJK : comme je disais plus haut, il ne s'agit pas de *load balancing*,
mais de l'inverse, "origin balancing" si ça peut se dire. Les requêtes sont
émises par un programme donné mais doivent sortir tantôt "par l'interface
A", tantôt par la B (façon de parler, il s'agit d'interfaces virtuelles et
de NAT).


Du coup, iptables fera l'affaire pour mon besoin, mais si on devait gérer
l'IP constante par session http / cookie, ou autre aspect http-aware, alors
l'approche par squid  (tcp_outgoing_address) est la bonne...



Jean-François Gigand - Geonef
Paris, France - http://geonef.fr/

Le 25 août 2016 à 10:21, Christophe Dezé <christophed...@wanadoo.fr> a
écrit :

>
> un truc du genre :
> iptables -t nat -A POSTROUTING  -m statistic --mode nth --every 3 -j SNAT
> --to 1.2.3.4
> iptables -t nat -A POSTROUTING  -m statistic --mode nth --every 2 -j SNAT
> --to 1.2.3.5
> iptables -t nat -A POSTROUTING  -m statistic --mode nth --every 1 -j SNAT
> --to 1.2.3.5
>
>
> Le 24/08/2016 à 22:15, Jean-François Gigand a écrit :
>
> Bonsoir,
>
> Justement c'est le contraire du classique load-balancing de service...
>
> Merci David, j'ai regardé et le mode "nth" avec --every et --packet
> devraient coller au besoin.
>
> Je dois alors utiliser -j MASQUERADE (comme la route par défaut,
> d'ailleurs, puisque les requêtes proviennent d'un container LXC) mais je
> dois spécifier l'IP pour le nat sur chacune de ces règles, ce que je ne
> sais pas (encore) faire (d'habitude c'est la table de routage qui s'en
> occupe).
>
>
> Jean-François Gigand - Geonef
> Paris, France - http://geonef.fr/
>
> Le 24 août 2016 à 22:03, Christophe Dezé <christophed...@wanadoo.fr> a
> écrit :
>
>> bonjour,
>>
>> as tu regardé du coté de docker qui peut faire du round-robin en entrée
>> sur plusieurs docker/squid en sortie ?
>>
>> Le 24/08/2016 à 19:09, Jean-François Gigand a écrit :
>>
>> Bonjour,
>>
>> J'ai besoin de mettre en place un proxy HTTP qui bind les requêtes
>> sortantes à une IP source parmi une liste en round-robin.
>>
>> Par exemple, ayant configuré interfaces(5) avec des ip "failover" comme
>> ceci :
>>
>> iface eth0:ip1 inet static
>>       address 1.2.3.4/32
>> iface eth0:ip2 inet static
>>       address 1.2.3.5/32
>> iface eth0:ip3 inet static
>>       address 1.2.3.6/32
>>
>> le proxy choisira de binder sa première connexion sortante à 1.2.3.4 puis
>> 1.2.3.5, 1.2.3.6 puis à nouveau 1.2.3.4, etc.
>>
>> Idéalement, le proxy choisit l'IP dans l'ordre par domaine, ce qui dans
>> l'exemple donnerait [domaine de destination -> IP source] :
>>
>> domaine1.com -> 1.2.3.4
>> domaine2.com -> 1.2.3.4
>> domaine1.com -> 1.2.3.5
>> domaine1.com -> 1.2.3.6
>> domaine2.com -> 1.2.3.5
>>
>> Le proxy doit aussi pouvoir binder en IPv6 (si la destination est
>> accessible en IPv6, même si le client du proxy est IPv4).
>>
>> Je n'ai pas l'impression que Squid ou HAproxy puissent répondre à ce
>> besoin, mais j'aimerais en être sûr
>>
>> Est-ce quelqu'un connaît une solution ou une approche à suggérer ?
>> Ou bien vaut-il mieux écrire un code spécifique ?
>> (qui devra gérer les requêtes simultanées... en NodeJS par exemple)
>>
>> Merci !
>>
>> Jean-François Gigand - Geonef
>> Paris, France - http://geonef.fr/
>>
>>
>>
>> _______________________________________________
>> Liste de diffusion du FRsAGhttp://www.frsag.org/
>>
>> _______________________________________________ Liste de diffusion du
>> FRsAG http://www.frsag.org/
>
> _______________________________________________
> Liste de diffusion du FRsAGhttp://www.frsag.org/
>
>
_______________________________________________
Liste de diffusion du FRsAG
http://www.frsag.org/

Répondre à