Interface réseau non fixe

This commit is contained in:
Maniack Crudelis 2017-02-03 18:40:51 +01:00
parent 4c1bb8c4bc
commit 8b1ae1f3f2
6 changed files with 70 additions and 40 deletions

View file

@ -134,6 +134,18 @@ USER_TEST=package_checker
PASSWORD_TEST=checker_pwd
PATH_TEST=/check
LXC_NAME=$(cat "$script_dir/sub_scripts/lxc_build.sh" | grep LXC_NAME= | cut -d '=' -f2)
if [ -e "$script_dir/config" ]; then
main_iface=$(cat "$script_dir/config" | grep iface= | cut -d '=' -f2)
else # Si le fichier de config n'existe pas
# Tente de définir l'interface réseau principale
main_iface=$(sudo route | grep default | awk '{print $8;}') # Prend l'interface réseau défini par default
if [ -z $main_iface ]; then
echo -e "\e[91mImpossible de déterminer le nom de l'interface réseau de l'hôte.\e[0m"
exit 1
fi
# Enregistre le nom de l'interface réseau de l'hôte dans un fichier de config
echo -e "# interface réseau principale de l'hôte\niface=$main_iface\n" > "$script_dir/config"
fi
if [ "$no_lxc" -eq 0 ]
then

View file

@ -1,17 +0,0 @@
Pseudo-terminal will not be allocated because stdin is not a terminal.
ssh: connect to host 10.1.4.2 port 22: Connection timed out
> Installation de Yunohost...
> Post install Yunohost
> Ajout du sous domaine de test
> Ajout de l'utilisateur de test

> Vérification de l'état de Yunohost
> Arrêt de la machine virtualisée
sudo: pas de tty présent et pas de programme askpass spécifié
> Suppression des règles de parefeu
sudo: pas de tty présent et pas de programme askpass spécifié
sudo: pas de tty présent et pas de programme askpass spécifié
sudo: pas de tty présent et pas de programme askpass spécifié
sudo: pas de tty présent et pas de programme askpass spécifié
> Création d'un snapshot
sudo: pas de tty présent et pas de programme askpass spécifié

View file

