Module tun.ko pour openVPN manquant sur LG NAS

Bonjour à tous,

Je me tourne vers un forum Debian pour essayer de résoudre mon problème d’installation d’OpenVPN sur un nas LG N1T1 avec:
Linux LG-NAS 2.6.36.2-lgnas #1 Wed Nov 30 10:16:40 KST 2011 armv5tel GNU/Linux (Debian 6 squeeze)
J’ai un utilisateur root et accès SSH et pas mal de soft installés depuis via cette méthode.
Quand je lance openVPN en SSH (il est installé) pour y ajouter le VPN que j’utilise, j’ai cette erreur:

xxxx@LG-NAS:~# cd /etc/openvpn xxxx@LG-NAS:/etc/openvpn# sudo openvpn openvpn.conf Mon Oct 13 00:50:51 2014 OpenVPN 2.1.3 arm-unknown-linux-gnueabi [SSL] [LZO2] [EPOLL] [PKCS11] [MH] [PF_INET6] [eurephia] built on Jun 6 2013 Enter Auth Username:xxx Enter Auth Password:xxx Mon Oct 13 00:51:24 2014 NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables Mon Oct 13 00:51:24 2014 LZO compression initialized Mon Oct 13 00:51:24 2014 RESOLVE: NOTE: my.vpn.provider resolves to 4 addresses Mon Oct 13 00:51:24 2014 UDPv4 link local: [undef] Mon Oct 13 00:51:24 2014 UDPv4 link remote: [AF_INET]IP:PORT Mon Oct 13 00:51:24 2014 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this Mon Oct 13 00:51:24 2014 [my.vpn.provider] Peer Connection Initiated with [AF_INET]IP:PORT Mon Oct 13 00:51:27 2014 Note: Cannot open TUN/TAP dev /dev/net/tun: No such device (errno=19) Mon Oct 13 00:51:27 2014 Note: Attempting fallback to kernel 2.2 TUN/TAP interface Mon Oct 13 00:51:27 2014 Cannot allocate TUN/TAP dev dynamically Mon Oct 13 00:51:27 2014 Exiting

De ce que je comprends avec mes faibles connaissances, il me manque un module “tun” (tun.ko) dans /dev/net/
J’ai tenté un “modprobe tun”

FATAL: Module tun not found.

Un “modprobe -l | grep tun”

Rien

“insmod”

no such file)

Existe t’il un moyen d’avoir le module “tun.ko” injecté dans ma release de Debian sur mon NAS LG N1T1 (désolé pour les termes de noob), d’utiliser une autre methode qu’OpenVPN pour utiliser un VPN sur ma machine ou bien pensez-vous que je ne pourrais jamais avoir de VPN sur mon NAS ?

Merci d’avance :slightly_smiling:

En fait le module lui-même devrait plutôt être dans [mono]/lib/modules/2.6.36.2-lgnas/kernel/drivers/net/tun.ko[/mono]. /dev/net/tun est un pseudo-fichier de périphérique qui permet de communiquer avec ce module pour gérer les interfaces tun/tap.

[mono]modprobe tun[/mono] -> bon réflexe, mais il semble que le module soit manquant
[mono]insmod[/mono] -> insmod travaille à plus bas niveau que modprobe, il faut spécifier le chemin et le nom complet du module à charger et il ne charge pas automatiquement ses éventuelles dépendances. Pour faire une comparaison, insmod est à modprobe ce que dpkg est à apt.

La méthode classique consisterait à recompiler le noyau à partir des sources en activant l’option TUN/TAP. Un module doit correspondre à la version du noyau actif, 2.6.36.2-lgnas dans ton cas. D’où vient ce noyau ? Ce n’est pas une version de noyau standard de Debian Squeeze pour ARM (2.6.32, qui inclut le module tun.ko).

