Archives par mot-clé : Ipfire

Configurer un serveur ipsec dans ipfire

Note: on copie et on colle directement dans le shell.

Dans cette page, vous trouvez la procédure pour configurer un serveur ipsec dans ipfire, et mettre en place différent clients comme iphones, Windows (>7 ) et Linux.

tunnel vpn

A) Mise en place du Serveur Ipsec

A.1/ Préparation du shell

Je vous propose de définir quelques variables volatiles, à modifier à sa convenance.

[code lang= »shell »]
TAB= »$(printf ‘\t’) »
NOM_DOMAINE=example.com #peut-être une adresse IP
WORKGROUP=’Internet Group’
PAYS=FR
EMAIL=user@${NOM_DOMAINE}
STATE=’Ma Région’
TOWN=’Ma ville’
NOM_CLIENT=Nom_de_Client_a_choisir
IP_VPN_CLIENT=10.0.0.1
PASSWORD=Motdepasse
#IP_GREEN=`ifconfig green0 | grep ‘inet addr:’ | cut -d: -f2 | awk ‘{ print $1}’`
# NET_GREEN=${IP_GREEN%.*}.0/24
NET_GREEN=0.0.0.0/0 # permet l’accès du VPN à n’importe quel réseau à restreindre si besoin
PATH_INSTALL=/var/ipfire[/code]

!Impératif! NOM_DOMAINE renseigne le nom commun(CN), soit le nom de domaine par lequel votre réseau est accessible Il est possible de mettre une adresse IP.
NET_GREEN est la zone où le VPN va avoir accès, ici dans la zone verte.
IP_VPN_CLIENT est l’adresse IP arbitraire assigné au client.

Pour la suite, y a plus qu’à lire et à copier/coller.

A.2/ Génération de l’autorité de certification (cacert)

Une autorité de certification délivre des certificats en deux parties, une clef privée que le client ou le serveur garde confidentiel et une clef public qui est diffusé à travers le réseau. Le serveur a obligatoirement son jeu de clef.

[code lang= »shell »]ipsec pki –gen –outform pem > ${PATH_INSTALL}/private/cakey.pem
ipsec pki –self –in ${PATH_INSTALL}/private/cakey.pem –dn « C=${PAYS}, ST=${STATE}, L=${TOWN}, O=${WORKGROUP}, OU=CA, CN=${NOM_DOMAINE}, emailAddress=${EMAIL} » –ca –outform pem > ${PATH_INSTALL}/ca/cacert.pem
[/code]

Il faut également renseigné un fichier setting situé dans /var/ipfire/vpn/ pour que les informations correspondent avec l’interface Web d’Ipfire. Attention aux droit d’utilisateur, tout est en nobody!

[code lang= »shell »]cat << EOF >${PATH_INSTALL}/vpn/settings
ROOTCERT_EMAIL=${EMAIL}
ROOTCERT_CITY=${TOWN}
ROOTCERT_STATE=${STATE}
ENABLED=off
ROOTCERT_OU=CA
ROOTCERT_HOSTNAME=${NOM_DOMAINE}
RW_NET=
VPN_IP=%defaultroute
ROOTCERT_COUNTRY=FR
VPN_DELAYED_START=0
ROOTCERT_ORGANIZATION=${WORKGROUP}
EOF[/code]

A.3/ Génération du certificat hôte (hostcert)

Attention au CN, comme expliqué plus haut, il doit absolument correspondre au nom de domaine ou à l’adresse IP par lequel vous êtes accessible via le réseau (Internet ou Intranet).

[code lang= »shell »]ipsec pki –gen –outform pem > ${PATH_INSTALL}/private/hostkey.pem
ipsec pki –pub –in ${PATH_INSTALL}/private/hostkey.pem | ipsec pki –issue –cacert ${PATH_INSTALL}/ca/cacert.pem –cakey ${PATH_INSTALL}/private/cakey.pem –dn « C=${PAYS}, ST=${STATE}, L=${TOWN}, O=${WORKGROUP}, CN=${NOM_DOMAINE}, OU=Serveur VPN, emailAddress=${EMAIL} » –san= »${NOM_DOMAINE} » –flag serverAuth –flag ikeIntermediate –outform pem > ${PATH_INSTALL}/certs/hostcert.pem
cat << EOF > /etc/ipsec.user.secrets
: RSA /var/ipfire/private/hostkey.pem
EOF[/code]