@ -10,11 +10,21 @@ DOMAIN=domain.tld
YUNO_PWD=admin
LXC_NAME=pchecker_lxc
# Tente de définir l'interface réseau principale
main_iface=$(sudo route | grep default | awk '{print $8;}') # Prend l'interface réseau défini par default
if [ -z $main_iface ]; then
echo -e "\e[91mImpossible de déterminer le nom de l'interface réseau de l'hôte.\e[0m"
exit 1
fi
touch "$script_dir/../pcheck.lock" # Met en place le lock de Package check, le temps de l'installation
# Check user
echo $(whoami) > "$script_dir/setup_user"
# Enregistre le nom de l'interface réseau de l'hôte dans un fichier de config
echo -e "# interface réseau principale de l'hôte\niface=$main_iface\n" > "$script_dir/../config"
echo -e "\e[1m> Update et install lxc lxctl\e[0m" | tee "$LOG_BUILD_LXC"
sudo apt-get update >> "$LOG_BUILD_LXC" 2>&1
sudo apt-get install -y lxc lxctl >> "$LOG_BUILD_LXC" 2>&1
@ -56,8 +66,8 @@ echo -e "\e[1m> Configuration réseau de la machine virtualisée\e[0m" | tee -a
sudo sed -i "s@iface eth0 inet dhcp@iface eth0 inet static\n\taddress $PLAGE_IP.2/24\n\tgateway $PLAGE_IP.1@" /var/lib/lxc/$LXC_NAME/rootfs/etc/network/interfaces >> "$LOG_BUILD_LXC" 2>&1
echo -e "\e[1m> Configure le parefeu\e[0m" | tee -a "$LOG_BUILD_LXC"
sudo iptables -A FORWARD -i lxc-pchecker -o eth0 -j ACCEPT >> "$LOG_BUILD_LXC" 2>&1
sudo iptables -A FORWARD -i eth0 -o lxc-pchecker -j ACCEPT >> "$LOG_BUILD_LXC" 2>&1
sudo iptables -A FORWARD -i lxc-pchecker -o $main_iface -j ACCEPT >> "$LOG_BUILD_LXC" 2>&1
sudo iptables -A FORWARD -i $main_iface -o lxc-pchecker -j ACCEPT >> "$LOG_BUILD_LXC" 2>&1
sudo iptables -t nat -A POSTROUTING -s $PLAGE_IP.0/24 -j MASQUERADE >> "$LOG_BUILD_LXC" 2>&1
echo -e "\e[1m> Démarrage de la machine\e[0m" | tee -a "$LOG_BUILD_LXC"
@ -128,8 +138,8 @@ echo -e "\e[1m> Arrêt de la machine virtualisée\e[0m" | tee -a "$LOG_BUILD_LXC
sudo lxc-stop -n $LXC_NAME >> "$LOG_BUILD_LXC" 2>&1
echo -e "\e[1m> Suppression des règles de parefeu\e[0m" | tee -a "$LOG_BUILD_LXC"
sudo iptables -D FORWARD -i lxc-pchecker -o eth0 -j ACCEPT >> "$LOG_BUILD_LXC" 2>&1
sudo iptables -D FORWARD -i eth0 -o lxc-pchecker -j ACCEPT >> "$LOG_BUILD_LXC" 2>&1
sudo iptables -D FORWARD -i lxc-pchecker -o $main_iface -j ACCEPT >> "$LOG_BUILD_LXC" 2>&1
sudo iptables -D FORWARD -i $main_iface -o lxc-pchecker -j ACCEPT >> "$LOG_BUILD_LXC" 2>&1
sudo iptables -t nat -D POSTROUTING -s $PLAGE_IP.0/24 -j MASQUERADE >> "$LOG_BUILD_LXC" 2>&1
sudo ifdown --force lxc-pchecker >> "$LOG_BUILD_LXC" 2>&1

View file