Cela ne ressemble ni au noyau standard de la Debian pour ARM mais cela ne ressemble pas non plus au noyau 2.6.30.8 que l’on peut apercevoir dans l’ignoble tarball plein de trucs inutiles qui est à disposition sur https://www.lg.com/global/support/opensource/opensourceList?types=ALL&search=N1T1

Est-ce qu’il s’agit d’un “firmware” alternatif pour ce modèle de NAS ?

Dans tous les cas, il faut recompiler un kernel après avoir installé une “chaine de cross-compilation”. Et ensuite, installer le nouveau kernel en essayant à tout prix que le bootloader redémarre sur un kernel valide si celui-ci crashe.
Parce-que si le nouveau kernel ne fonctionne pas et que l’on ne peut plus prendre la main sur le machin, qu’il n’y a pas d’accès détourné via un port série bien planqué ou une interface JTAG, on a alors fabriqué un magnifique presse-papier (brick).


AnonymousCoward

Merci beaucoup PascalHambourg & AnonymousCoward (ha ha ha)

En fait dans [mono]/lib/modules/2.6.36.2-lgnas/kernel/drivers…[/mono] je n’ai même pas de dossier “net”, ni de “tun.ko” d’ailleurs.
Il semblerait donc que ce module ne soit pas compilé de base dans ma release officielle du noyau.

Le noyau utilisé est celui disponible sur le site de LG, après un crash j’ai du prendre le N1T1_fs.zip du 19/08/2011 (avec un autre plus recent je ne pouvais pas faire un reset) dans lequel j’ai modifié quelques trucs pour avoir un accès root et un accès SSH, puis j’ai mis à jour vers le firmware-nt1_10119rfke.zip du 04/10/2012 via l’interface du nas. Après j’ai installé des programmes via SSH.
Il est donc “alternatif” dans le sens ou j’ai modifié deux trois trucs moi-même (accès root, dropbear pour accès SSH).
source: lg.com/fr/support-produit/lg … ware_panel

Je n’ai ni utilisé un firmware alternatif (comme les Tantalus: lg.threnor.de/en:start), ni compilé moi-même depuis la source (je ne l’ai jamais fait) comme vous me l’avez pointé AnonymousCoward (encore hahaha), mais oui il s’agit bien de “l’ignoble tarball plein de trucs inutiles qui est à disposition” ^^

[quote=“AnonymousCoward”]Dans tous les cas, il faut recompiler un kernel après avoir installé une “chaîne de cross-compilation”. Et ensuite, installer le nouveau kernel en essayant à tout prix que le bootloader redémarre sur un kernel valide si celui-ci crashe.
Parce-que si le nouveau kernel ne fonctionne pas et que l’on ne peut plus prendre la main sur le machin, qu’il n’y a pas d’accès détourné via un port série bien planqué ou une interface JTAG, on a alors fabriqué un magnifique presse-papier.[/quote]
Je comprends parfaitement le principe de la brick, surtout sur un nas headless comme le mien. Je l’ai eu pour vraiment pas cher, il me rend de bons et loyaux services au prix de contournements à la fois flippants et très instructifs (mes premiers pas sous linux et en SSH).
Je ne saisis pas bien le termes de “chaine de cross-compilation”, vais-je avoir le courage de me lancer dans ma première compilation de Linux en prenant comme cobaye mon Nas ? D’autant plus que je ne maîtrise pas l’architecture de cet OS…
Je ne sais pas si j’ai un JTAG mais je pense une sorte de “sécurité” en hard car il y a un utilitaire “Nas Detector” qui me permet, via ethernet en direct sur un PC (sans routeur), de reset le nas et d’en modifier les paramètres réseau.

En tout cas merci beaucoup pour vos réponses très informatives et précises !
Je vais tenter de creuser un peu même si je ne sais pas si le jeu en vaut la chandelle.

EDIT: Dans l’idée, est-ce qu’ayant accès à la source a compiler par LG je pourrais non seulement y ajouter “tun.ko” mais aussi y intégrer facilement toutes le modifications que j’ai déjà effectuées sur mon firmware avant et après installation ?