Sous l’onglet Services->Ipsec dans l’interface web d’Ipfire, le certificat d’autorité (CA) et le certificat hôte doit être visible et consultable.

A.4 Préparation client côté Ipfire

Pour mettre en place un client, notre serveur Ipsec aura été préalablement renseigné par deux fichiers.

  • Le premier fichier, /etc/ipsec/ipsec.conf (qui inclus le fichier /etc/ipsec/ipsec.user.conf), définit la configuration gauche/droite (local relatif/distant relatif).
  • Le deuxième fichier, /etc/ipsec.secret (qui inclus le fichier /etc/ipsec.user.secrets), définit les informations nécessaire pour l’authentification, à savoir, la clé du certificat du serveur et les identifiants avec le mot de passe correspondant.

Lors de l’arrêt et du démarrage du serveur ipsec par les pages web, les fichiers sont réécrit sauf les « user ». Comme les clients sont créés manuellement, il est nécessaire de placer leur configuration dans /etc/ipsec.user.conf et /etc/ipsec.user.secrets.

La ligne de commande suivante renseigne un fichier situé dans /var/ipfire/vpn/ afin que l’interface web d’ipfire affiche les informations sur les clients VPN dans la page Service->IPSEC et Status->Connexion.

[code lang= »shell »]
echo $((`wc -l ${PATH_INSTALL}/vpn/config | awk ‘{ print $1}’`+1)),off,${NOM_CLIENT},CN=${NOM_CLIENT}.${NOM_DOMAINE} OU=Client VPN,host,cert,,,,${NET_GREEN},,,${IP_VPN_CLIENT}/32,,,,,,,,,,,,,,,,,,,,>>${PATH_INSTALL}/vpn/config
[/code]

 

A.4.1) Windows 7 : Attention, c’est soit via certificat clé privé/public ou via eap-mschapv2.

A.4.1.a) Via certificat clé privé/public

Il est demandé un mot de passe lors de la génération du fichier .p12. Il sera demandé au client lors de l’importation du certificat.

[code lang= »shell »]ipsec pki –gen –outform pem > ${PATH_INSTALL}/private/${NOM_CLIENT}key.pem
ipsec pki –pub –in ${PATH_INSTALL}/private/${NOM_CLIENT}key.pem | ipsec pki –issue –cacert ${PATH_INSTALL}/ca/cacert.pem –cakey ${PATH_INSTALL}/private/cakey.pem –dn « C=${PAYS}, ST=${STATE}, L=${TOWN}, O=${WORKGROUP}, CN=${NOM_CLIENT}.${NOM_DOMAINE}, OU=Client VPN, emailAddress=${EMAIL} » –flag serverAuth –flag ikeIntermediate –outform pem > ${PATH_INSTALL}/certs/${NOM_CLIENT}cert.pem

# Fichier p12 pour notre client Windows
openssl pkcs12 -export -inkey ${PATH_INSTALL}/private/${NOM_CLIENT}key.pem -in ${PATH_INSTALL}/certs/${NOM_CLIENT}cert.pem -name « ${NOM_CLIENT} » -certfile ${PATH_INSTALL}/ca/cacert.pem -caname « ${NOM_DOMAINE} » -out ${PATH_INSTALL}/certs/${NOM_CLIENT}.p12[/code]

 

Ici, on renseigne uniquement /etc/ipsec.user.conf.

