J'ai passé l'examen pour la certification LPI 101 aujourd'hui.
Une image vaut milles mots
Aujourd'hui, je devais configurer un serveur en arrière d'un firewall (linux/debian). J'avais prévu un petit plan des étapes à faire. Puisque le serveur est protégé par un serveur-pare-feu, je devais ajouter une règle de "Destination NAT" ou DNAT au logiciel firewall de linux: iptables. J'ai cherché, cherché, cherché et je n'arrivais pas à trouver la raison pourquoi ma règle de DNAT ne fonctionnait pas. Admettons que j'avais une configuration comme celle-ci: INTERNET -> FIREWALL -> SERVEUR. J'étais capable de passer d'internet à firewall et de firewall à serveur, mais pas d'internet à serveur. J'ai essayé d'utiliser tcpdump port XXXX et netcat pour faire des tests. Ça n'a pas trop aidé.
Enfin, vers la fin de la journée, j'ai lu une documentation sur iptables qui indiquait que les paquets envoyés à la table de PREROUTING étaient "filtrés" par la suite. Ce qui veut dire que les paquets passaient effectivement d'internet au firewall, mais étaient bloqués lorsqu'il transférait les paquets au serveur interne (transférer = FORWARD). Donc, j'ai réalisé ce chemin 1. ils vont dans le PREROUTING, 2. ensuite le routing (route -n), 3. ils sont filtrés par INPUT (interface locale) ou FORWARD (interface externe). Dans mon idée, il n'y avait que 1. "PREROUTING" et 2. "routing". Puisque les paquets étaient redirigés vers un autre serveur, je croyais qu'il n'y avait pas de filtrage par la suite. J'avais tord. Finalement, mon ami, a cherché sur google images "iptables" et tout c'est éclairci. Voici un exemple de schéma qui explique le cheminement des paquets sur linux 2.6.
J'ai testé par la suite, en ajoutant la règle dans la section FORWARD et tout fonctionnait parfaitement comme prévu. Donc, si vous voulez faire du DNAT, pensez à FORWARD/INPUT!
# Voici un exemple de règles iptables # je permet à l'adresse source 192.168.1.10 de se connecter # via l'interface eth0, protocole udp # à mon firewall et je redirige vers 10.0.0.2 iptables -t nat -A PREROUTING -i eth0 -p udp --dport 12345 -s 192.168.1.10 -j DNAT --to 10.0.0.2 # Je permet de forwarder le paquet à mon serveur 10.0.0.2 # noter que seulement l'ip de destination (-d) a été modifiée iptables -A FORWARD -i eth0 -p udp --dport 12345 -s 192.168.1.10 -d 10.0.0.2 -j ACCEPT
Concernant netcat, si vous voulez faire un client et un serveur udp, voici la syntaxe:
# clients udp: netcat -u ip_du_serveur port_du_serveur netcat -u 10.0.0.2 12345 # serveur udp: netcat -u -l -s ip_du_serveur -p port_du_serveur netcat -u -l -s 10.0.0.2 -p 12345
Ça m'a pris ben du temps avant de comprendre que les options -s et -p étaient obligatoires pour créer un serveur!
Commenter (0)
Par yansanmoSection: Libre
Nouveautés pour mon projet GenList
Voici des nouveautés pour mon projet GenList : un générateur de liste pour PHP/MySQL/XHTML.
- Nouvelle interface pour les renseignements globaux (base de données)
- Onglet pour plusieurs tables/liste
- Ajout de la colonne "FOREIGN KEY" avec la syntaxe nomTable.nomChamp
- Amélioration de l'analyse des champs pour les mots-clés NULL, NOT NULL et DEFAULT.
- Comprend la syntaxe "REFERENCES nomTable (nomChamp)".
- Librairies externes pour des classes avec héritages et pour une fonction d'affichage de balises SELECT.
- Permet une abstraction de premier niveau pour la classe (fichier clsAbstractList.php) et la base de données (fichier dbConnection.php).
- Générateur de diagrammes et de relations. On peut tracer des relations entre PK et FK. Utilisation: 1. ajouter deux tables dans le diagrammes, 2. cliquer (sans relâcher) sur le texte PK d'une table, bouger la souris jusqu'au texte "FK" d'une autre table, relâcher la souris. 3. Afficher l'onglet de la table avec la clé étrangère. 4. Cliquer sur "Générer".
- Nouvelle interface pour le chargement de requêtes CREATE TABLE. Permet aussi de charger plusieurs tables dans plusieurs onglets.
Ce que je prévois améliorer:
- Corriger le problème de recharger un diagramme (les liens sont perdus)
- Charger les liens (clés étrangères) dans le diagramme à partir du formulaire
- Permette d'exporter les énoncés CREATE TABLE de tous les onglets dans un textarea.
Le projet avance assez bien à mon goût...
Commenter (0)
Par yansanmoSection: Libre
Extraction ODS : OpenDocument Spreadsheet
Je me suis lancé un petit défi de convertir un fichier ods (OpenDocument) en base de données MySQL + pages PHP. Voici les étapes:
- Ouvrir et extraire les données du fichier ods
- Créer la(les) table(s) relationnelle(s) SQL
- Créer les requêtes SQL avec les données et les exécuter
- Construire l'interface PHP pour les modifier avec mon générateur
- Modifier mon générateur pour ajouter de nouvelles fonctionnalités selon celle que j'ai besoin.
- Utiliser.
C'est un projet à long terme, mais j'ai déjà fait mon premier test pour l'étape #1.
Commenter (0)
Par yansanmoSection: Libre
Les non-dits de PHP5
PHP5 indique que les objets sont détruits (la fonction __destruct() est appelée) lorsqu'il n'existe plus de références à un objet. Sauf que ça ne fonctionne plus vraiment dans PHP 5.2. En fait, on se retrouve avec des questions fondamentales qui date de l'orienté-objet et même avant avec les allocations/désallocations de mémoire. Quand détruire un objet?
On peut les détruire lorsqu'il n'existe plus de références à l'objet, mais il faut préciser ce qu'est une référence, les compter, décrémenter leur nombre, c'est énormément de travail pour le langage. On peut les détruire en ordre de construction, on peut les détruire en ordre inverse de construction. On peut les détruire aléatoirement. Dans la documentation de PHP, on dit lorsqu'il n'existe pas de références. Cependant, une référence d'un objet avec "global" dans un destructeur, on en fait quoi? Dans PHP5.2, on en tient pas compte. Donc, l'objet va être supprimer à un moment presque indéterminé. En fait pas indéterminé, déterminé par la version de votre PHP. En PHP 5.0, 5.1, c'est en ordre de construction, en PHP 5.2 c'est en ordre inverse de construction.
Tout ça pour dire que plusieurs scripts qui utilisent __destruct risque de ne plus fonctionner. Par exemple, Wordpress.
- Le bug règlé de PHP 5: destruction dans l'ordre inverse
- Le problème qui est arrivé après la correction (bien attendu tout ceux qui s'attendait au résultat d'avant).
- Le problème dans Wordpress
- Les cris d'alarme des usagers et là. La solution de l'administrateur du système? Passer en PHP 4
Ah les non-dits, un autre problème de communications, documentation...
D'un autre côté, si on y pense, la destruction des objets est compliqué en programmation. Imaginez dans la vraie vie. Moi je dis qu'on devrait faire des scripts qui ne se terminent pas et qui recyclent leur objets. À quand la programmation verte?
Commenter (0)
Par yansanmoSection: Libre
Pourquoi ça marche pas?
mount -t ext3 /dev/hdc1 /mnt/c1: Unable to mount hdc1. lsof n'indique aucun fichier, /mnt/c1 est un nouveau répertoire. Je suis présentement sur le / (seul usager connecté sur la machine). fsck -f /dev/hdc1 est crrect, fdisk /dev/hdc est correct. mkfs.ext3 /dev/hdc1 est correct.
1. Google: disk busy to mount another device http://www.google.ca/search?q=disk+busy+to+mount+another+device&hl=en&lr=&safe=off&client=firefox-a&rls=org.mozilla:fr:official&start=10&sa=N 2. 10e lien http://www.debianhelp.org/node/1296 3. 1er lien dans les commentaires (solutions): http://www.linuxquestions.org/questions/showthread.php?t=251293 4. erreur qui a donné l'intuition "kernel: device-mapper: dm-linear: Device lookup failed" 5. Google: device-mapper: dm-linear: Device lookup failed http://www.google.ca/search?q=device-mapper%3A+dm-linear%3A+Device+lookup+failed&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:fr:official 6. 5e lien: http://bugs.centos.org/view.php?id=1050 7. indique qu'il a enlevé dmraid
Donc, j'enlève le dmraid, je reboote, et voilà, plus d'erreur.
Commenter (0)
Par yansanmoSection: Libre
Serveur de FACIL surmené
Après la panne du DNS interne de FACIL, c'est maintenant à la connexion de tomber, à moins que ça soit les deux serveurs DNS principaux, qui sait?
Hum... pas de jabber pour quelques temps...
Commenter (0)
Par yansanmoSection: Libre