Une chaîne de cross-compilation (compilation croisée) sert à compiler pour une architecture (par exemple : ARM) sur une autre architecture (par exemple : x86). En effet il n’est pas toujour possible de compiler directement sur la machine cible ou une machine ayant la même architecture.

Si tu disposes des sources du noyau 2.6.32.2 actif et de son fichier de configuration (.config ou config-2.6.36.2-lgnas), exporté via /proc/config.gz si l’option correspondante a été activée), tu devrais pouvoir obtenir un module compatible avec le noyau actif, sans nécessité de réinstaller complètement le noyau.

Quant à l’utilitaire “Nas Detector”, je doute fort qu’il agisse sans la coopération du firmware.

J’ai (à peu près) compris en faisant quelques recherches, le principe de cross-compilation. Jusqu’ici tout va bien (sur le papier).

Après je sèche sur le terme “noyau actif”, j’ai à ma disposition deux firmwares a flasher en .bin (firmware-nt1-1_6674rfke.bin & firmware-nt1-1_10119rfke.bin) et la source fournie par LG : “2011 LG-NAS opensrc.tar.bz2” qui contient 145 archives (tar.gz et qlqs zip)

Pour ce qui est des config, j’ai simplement une série de fichiers dans “/boot/config”, créés depuis l’interface du Nas, en format .bin (le dernier fait 176Ko). Rien dans/proc/.

Pourriez-vous me donner un lien qui explique la procédure, en utilisant la source et ce fichier de config ?

Concernant “Nas Detector”, il me semble qu’une sorte de “sécurité” permette, via ce logiciel, de flasher le NAS avec une version du firmware (en zip) incluant non seulement l’image du FW en .bin mais aussi des fichiers “initrd_armel.gz”, “uboot.bin”, “uImage_nt1-1_netenc” & “tftp_files2.txt”.
Contrairement à une simple update de firmware qui ne contient que le .bin et qu’on peut faire depuis l’interface web.
Je ne sais pas si ce que je dis à un sens :083

Merci pour ces explications PascalHambourg, je vais essayer de démêler tout cela, chercher plus d’info et reviendrai vers vous si j’avance ou ai d’autres questions. Peut-être dans un autre post.

Le noyau actif, c’est celui qui fonctionne actuellement sur ton NAS, dont la version est rapportée par [mono]uname -a[/mono]. Si tu veux compiler un module seul pour ce noyau, il faut utiliser la même version des sources du noyau Linux. Ça devrait être quelque chose comme linux-2.6.36.2.

Merci PascalHambourg,

Le mot “actif” prend tout son sens :wink:

Dois-je utiliser le “linux-2.6.36.2” contenu dans mon fichier source pris sur le site de LG “2011 LG-NAS opensrc.tar.bz2” ou dois-je télécharger la source depuis le web ?
[mono]https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.2.tar.gz[/mono]

root@LG-NAS:~# uname -a Linux LG-NAS 2.6.36.2-lgnas #1 Wed Nov 30 10:16:40 KST 2011 armv5tel GNU/Linux

Je dirais d’utiliser les sources du noyau fournies de l’archive fournie par LG. Il y a peut-être des patchs spécifiques, et surtout la configuration du noyau (fichier .config).

On va tenter ca sans filet :laughing:
Je vais prendre le temps de bien comprendre comment on fait.
Après avoir lu pas mal d’articles sur le sujet je n’ai pas encore capté toutes les étapes de la manipulation.

Merci pour avoir pris le temps de me répondre PascalHambourg :023

RE-bonjour

Je ne trouve pas de fichier .config, j’ai dans /boot/config de mon nas une série de fichiers de configuration, mais ils sont en .bin:

config_20141015_161238.bin,10119,2014.10.15 config_20140521_145348.bin,10119,2014.05.21 config_20140517_015102.bin,10119,2014.05.17 config_20140516_162654.bin,10119,2014.05.16 config_20140516_152228.bin,10119,2014.05.16

