J'ai ce post-up script qui est exécuté par openvpn :
#!/bin/bash
echo "I am: `whoami`"
echo "Moving interface into the netns"
ip link set dev "$1" up netns hydrogenvpn mtu "$2"
echo "Listing"
ip netns ls
echo "test"
ip netns exec hydrogenvpn cat /tmp/foobar
Si je lance openvpn avec une de ces commandes : service openvpn start
, /etc/init.d/openvpn start
, systemctl start openvpn@hydrogen.service
J'obtiens ceci dans mes journaux :
Sun Oct 9 11:19:15 2016 us=851109 /sbin/ip link set dev tun-hyd2 up mtu 1500
Sun Oct 9 11:19:15 2016 us=858267 /sbin/ip addr add dev tun-hyd2 10.43.43.3/24 broadcast 10.43.43.255
Sun Oct 9 11:19:15 2016 us=872474 /etc/openvpn/hydrogen_postup.sh tun-hyd2 1500 1542 10.43.43.3 255.255.255.0 init
I am: root
Moving interface into the netns
Listing
novpn (id: 1)
hydrogenvpn (id: 0)
test
setting the network namespace "hydrogenvpn" failed: Operation not permitted
Cependant, si je lance openvpn avec exactement la même commande que celle utilisée par systemd, cela fonctionne :
# systemctl status openvpn@hydrogen.service | grep Process
Process: 7722 ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --config /etc/openvpn/%i.conf --writepid /run/openvpn/%i.pid (code=exited, status=0/SUCCESS)
# /usr/sbin/openvpn --daemon ovpn-hydrogen --status /run/openvpn/hydrogen.status 10 --cd /etc/openvpn --config /etc/openvpn/hydrogen.conf --writepid /run/openvpn/hydrogen.pid
# tail /var/log/openvpn.log
Sun Oct 9 11:25:28 2016 us=762617 /sbin/ip addr add dev tun-hyd2 10.43.43.3/24 broadcast 10.43.43.255
Sun Oct 9 11:25:28 2016 us=767131 /etc/openvpn/hydrogen_postup.sh tun-hyd2 1500 1542 10.43.43.3 255.255.255.0 init
I am: root
Moving interface into the netns
Listing
novpn (id: 1)
hydrogenvpn (id: 0)
test
<content of /tmp/foobar>
Sun Oct 9 11:25:28 2016 us=952737 Initialization Sequence Completed
J'ai également essayé de démarrer openvpn avec systemd puis d'exécuter le script manuellement, cela fonctionne aussi.
Pourquoi y a-t-il une différence entre les deux parcours ? Et comment faire pour que le script fonctionne lorsqu'il est exécuté par openvpn lancé avec systemd ?
Versions : Debian testing, openvpn 2.3.11-2, systemd 231-9
0 votes
Cet espace de nom de réseau existe-t-il déjà avant de lancer openvpn, ou l'avez-vous créé dans un script post-up ?
0 votes
Elle existe déjà.