@ -9,6 +9,18 @@ if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$(
PLAGE_IP=$(cat "$script_dir/lxc_build.sh" | grep PLAGE_IP= | cut -d '"' -f2)
ARG_SSH="-t"
LXC_NAME=$(cat "$script_dir/lxc_build.sh" | grep LXC_NAME= | cut -d '=' -f2)
if [ -e "$script_dir/../config" ]; then
main_iface=$(cat "$script_dir/../config" | grep iface= | cut -d '=' -f2)
else # Si le fichier de config n'existe pas
# Tente de définir l'interface réseau principale
main_iface=$(sudo route | grep default | awk '{print $8;}') # Prend l'interface réseau défini par default
if [ -z $main_iface ]; then
echo -e "\e[91mImpossible de déterminer le nom de l'interface réseau de l'hôte.\e[0m"
exit 1
fi
# Enregistre le nom de l'interface réseau de l'hôte dans un fichier de config
echo -e "# interface réseau principale de l'hôte\niface=$main_iface\n" > "$script_dir/../config"
fi
STOP_CONTAINER () {
echo "Arrêt du conteneur $LXC_NAME"
@ -19,15 +31,15 @@ START_NETWORK () {
echo "Initialisation du réseau pour le conteneur."
sudo ifup lxc-pchecker --interfaces=/etc/network/interfaces.d/lxc-pchecker
# Activation des règles iptables
sudo iptables -A FORWARD -i lxc-pchecker -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o lxc-pchecker -j ACCEPT
sudo iptables -A FORWARD -i lxc-pchecker -o $main_iface -j ACCEPT
sudo iptables -A FORWARD -i $main_iface -o lxc-pchecker -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s $PLAGE_IP.0/24 -j MASQUERADE
}
STOP_NETWORK () {
echo "Arrêt du réseau pour le conteneur."
sudo iptables -D FORWARD -i lxc-pchecker -o eth0 -j ACCEPT > /dev/null 2>&1
sudo iptables -D FORWARD -i eth0 -o lxc-pchecker -j ACCEPT > /dev/null 2>&1
sudo iptables -D FORWARD -i lxc-pchecker -o $main_iface -j ACCEPT > /dev/null 2>&1
sudo iptables -D FORWARD -i $main_iface -o lxc-pchecker -j ACCEPT > /dev/null 2>&1
sudo iptables -t nat -D POSTROUTING -s $PLAGE_IP.0/24 -j MASQUERADE > /dev/null 2>&1
sudo ifdown --force lxc-pchecker > /dev/null 2>&1
}
@ -245,11 +257,11 @@ do
done
# Test l'application des règles iptables
sudo iptables -A FORWARD -i lxc-pchecker -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o lxc-pchecker -j ACCEPT
sudo iptables -A FORWARD -i lxc-pchecker -o $main_iface -j ACCEPT
sudo iptables -A FORWARD -i $main_iface -o lxc-pchecker -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s $PLAGE_IP.0/24 -j MASQUERADE
if sudo iptables -C FORWARD -i lxc-pchecker -o eth0 -j ACCEPT && sudo iptables -C FORWARD -i eth0 -o lxc-pchecker -j ACCEPT && sudo iptables -t nat -C POSTROUTING -s $PLAGE_IP.0/24 -j MASQUERADE
if sudo iptables -C FORWARD -i lxc-pchecker -o $main_iface -j ACCEPT && sudo iptables -C FORWARD -i $main_iface -o lxc-pchecker -j ACCEPT && sudo iptables -t nat -C POSTROUTING -s $PLAGE_IP.0/24 -j MASQUERADE
then
echo -e "\e[92mLes règles iptables sont appliquées correctement.\e[0m"
else

View file

@ -2,6 +2,7 @@
ARG_SSH="-t"
PLAGE_IP=$(cat "$script_dir/sub_scripts/lxc_build.sh" | grep PLAGE_IP= | cut -d '"' -f2)
main_iface=$(cat "$script_dir/../config" | grep iface= | cut -d '=' -f2)
echo -e "Chargement des fonctions de lxc_launcher.sh"
@ -11,8 +12,8 @@ LXC_INIT () {
sudo ifup lxc-pchecker --interfaces=/etc/network/interfaces.d/lxc-pchecker | tee -a "$RESULT" 2>&1
# Activation des règles iptables
sudo iptables -A FORWARD -i lxc-pchecker -o eth0 -j ACCEPT | tee -a "$RESULT" 2>&1
sudo iptables -A FORWARD -i eth0 -o lxc-pchecker -j ACCEPT | tee -a "$RESULT" 2>&1
sudo iptables -A FORWARD -i lxc-pchecker -o $main_iface -j ACCEPT | tee -a "$RESULT" 2>&1
sudo iptables -A FORWARD -i $main_iface -o lxc-pchecker -j ACCEPT | tee -a "$RESULT" 2>&1
sudo iptables -t nat -A POSTROUTING -s $PLAGE_IP.0/24 -j MASQUERADE | tee -a "$RESULT" 2>&1
if [ "$no_lxc" -eq 0 ]; then
@ -90,13 +91,13 @@ LXC_STOP () {
LXC_TURNOFF () {
echo "Arrêt du réseau pour le conteneur."
# Suppression des règles de parefeu
if sudo iptables -C FORWARD -i lxc-pchecker -o eth0 -j ACCEPT 2> /dev/null
if sudo iptables -C FORWARD -i lxc-pchecker -o $main_iface -j ACCEPT 2> /dev/null
then
sudo iptables -D FORWARD -i lxc-pchecker -o eth0 -j ACCEPT >> "$RESULT" 2>&1
sudo iptables -D FORWARD -i lxc-pchecker -o $main_iface -j ACCEPT >> "$RESULT" 2>&1
fi
if sudo iptables -C FORWARD -i eth0 -o lxc-pchecker -j ACCEPT 2> /dev/null
if sudo iptables -C FORWARD -i $main_iface -o lxc-pchecker -j ACCEPT 2> /dev/null
then
sudo iptables -D FORWARD -i eth0 -o lxc-pchecker -j ACCEPT | tee -a "$RESULT" 2>&1
sudo iptables -D FORWARD -i $main_iface -o lxc-pchecker -j ACCEPT | tee -a "$RESULT" 2>&1
fi
if sudo iptables -t nat -C POSTROUTING -s $PLAGE_IP.0/24 -j MASQUERADE 2> /dev/null
then

View file

@ -12,6 +12,18 @@ touch "$script_dir/../pcheck.lock" # Met en place le lock de Package check
PLAGE_IP=$(cat "$script_dir/lxc_build.sh" | grep PLAGE_IP= | cut -d '"' -f2)
LXC_NAME=$(cat "$script_dir/lxc_build.sh" | grep LXC_NAME= | cut -d '=' -f2)
if [ -e "$script_dir/../config" ]; then
main_iface=$(cat "$script_dir/../config" | grep iface= | cut -d '=' -f2)
else # Si le fichier de config n'existe pas
# Tente de définir l'interface réseau principale
main_iface=$(sudo route | grep default | awk '{print $8;}') # Prend l'interface réseau défini par default
if [ -z $main_iface ]; then
echo -e "\e[91mImpossible de déterminer le nom de l'interface réseau de l'hôte.\e[0m"
exit 1
fi
# Enregistre le nom de l'interface réseau de l'hôte dans un fichier de config
echo -e "# interface réseau principale de l'hôte\niface=$main_iface\n" > "$script_dir/../config"
fi
# Check user
if [ "$(whoami)" != "$(cat "$script_dir/setup_user")" ] && test -e "$script_dir/setup_user"; then
@ -28,13 +40,13 @@ then
fi
echo "\e[1m> Configure le parefeu\e[0m"
if ! sudo iptables -D FORWARD -i lxc-pchecker -o eth0 -j ACCEPT 2> /dev/null
if ! sudo iptables -D FORWARD -i lxc-pchecker -o $main_iface -j ACCEPT 2> /dev/null
then
sudo iptables -A FORWARD -i lxc-pchecker -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i lxc-pchecker -o $main_iface -j ACCEPT
fi
if ! sudo iptables -C FORWARD -i eth0 -o lxc-pchecker -j ACCEPT 2> /dev/null
if ! sudo iptables -C FORWARD -i $main_iface -o lxc-pchecker -j ACCEPT 2> /dev/null
then
sudo iptables -A FORWARD -i eth0 -o lxc-pchecker -j ACCEPT
sudo iptables -A FORWARD -i $main_iface -o lxc-pchecker -j ACCEPT
fi
if ! sudo iptables -t nat -C POSTROUTING -s $PLAGE_IP.0/24 -j MASQUERADE 2> /dev/null
then
@ -70,8 +82,8 @@ echo "\e[1m> Arrêt de la machine virtualisée\e[0m"
sudo lxc-stop -n $LXC_NAME
echo "\e[1m> Suppression des règles de parefeu\e[0m"
sudo iptables -D FORWARD -i lxc-pchecker -o eth0 -j ACCEPT
sudo iptables -D FORWARD -i eth0 -o lxc-pchecker -j ACCEPT
sudo iptables -D FORWARD -i lxc-pchecker -o $main_iface -j ACCEPT
sudo iptables -D FORWARD -i $main_iface -o lxc-pchecker -j ACCEPT
sudo iptables -t nat -D POSTROUTING -s $PLAGE_IP.0/24 -j MASQUERADE
sudo ifdown --force lxc-pchecker