Puis-je les utiliser pour faire ce que je désire ?

J’en doute, normalement les fichiers de config du noyau dans /boot/ sont nommés avec la version du noyau correspondant, pas avec un timecode, et ce sont de simples fichiers texte sans extension. Cependant s’ils contiennent des lignes de texte de type [mono]CONFIG_=[/mono] ou [mono]# CONFIG_ is not set[/mono] alors ce sont peut-être quand même des fichiers de configuration du noyau.

Le fichier .config devrait se trouver à la racine des sources du noyau, au même niveau que le fichier Makefile principal, CREDITS, README… Note que les fichiers dont le nom commence par un point (".") peuvent être masqués par défaut, il faut utiliser l’option [mono]-a[/mono] de [mono]ls[/mono] (ou demander spécifiquement les fichiers commençant par un point avec [mono].*[/mono]) ou activer/désactiver l’option correspondante de l’explorateur de fichiers pour les afficher.

Si je décompresse le .bin qui est illisible en lecture, j’ai du contenu lisible.
Mais effectivement il n’y a pas les lignes que tu cites.
Apparemment du contenu format base de données qui gère les users, les dossiers et les chemins de mes appli.

Mon Nas étant headless je fais toutes mes manipulations depuis un mac: sftp pour les fichiers & SSH avec zoc6.

La “source” de LG en tar.gz contient 146 fichiers en tar.gz tar.bz2 et un .deb dont les plus parlants sont :
[ul]linux-2.6.36.2.tar.bz2
util-linux_2.17.2-9_armel.deb…util-linux_2.17.2.orig.tar.gz…armel-2.0.tar.bz2…module-init-tools_3.12.orig.tar.gz[/ul]

Le linux-2.6.36.2n’a pas non plus de .config, à sa racine j’ai:

[ul]MAINTAINERS
CREDITS
Makefile
COPYING
README
make.sh
.mailmap
REPORTING-BUGS
Kbuild
.gitignore[/ul]

Puis les dossiers:
[ul]arch
block
crypto
Documentation
drivers
firmware
fs
include
init
ipc
kernel
lib
mm
net
samples
scripts
security
sound
tools
usr
virt[/ul]

Je te mets en pièce jointe le make.sh compris dans cette source car il y a effectivement une reference a un fichier .config:

CURCONFIG=".config" et ligne 192make_install(){ echo "-----------------------------------" echo " make install" echo "-----------------------------------" [ "$KERNEL_IMAGE_NAME" != "" ] && { cp ./arch/${ARCH}/boot/${KERNEL_IMAGE_NAME} ${IMAGE_DIR}/${KERNEL_IMAGE_NAME}_${LGNAS_MODEL}_${NETENC}${REV} cp ./System.map ${IMAGE_DIR}/System_${LGNAS_MODEL}_${NETENC}${REV}.map cp ./.config ${IMAGE_DIR}/config_${LGNAS_MODEL}_${NETENC}${REV} }

Mais impossible de voir le .config d’origine (la source) alors que je vois bien les fichiers cachés et quand je fais une recherche avec find et les options je ne trouve qu’un dossier .config dans “/home/user/”

J’ai vraiment l’impression que mon setup est très different d’un Debian classique.

Bonne journée
make.txt (8.52 KB)

Il est intéressant, ce script make.sh. Apparemment c’est lui sert à compiler le noyau et qui dit quel quel fichier de configuration par défaut choisir (DEFCONFIG) en fonction des arguments passés comme le modèle de NAS, dans ./arch/arm/configs/ pour les modèles basés sur une architectures ARM. Il doit être possible de recopier ce fichier en ./.config puis de le modifier pour activer l’option TUN.

Oui effectivement surtout qu’un modèle “frère” N1T1 de même génération a le tun.ko compilé de base:
forum.nas-portal.org/archive/ind … 13774.html

Le mien est un N1A1 (meme notice, il y a juste un lecteur DVD en moins).

J’ai effectivement trouvé des DEFCONFIG un peu partout.
Je vais creuser et reviendrai pour vous dire ce qu’il en retourne.

Petite question, ayant accès au firmware du N1T1 qui doit contenir le module tun.ko déjà compilé, ne puis-je pas l’utiliser directement ?

Merci pour le temps passé à me répondre PascalHambourg :023

Tu peux essayer, si la version de noyau est la même.

Bonsoir,
Comme je n’arrivais pas a décompresser le firmware.tar officiel pour le nas frère N1T1 (j’ai essayé sur PC, sur mac et directement sur le nas en SSH) j’ai pris le seul firmware custom existant pour ces machines:
https://lg.threnor.de/en:n1t1:downloads
Après avoir décompressé le bin, puis le tar j’ai trouvé un fichier tun.ko que j’ai renommé en tun et placé dans /dev/net.
Mais le fichier ne semble pas fonctionner sur ma machine:

xxx@LG-NAS:/etc/openvpn# sudo openvpn openvpn.ovpn Fri Oct 31 00:21:33 2014 OpenVPN 2.1.3 arm-unknown-linux-gnueabi [SSL] [LZO2] [EPOLL] [PKCS11] [MH] [PF_INET6] [eurephia] built on Jun 6 2013 Enter Auth Username: Enter Auth Password: Fri Oct 31 00:21:57 2014 NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables Fri Oct 31 00:21:57 2014 LZO compression initialized Fri Oct 31 00:21:57 2014 RESOLVE: NOTE: vpn.com resolves to 4 addresses Fri Oct 31 00:21:57 2014 UDPv4 link local: [undef] Fri Oct 31 00:21:57 2014 UDPv4 link remote: [AF_INET] IP:XX:YY:ZZ:AA Fri Oct 31 00:21:57 2014 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this Fri Oct 31 00:21:58 2014 [Private_Internet_Access] Peer Connection Initiated with [AF_INET]IP:XX:YY:ZZ:AA Fri Oct 31 00:22:00 2014 Note: Cannot ioctl TUNSETIFF tun: Inappropriate ioctl for device (errno=25) Fri Oct 31 00:22:00 2014 Note: Attempting fallback to kernel 2.2 TUN/TAP interface Fri Oct 31 00:22:00 2014 Cannot allocate TUN/TAP dev dynamically Fri Oct 31 00:22:00 2014 Exiting

Je vais essayer de voir ce que ce nouveau message indique…

Relis le premier paragraphe de ma première réponse.
Mais avant, vérifie que le module a une chance d’être compatible avec ton noyau avec la commande suivante :

Ha ouiiiii, merci PascalHambourg, je me demandais pourquoi mon fichier disparaissait lors d’un reboot du nas :083
Je vais vérifier tout cela !

Voilà ce que me donne le modinfo, pas vraiment d’une grande aide pour moi car je sais déjà d’où il vient, le modèle nt1 de mon nas qui est le même que le mien (nt1_1) avec un DVD en plus. La version de Debian est par contre pas la même, ici 2.6.30. Est-ce que cela peut poser problème ?

xxx@LG-NAS:# modinfo /lib/modules/2.6.36.2-lgnas/kernel/net/tun.ko filename: /lib/modules/2.6.36.2-lgnas/kernel/net/tun.ko alias: char-major-10-200 license: GPL author: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com> description: Universal TUN/TAP device driver depends: vermagic: 2.6.30-nt1 mod_unload ARMv5
On voit donc que j’ai ajouté ce module dans [mono]/lib/modules/2.6.36.2-lgnas/kernel/net/[/mono]

Je redémarre mon nas mais il ne semble pas trouver le fichier tun:
[mono]Cannot open TUN/TAP dev /dev/net/tun: No such device (errno=19)[/mono]