[code lang= »shell »]cat << EOF >> /etc/ipsec.user.conf
conn ${NOM_CLIENT}
${TAB}keyexchange=ikev2
${TAB}left=%any
${TAB}leftsubnet=${NET_GREEN}
${TAB}leftcert=hostcert.pem
${TAB}leftfirewall=yes
${TAB}right=%any
${TAB}rightsourceip=${IP_VPN_CLIENT}
${TAB}eap_identity=${NOM_CLIENT}
${TAB}leftid= »C=${PAYS}, ST=${STATE}, L=${TOWN}, O=${WORKGROUP}, CN=${NOM_DOMAINE}, OU=Serveur VPN, emailAddress=${EMAIL} »
${TAB}rightid= »C=${PAYS}, ST=${STATE}, L=${TOWN}, O=${WORKGROUP}, CN=${NOM_CLIENT}.${NOM_DOMAINE}, OU=Client VPN, emailAddress=${EMAIL} »
EOF
[/code]

A.4.1.b) Via eap-mschapv2

Ici, on renseigne /etc/ipsec.user.conf et /etc/ipsec.user.secret.

[code lang= »shell »]cat << EOF >> /etc/ipsec.user.conf
conn ${NOM_CLIENT}
${TAB}keyexchange=ikev2
${TAB}authby=rsasig
${TAB}left=%any
${TAB}leftsubnet=${NET_GREEN}
${TAB}leftauth=pubkey
${TAB}leftcert=hostcert.pem
${TAB}leftfirewall=yes
${TAB}right=%any
${TAB}rightsourceip=${IP_VPN_CLIENT}
${TAB}rightauth=eap-mschapv2
${TAB}rightsendcert=never
${TAB}eap_identity=%any
${TAB}auto=add
${TAB}leftid=%any # Si défini comme ci dessous, la connexion n’est pas accepté la premier fois.
${TAB}# leftid= »C=${PAYS}, ST=${STATE}, L=${TOWN}, O=${WORKGROUP}, CN=${NOM_DOMAINE}, OU=Serveur VPN, emailAddress=${EMAIL} »
${TAB}rightid=%any
EOF
cat << EOF >> /etc/ipsec.user.secrets
${NOM_CLIENT} : EAP « ${PASSWORD} »
EOF[/code]

A.4.2) Iphone

Il est demandé un mot de passe lors de la génération du fichier .p12. Il sera demandé au client lors de l’importation du certificat.

[code lang= »shell »]ipsec pki –gen –outform pem > ${PATH_INSTALL}/private/${NOM_CLIENT}key.pem
ipsec pki –pub –in ${PATH_INSTALL}/private/${NOM_CLIENT}key.pem | ipsec pki –issue –cacert ${PATH_INSTALL}/ca/cacert.pem –cakey ${PATH_INSTALL}/private/cakey.pem –dn « C=${PAYS}, ST=${STATE}, L=${TOWN}, O=${WORKGROUP}, CN=${NOM_CLIENT}.${NOM_DOMAINE}, OU=Client VPN, emailAddress=${EMAIL} » –flag serverAuth –flag ikeIntermediate –outform pem > ${PATH_INSTALL}/certs/${NOM_CLIENT}cert.pem

# Fichier p12 pour notre client iphone
openssl pkcs12 -export -inkey ${PATH_INSTALL}/private/${NOM_CLIENT}key.pem -in ${PATH_INSTALL}/certs/${NOM_CLIENT}cert.pem -name « ${NOM_CLIENT} » -certfile ${PATH_INSTALL}/ca/cacert.pem -caname « ${NOM_DOMAINE} » -out ${PATH_INSTALL}/certs/${NOM_CLIENT}.p12[/code]

 

Ici, on renseigne /etc/ipsec.user.conf et /etc/ipsec.user.secret.

