[TUTO] - Retrouver une IPv4 sur une connexion CG-NATPré-requis:- un nom de domaine,
- un serveur VPS sous Linux full stack,
- Apache ou autre, ici ce sera Apache,
- l'utilitaire linux "socat"
Il sera admis que:- les utilitaires seront déjà installés et fonctionnels,
- vous savez configurer la zone DNS de votre domaine,
- vous savez configurer les Ipv6 en statique sur vos machine en locale,
- vous savez configurer Apache et ajouter les modules Proxy, Header, ...
- vous savez configurer votre routeur en locale
Rediriger un ensemble de ports:Utile pour rediriger votre VPN ou un broker Web_Socket.
en TCP:
echo -n 3392 3393 3394 | xargs -d ' ' -I% bash -c 'socat TCP4-LISTEN:%,fork TCP6:[20a2:xxxx:xxxx:xxxx::2]:% &'
en UDP:
echo -n 3392 3393 3394 | xargs -d ' ' -I% bash -c 'socat UDP4-LISTEN:%,fork UDP6:[20a2:xxxx:xxxx:xxxx::2]:% &'
Cette commande peut être ajouter à un script systemd sous cette forme:
fichier /etc/systemd/system/VPN-v4-redirect.service
[Unit]
Description=Socat V4 redirction
#Before=my-other.service
After=network.target
[Service]
Type=simple
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=Socat-V4-redirction
ExecStart=/usr/bin/socat "echo -n 3392 3393 3394 | xargs -d ' ' -I% bash -c 'socat UDP4-LISTEN:%,fork UDP6:[20a2:xxxx:xxxx:xxxx::2]:%"
Restart=always
[Install]
WantedBy=multi-user.target
Il vous faut ensuite "recharger" systemd:
systemctl daemon-reload
systemctl start VPN-v4-redirect
systemctl enable VPN-v4-redirect # (to start it during bootup)
ATTENTION, si vous redirigez les ports 80,443, les services de votre VPS ne seront plus accessibles.Rediriger les ports 80, 443:Vous avez des sites en local, mais aussi en ligne, vous devez alors utiliser le module Proxy d'Apache dans de nouveaux VirtualHost.
Pour cela, créez un nouveau VirtualHost comme suit:
<VirtualHost *:80>
#REDIRECTION SSL
ServerName www.example.com #l'adresse de votre service
<If "%{HTTP_HOST} == 'www.example.com'">
Redirect permanent / https://www.example.com/
</If>
ErrorLog ${APACHE_LOG_DIR}/IPv4Proxy-error.log
CustomLog ${APACHE_LOG_DIR}/IPv4Proxy-access.log combined
</VirtualHost>
<VirtualHost *:443>
ServerName www.example.com
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/www.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
SSLProxyEngine On
SSLProxyCheckPeerCN on
SSLProxyCheckPeerExpire on
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
# Ajouter un header à la requête pour prévenir le site de la redirection
Header add PROXY_FROM_V4 ON
RequestHeader set PROXY_FROM_V4 ON
# Penser à créer un nouveau sous-domaine _v6
ProxyPass / https://www_v6.example.com/ # <----- NOTEZ le _v6 ajouté ici, c'est important
ProxyPassReverse / https://www_v6.example.com/
ServerAdmin admin@example.com
ErrorLog ${APACHE_LOG_DIR}/IPv4Proxy-error.log
CustomLog ${APACHE_LOG_DIR}/IPv4Proxy-access.log combined
</VirtualHost>
Ce VirtualHost acceptera les requêtes IPv4 et renverra vers votre machine local en V6.
Vous devez maintenant configurer votre la zone DNS de votre domaine.
Dans votre zone, vous devez déjà avoir votre sous-domaine avec l'enregistrement AAAA (v6) pointant sur votre machine locale.
www(.example.com) AAAA 1800 20a2:xxxx:xxxx:xxxx::2
Il vous faut alors créer un enregistrement type A pointant vers votre VPS:
www(.example.com) A 1800 123.123.123.123 (adresse de votre VPS)
www_v6.example.com ? Comme vu plus haut dans le VirtualHost, il faut également créer une nouvelle fois un enregistrement type AAAA pour que la redirection se fasse correctement:
www_v6(.example.com) AAAA 1800 20a2:xxxx:xxxx:xxxx::2
Sans ça, la requête qui arrive en v4 sur le proxy serait renvoyer vers
www.example.com sans changer de version, elle resterait en v4, donc le VPS se renverait la requête à lui même.