Bonjour à tous,
Je me creuse la tête depuis des jours et je ne trouve pas de solution.
Je vais d’abord vous expliquer le projet et ce que j’ai fait.
L’entreprise pour laquelle je travaille, possède deux drones. Mon directeur souhaite que je renvois au bureau, en temps réel, les flux vidéos de ces derniers pour pouvoir guider les équipes de terrain.
Ceux-ci sont capables de transmettre leurs images via le protocole RTMP uniquement et via wifi.
J’ai donc installé un petit serveur sous Debian derrière la box internet de l’entreprise.
J’y ai installé NGINX que j’ai paramétré pour qu’il reçoive le flux RTMP et le mette à disposition en mode Live.
J’ai ensuite installé MotionEye, qui va lire ce flux et offre une interface web pour les opérateurs.
J’ai enfin ouvert le port 1935 (RTMP) sur la box et pris un smartphone avec 4G pour partager, via wifi, la connexion internet aux drones.
Tout ceci fonctionne très bien mais, pour des raisons de confidentialité, il faut que je crypte les flux.
J’ai donc installé OpenVpn via le script https://raw.githubusercontent.com/Nyr/openvpn-install/master/openvpn-install.sh
J’utilise simplement l’application OpenVPN for Android que je connecte à mon VPN. Un petit partage de connexion par wifi et la télécommande du drone envois son flux vers mon serveur au travers du VPN.
Mais voilà, mon serveur qui possède une IP locale de type 192.168.1.100, est parfaitement accessible en local ou en claire via le port 1135, mais ce port n’est pas disponible depuis le VPN. Seul les ports 433 et 80 le sont.
Voici le résultat de iptables -L :
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:openvpn
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all -- 10.8.0.0/24 anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Mon fichier de configuration openvpn :
local 192.168.1.100
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-crypt tc.key
topology subnet
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 192.168.1.1"
push "dhcp-option DNS 192.168.1.1"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
crl-verify crl.pem
explicit-exit-notify
Ainsi que celui de /etc/systemd/system/openvpn-iptables.service :
[Unit]
Before=network.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/iptables -t nat -A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to 192.168.1.100
ExecStart=/usr/sbin/iptables -I INPUT -p udp --dport 1194 -j ACCEPT
ExecStart=/usr/sbin/iptables -I FORWARD -s 10.8.0.0/24 -j ACCEPT
ExecStart=/usr/sbin/iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
ExecStop=/usr/sbin/iptables -t nat -D POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to 192.168.1.100
ExecStop=/usr/sbin/iptables -D INPUT -p udp --dport 1194 -j ACCEPT
ExecStop=/usr/sbin/iptables -D FORWARD -s 10.8.0.0/24 -j ACCEPT
ExecStop=/usr/sbin/iptables -D FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
En bref, le port 1135 de mon serveur est bien ouvert et accessible en local (comme depuis le net suite à l’ouverture du port sur la box) mais pas lorsque je suis connecté depuis le VPN.
Je précise par contre que les port 433 et 80, tout comme le ping, fonctionnent très bien.
Donc, je suis bien sur le même réseau que mon serveur qui est accessible.
A noter également que c’est une unique machine qui héberge tout (OpenVPN, Nginx, OpenEye).
Merci d’avance, à quiconque pourra m’apporter son aide.