[code lang= »shell »]cat << EOF >> /etc/ipsec.user.conf
conn ${NOM_CLIENT}
${TAB}keyexchange=ikev1
${TAB}authby=xauthrsasig
${TAB}xauth=server
${TAB}left=%defaultroute
${TAB}leftsubnet=${NET_GREEN}
${TAB}leftcert=hostcert.pem
${TAB}leftfirewall=yes
${TAB}right=%any
${TAB}rightsourceip=${IP_VPN_CLIENT}
${TAB}rightcert=${NOM_CLIENT}cert.pem
${TAB}leftid= »C=${PAYS}, ST=${STATE}, L=${TOWN}, O=${WORKGROUP}, CN=${NOM_DOMAINE}, OU=Serveur VPN, emailAddress=${EMAIL} »
${TAB}rightid= »C=${PAYS}, ST=${STATE}, L=${TOWN}, O=${WORKGROUP}, CN=${NOM_CLIENT}.${NOM_DOMAINE}, OU=Client VPN, emailAddress=${EMAIL} »
${TAB}pfs=no
${TAB}auto=add
EOF

cat << EOF >> /etc/ipsec.user.secrets
${NOM_CLIENT} : XAUTH « ${PASSWORD} »
EOF[/code]

 

A.4.3) Debian : Attention, c’est soit via certificat clé privé/public ou via eap-mschapv2.

A.4.3.a) Via certificat clé privé/public

Il est demandé un mot de passe lors de la génération du fichier .p12. Il sera demandé au client lors de l’importation du certificat.

[code lang= »shell »]ipsec pki –gen –outform pem > ${PATH_INSTALL}/private/${NOM_CLIENT}key.pem
ipsec pki –pub –in ${PATH_INSTALL}/private/${NOM_CLIENT}key.pem | ipsec pki –issue –cacert ${PATH_INSTALL}/ca/cacert.pem –cakey ${PATH_INSTALL}/private/cakey.pem –dn « C=${PAYS}, ST=${STATE}, L=${TOWN}, O=${WORKGROUP}, CN=${NOM_CLIENT}.${NOM_DOMAINE}, OU=Client VPN, emailAddress=${EMAIL} » –flag serverAuth –flag ikeIntermediate –outform pem > ${PATH_INSTALL}/certs/${NOM_CLIENT}cert.pem

# Fichier p12 pour notre client Debian
openssl pkcs12 -export -inkey ${PATH_INSTALL}/private/${NOM_CLIENT}key.pem -in ${PATH_INSTALL}/certs/${NOM_CLIENT}cert.pem -name « ${NOM_CLIENT} » -certfile ${PATH_INSTALL}/ca/cacert.pem -caname « ${NOM_DOMAINE} » -out ${PATH_INSTALL}/certs/${NOM_CLIENT}.p12[/code]

 

Ici, on renseigne uniquement /etc/ipsec.user.conf.

[code lang= »shell »]cat << EOF >> /etc/ipsec.user.conf

conn ${NOM_CLIENT}
${TAB}keyexchange=ikev2
${TAB}left=%any
${TAB}leftsubnet=${NET_GREEN}
${TAB}leftcert=hostcert.pem
${TAB}leftfirewall=yes
${TAB}right=%any
${TAB}rightsourceip=${IP_VPN_CLIENT}
${TAB}rightfirewall=yes
${TAB}leftid= »C=${PAYS}, ST=${STATE}, L=${TOWN}, O=${WORKGROUP}, CN=${NOM_DOMAINE}, OU=Serveur VPN, emailAddress=${EMAIL} »
${TAB}rightid= »C=${PAYS}, ST=${STATE}, L=${TOWN}, O=${WORKGROUP}, CN=${NOM_CLIENT}.${NOM_DOMAINE}, OU=Client VPN, emailAddress=${EMAIL} »
${TAB}auto=add
EOF

[/code]

 

A.4.3.b) Via eap-mschapv2

Ici, on renseigne /etc/ipsec.user.conf et /etc/ipsec.user.secret.

