<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        color:black;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        color:black;
        mso-fareast-language:EN-US;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;
        mso-fareast-language:FR-CH;}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;
        color:black;
        mso-fareast-language:EN-US;}
span.EmailStyle21
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor="white" lang="FR-CH" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#1F497D">Bonjour,</span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">J’ai trouvé l’astuce, en tout cas en partie. La requête http (80) sur l’IPV est redirigée (rewrite) sur https  (443) :<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">RewriteEngine On<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">RewriteCond %{HTTPS} off<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D">RewriteRule (.*) </span>
<span style="color:#1F497D"><a href="https://%25%7bSERVER_NAME%7d$1"><span lang="EN-US">https://%{SERVER_NAME}$1</span></a></span><span lang="EN-US" style="color:#1F497D"> [R,L]<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Les paquets https sont balancés avec IPVS sur les serveurs réels :<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D">ipvsadm –A –t 192.168.56.110 :443 –s rr<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">ipvsadm –a –t 192.168.56.110 :443 –r 192.168.56.101:443 –g –w 1<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">ipvsadm –a –t 192.168.56.110 :443 –r 192.168.56.102:443 –g –w 1<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Et ldirectord :<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">virtual =192.168.56.110 :443<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">             fallback=127.0.0.1 :443 gate<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">             real=192.168.56.101 :443 gate<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">             real=192.168.56.102 :443 gate<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">             service=https<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">             checktimeout=30<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">             checktype=external<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">             checkcommand= ‘’/root/check_https’’<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">             scheduler=wlc<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">             protocol=tcp<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Je vais essayer avec ce que tu as dit avec Source Hashing, et je vais creuser avec le coup de iptables.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Merci<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Jacques<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D">-----------------<o:p></o:p></span></p>
<p>Bonjour,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On 08/02/17 11:22, TISSOT Jacques wrote:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal">Bonjour la communauté,<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">J’ai mis en place un cluster apache de test, 3 nœuds (un frontend et deux real servers).
<o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">Load balancing LVS-DR avec ipvsadm</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">Monitoring avec ldirectord</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">Server web: apache</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal">Tout fonctionne bien en http et en https si on les attaque directement. Mais comment gérer une REDIRECTION vers https via cette infrastructure ?<o:p></o:p></p>
<p class="MsoNormal">LVS est en couche 4 et apache est en couche 7, donc, si je comprends bien, pas moyen de gérer la redirection par un Redirect ou un Rewrite dans la config d’apache du nœud frontend ?<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">Alors comment faire ?<o:p></o:p></p>
</blockquote>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman","serif";mso-fareast-language:FR-CH"><br>
Je configurerais la redirection dans (les N instances de) Apache:<br>
<br>
<VirtualHost *:80><br>
  ServerName <a href="http://www.example.org">http://www.example.org</a><br>
  ServerAlias example<br>
  # Redirect to SSL<br>
  RewriteEngine On<br>
  RewriteRule ^$ <a href="https://www.example.org/">https://www.example.org/</a> [L,R=301]<br>
  RewriteRule ^/(.*)$ <a href="https://www.example.org/$1">https://www.example.org/$1</a> [L,R=301]<br>
</VirtualHost><br>
<br>
<VirtualHost *:443><br>
  ServerName <a href="https://www.example.org">https://www.example.org</a><br>
 [...]<br>
</VirtualHost><br>
<br>
Tout ce passera de manière transparente au niveau de LVS/ipvsadm (qui effectivement n'a aucun moyen de regard au niveau 7).<br>
<br>
Par contre, il faut impérativement travailler en mode "sh" (Source Hashing) ou les sessions SSL/TLS seront invalides d'une connection HTTP(S) à une autre; dans ldirectord.cf:<br>
<br>
# WWW (fwm=8080)<br>
virtual=8080<br>
    protocol=fwm<br>
    scheduler=sh<br>
    checkport=80<br>
    [...]<br>
<br>
L'astuce supplémentaire consiste à utiliser les "firewall marks" afin de gérer de manière identique les connections 80 et 443 (par exemple pour maintenir les sessions PHP en passant de HTTP à HTTPS); dans iptables:<br>
<br>
# Mark = 8080<br>
"${IPTABLES}" --table mangle --append PREROUTING --destination <virtual-ip>/32 --protocol tcp --dport 80 --jump MARK --set-mark 8080<br>
"${IPTABLES}" --table mangle --append PREROUTING --destination <virtual-ip>/32 --protocol tcp --dport 443 --jump MARK --set-mark 8080<br>
<br>
Bons tests,<br>
<br>
Cédric Dufour<br>
<br>
<br>
<o:p></o:p></span></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">J’ai bien sûr fouillé Internet, mais sans grand résultat.<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">Merci pour vos expertises et vos avis <o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">Jacques Tissot<o:p></o:p></p>
<p class="MsoNormal">Unifr.ch<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman","serif";mso-fareast-language:FR-CH"><br>
<br>
<br>
<o:p></o:p></span></p>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>gull mailing list<o:p></o:p></pre>
<pre><a href="mailto:gull@forum.linux-gull.ch">gull@forum.linux-gull.ch</a><o:p></o:p></pre>
<pre><a href="http://forum.linux-gull.ch/mailman/listinfo/gull">http://forum.linux-gull.ch/mailman/listinfo/gull</a><o:p></o:p></pre>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman","serif";mso-fareast-language:FR-CH"><o:p> </o:p></span></p>
</div>
</body>
</html>