[code lang= »shell »]cat << EOF >> /etc/ipsec.user.conf
conn ${NOM_CLIENT}
${TAB}keyexchange=ikev2
${TAB}authby=rsasig
${TAB}left=%any
${TAB}leftsubnet=${NET_GREEN}
${TAB}leftauth=pubkey
${TAB}leftcert=hostcert.pem
${TAB}leftfirewall=yes
${TAB}right=%any
${TAB}rightsourceip=${IP_VPN_CLIENT}
${TAB}rightauth=eap-mschapv2
${TAB}rightsendcert=never
${TAB}eap_identity=${NOM_CLIENT}
${TAB}auto=add
${TAB}leftid= »C=${PAYS}, ST=${STATE}, L=${TOWN}, O=${WORKGROUP}, CN=${NOM_DOMAINE}, OU=Serveur VPN, emailAddress=${EMAIL} »
${TAB}rightid= »C=${PAYS}, ST=${STATE}, L=${TOWN}, O=${WORKGROUP}, CN=${NOM_CLIENT}.${NOM_DOMAINE}, OU=Client VPN, emailAddress=${EMAIL} »
${TAB}rightfirewall=yes
EOF

cat << EOF >> /etc/ipsec.user.secrets
‘C=${PAYS}, ST=${STATE}, L=${TOWN}, O=${WORKGROUP}, CN=${NOM_DOMAINE}, OU=Serveur VPN, emailAddress=${EMAIL}’ – ‘C=${PAYS}, ST=${STATE}, L=${TOWN}, O=${WORKGROUP}, CN=${NOM_CLIENT}.${NOM_DOMAINE}, OU=Client VPN, emailAddress=${EMAIL}’ : EAP « ${PASSWORD} »
EOF[/code]

B) Mise en place côté client

Se connecter sur la page d’ipfire Service->IPSEC avec le futur client, activer le serveur et télécharger soit le fichier p12 ou que le certificat d’autorité dans le cas de eap-mschapv2.

B.1.a) Windows 7: Import de certificat

Dans la console mmc, ajouter à la racine de la console le logiciel certificat(ordinateur) et se placer dans Certificat->Personnel->Certificat(ordinateur).

ipsecVia eap-mschapv2 : importer le fichier cacert.pem puis déplacer sous Certificats (ordinateur local) -> Autorité de certification racines de confiance -> Certificats.

Via certificat clé privé/public : Importer le fichier .p12, renseigner le mot de passe choisit lors de la génération du certificat et déplacer cacert.pem sous Certificats (ordinateur local) -> Autorité de certification racines de confiance -> Certificats.

B.1.b) Windows 7: Création de la connexion

Dernière étape, Ouvrir le centre réseau et partage, configurer une nouvelle connexion ou un nouveau réseau, Connexion à votre espace de travail. Dans l’adresse Internet, renseigner ce que vous avez mis au début dans les variables en nom de domaine et valider.

Via eap-mschapv2: dans la fenêtre suivante renseigné le nom d’utilisateur et le mot de passe, si problème vérifié que l’authentification est EAP-MSCHAP version 2.

Via certificat clé privé/public: si problème vérifié que l’authentification utilise les certificats de l’ordinateur.

B.2) Iphone

Avec l’iphone, il suffit de se connecter à la page du serveur et de télécharger le certificat racine et le certificat correspondant à l’appareil. Il est demandé le mot de passe lors de la génération du certificat.

Dernière étape, dans réglage->Général->VPN, Ajouter une configuration VPN… Sous l’onglet IPSec, le serveur correspond au CN du serveur VPN, le compte est le nom du client et le mot de passe. Utiliser le certificat et dans la liste selectionner celui que vous venez d’ajouter. Revenir au menu VPN et lancer la connexion.

B.3) Debian

Pour commencer il faut s’assurer que le paquet strongswan soit bien installé et dans le cas de mschapv2, le paquet libcharon-extra-plugins. Il faut redéfinir exactement les mêmes variables volatiles qu’au début.

[code lang= »shell »]NOM_DOMAINE=example.com #peut-être une adresse IP
WORKGROUP=’Internet Group’
PAYS=FR
EMAIL=user@${NOM_DOMAINE}
STATE=’Ma Région’
TOWN=’Ma ville’
NOM_CLIENT=Nom_de_Client_a_choisir
IP_VPN_CLIENT=10.0.0.1
PASSWORD=Motdepasse
NET_GREEN=0.0.0.0/0 # permet l’accès du VPN à n’importe quel réseau à restreindre si besoin
[/code]

Importer directement depuis le shell.

[code lang= »shell »]scp ipfire:/etc/ipsec.d/cacerts/cacert.pem /etc/ipsec.d/cacerts/cacert.pem
scp ipfire:/etc/ipsec.d/certs/${NOM_CLIENT}cert.pem /etc/ipsec.d/certs/${NOM_CLIENT}cert.pem
scp ipfire:/var/ipfire/private/${NOM_CLIENT}key.pem /etc/ipsec.d/private/${NOM_CLIENT}key.pem
[/code]

B.3.a) Via certificat clé privé/public

Ici, on renseigne uniquement /etc/ipsec.user.conf.

[code lang= »shell »]cat << EOF >> /etc/ipsec.conf
conn ${NOM_CLIENT}
${TAB}auto=add
${TAB}keyexchange=ikev2
${TAB}leftcert=${NOM_CLIENT}cert.pem
${TAB}leftfirewall=yes
${TAB}leftsourceip=${IP_VPN_CLIENT}
${TAB}right=${NOM_DOMAINE}
${TAB}rightsubnet=${NET_GREEN}
${TAB}rightfirewall=yes
${TAB}rightid= »C=${PAYS}, ST=${STATE}, L=${TOWN}, O=${WORKGROUP}, CN=${NOM_DOMAINE}, OU=Serveur VPN, emailAddress=${EMAIL} »
${TAB}leftid= »C=${PAYS}, ST=${STATE}, L=${TOWN}, O=${WORKGROUP}, CN=${NOM_CLIENT}.${NOM_DOMAINE}, OU=Client VPN, emailAddress=${EMAIL} »
EOF
cat << EOF >> /etc/ipsec.secrets
: RSA /etc/ipsec.d/private/${NOM_CLIENT}key.pem
EOF
[/code]

B.3.b) Via eap-mschapv2

Ici, on renseigne /etc/ipsec.user.conf et /etc/ipsec.user.secret.

[code lang= »shell »]cat << EOF >> /etc/ipsec.conf
conn ${NOM_CLIENT}
${TAB}auto=add
${TAB}keyexchange=ikev2
${TAB}leftfirewall=yes
${TAB}leftsourceip=${IP_VPN_CLIENT}
${TAB}right=${NOM_DOMAINE}
${TAB}rightsubnet=${NET_GREEN}
${TAB}leftid= »C=${PAYS}, ST=${STATE}, L=${TOWN}, O=${WORKGROUP}, CN=${NOM_CLIENT}.${NOM_DOMAINE}, OU=Client VPN, emailAddress=${EMAIL} »
${TAB}rightid= »C=${PAYS}, ST=${STATE}, L=${TOWN}, O=${WORKGROUP}, CN=${NOM_DOMAINE}, OU=Serveur VPN, emailAddress=${EMAIL} »
${TAB}rightauth=pubkey
${TAB}leftauth=eap
${TAB}eap_identity=${NOM_CLIENT}
EOF
cat << EOF >> /etc/ipsec.secrets
‘C=${PAYS}, ST=${STATE}, L=${TOWN}, O=${WORKGROUP}, CN=${NOM_DOMAINE}, OU=Serveur VPN, emailAddress=${EMAIL}’ – ‘C=${PAYS}, ST=${STATE}, L=${TOWN}, O=${WORKGROUP}, CN=${NOM_CLIENT}.${NOM_DOMAINE}, OU=Client VPN, emailAddress=${EMAIL}’ : EAP « ${PASSWORD} »
EOF[/code]

On redemarre le serveur ipsec et lance la connexion ipsec.

[code lang= »shell »]/etc/init.d/ipsec restart
ipsec up ${NOM_CLIENT}[/code]

Attention, par ssh, si la connexion se fait bien, vous perdez le contrôle de la session.

Création de machine virtuelle dans ipfire

Cette page explique la procédure pour créer une machine virtuelle dans ipfire. Ne pas oublier d’installer le paquet qemu avec pakfire.

Mise à jour le 23 aout 2016.

Je déplace mes fichiers de configuration sur github.com.

Mise à jour le 29 octobre 2016.

Avec l’aide d’un plugin faisant le liens entre SynthaxHighLighter et pastacode, je réaffiche les scripts.

Ajout du drivers virtio pour le disque dur virtuel.

1/ Création de la carte réseau virtuelle tuntap en orange0

Copier le script dans le repertoire /etc/init.d, il sert à créer la carte réseau pour notre machine virtuelle

Le script est téléchargeable ici.

Donner les droits d’exécution, établir les liens symboliques pour le boot, lancer le script et setup pour attribuer la carte virtuelle à la zone orange.

chmod +x /etc/init.d/tap
ln -s /etc/init.d/tap /etc/rc.d/rc3.d/S17tap
ln -s /etc/init.d/tap /etc/rc.d/rc0.d/K84tap
ln -s /etc/init.d/tap /etc/rc.d/rc6.d/K84tap
/etc/init.d/tap start
setup

2/ Création de(s) bridge(s) en vue du raccordement d’une machine virtuelle

Copier le script dans le répertoire /etc/init.d, il sert à créer un pont réseau. Le script lit les lignes d’un fichier et créée le pont si la variable portant le nom de la carte est à yes.

Le script est téléchargeable ici.

Créer le fichier de configuration des bridges, donner le droits d’exécution du script, établir les liens symboliques pour le boot et lancer le script pour créer le bridge.

cat << EOF > /etc/default/bridge
orange=yes
EOF
chmod +x /etc/init.d/bridge
ln -s /etc/init.d/bridge /etc/rc.d/rc3.d/S21bridge
ln -s /etc/init.d/bridge /etc/rc.d/rc0.d/K83bridge
ln -s /etc/init.d/bridge /etc/rc.d/rc6.d/K83bridge
/etc/init.d/bridge start

3/ Création d’une machine virtuelle

Copier le script dans le répertoire /etc/init.d, il sert à créer si besoin le disque dur virtuel et boot dans la foulé sur une iso (à spécifier dans le script), si l’image disque existe déjà, la machine y boot.

Le script est téléchargeable ici.

Créer le fichier d’attribution des bridges, donner le droits d’exécution du script, établir les liens symboliques pour le boot et lancer le script pour créer le bridge.

chmod +x /etc/init.d/vhost
ln -s /etc/init.d/vhost /etc/rc.d/rc3.d/S99vhost
ln -s /etc/init.d/vhost /etc/rc.d/rc0.d/K01vhost
ln -s /etc/init.d/vhost /etc/rc.d/rc6.d/K01vhost

Il est nécessaire de créer un fichier .vhost par machine virtuelle dans le répertoire /etc/vhost/ pour que le script lance une nouvelle virtualisation.

mkdir /etc/vhost
cat << EOF > /etc/vhost/une_machine.vhost
INDEX=1
RAM=512M
DISK=/PATH/TO/IMG/XXX.img
SIZE=10G
MAC_TAP="01:AA:01:AA:01:AB"
MAC_NET="01:AA:01:AA:01:AA"
ISO=/PATH/TO/ISO
EOF

/etc/init.d/vhost start une_machine

Pour que la machine virtuelle puisse communiquer, il ne reste plus qu’à lui attribuer une adresses IP de même réseau.

Pour que la machine virtuelle s’éteigne correctement, il manque un script perl  (grand merci à hadfl du forum d’Ipfire).
Le script est téléchargeable ici.

4/ Redirection des ports de red0 vers orange0

Surtout, ne pas ajouter d’autres règles comme ACCEPT en entrée sur red, seul une redirection NAT est nécessaire pour accéder à la machine virtuelle dans la DMZ orange. Remplir le formulaire comme ci-dessous.