Catégorie : Réseau

20 mai 2016 /

Lors de la duplication d’une VM, je suis tombé sur cette erreur, l’interface eth0 n’apparait pas avec la commande ifconfig:

ifconfig

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:15469561 errors:0 dropped:0 overruns:0 frame:0
TX packets:15469561 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5183498564 (4.8 GiB) TX bytes:5183498564 (4.8 GiB)

Puis une tentative d’activation via ifup sur eth0 remonte cette fameuse erreur:

ifup eth0

Device eth0 does not seem to be present, delaying initialisation

6545

Pour solutionner le problème, et on commence par mettre à jour la carte mac avec sa nouvelle adresse:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

Puis on supprime la configuration udev des interfaces réseaux (qui seront régénérés au redémarrage de la machine):

rm -f /etc/udev/rules.d/70-persistent-net.rules
reboot

1 mai 2016 /

Telnet, (depuis un serveur distant)

telnet 192.168.0.14 20000

Si le port est ouvert:

Trying 192.168.0.14...
Connected to entropia (192.168.0.14).
Escape character is '^]'.

Si le port est fermé (ou service non démarré):

Trying 192.168.0.14...
telnet: connect to address 192.168.0.14: Connection refused
telnet: Unable to connect to remote host: Connection refused

Netstat, (pour tester en local)

netstat -paunt | grep 3306; echo $?

Si le port est ouvert:

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      1979/mysqld
0

Si le port est fermé (ou service non démarré):

1

Netcat, (depuis un serveur distant)

nc -v -z 192.168.0.14 3306; echo $?

Si le port est ouvert:

Connection to 192.168.0.14 3306 port [tcp/mysql] succeeded!
0

Si le port est fermé (ou service non démarré):

nc: connect to 192.168.0.14 port 3306(tcp) failed: Connection refused
1

nc  192.168.0.14 3306< /dev/null ; echo $?

Si le port est ouvert:

4
5.1.73▒d))4f*<,i▒N*'%#~rC8/#`0

Si le port est fermé (ou service non démarré):
1

Wget pour tester un serveur web, (depuis un serveur distant)

wget -qO- 192.168.0.14:80 ; echo $?

wget -q --spider 192.168.0.14:80 ; echo $?

Curl, (depuis un serveur distant)

curl telnet://192.168.0.14:22

Si le port est ouvert, la commande restera bloquée car elle attend que l’on saisisse quelque chose. ctrl+c pour sortir.

Si le port est fermé:

curl: (7) couldn't connect to host

Bash, (depuis un serveur distant)

timeout 1 bash -c 'cat < /dev/null > /dev/tcp/192.168.0.14/22' ; echo $?

Si le port est ouvert:
0
Si le port est fermé:

bash: connect: Connexion refusée
bash: /dev/tcp/192.168.0.14/22: Connexion refusée
1

Nmap, (depuis un serveur distant)

nmap -p 80 192.168.0.14

Si le port est ouvert:

Starting Nmap 5.51 ( http://nmap.org ) at 2016-03-29 10:00 CEST
Nmap scan report for entropia.local (192.168.0.14)
Host is up (0.00068s latency).
PORT   STATE SERVICE
80/tcp open  http
MAC Address: 00:50:56:01:27:55 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds

Si le port est fermé:

Starting Nmap 5.51 ( http://nmap.org ) at 2016-03-29 10:06 CEST
Nmap scan report for entropia.local (192.168.0.14)
Host is up (0.00045s latency).
PORT   STATE  SERVICE
80/tcp closed http
MAC Address: 00:50:56:01:27:55 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds

Pour tester plusieurs port en même temps:

nmap -p 22,1944,20000 192.168.0.14

Python, (depuis un serveur distant)

python
import socket
clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientsocket.connect(('192.168.0.14' , 80))
clientsocket.sent('\n')

Si le port est ouvert, vous arriverez à faire un « clientsocket.sent(‘\n’) » (qui vous retournera surement cette une erreur):
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: '_socketobject' object has no attribute 'sent'

Si le port est fermé, au moment du « clientsocket.connect((‘192.168.0.14’ , 80)) » :
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in connect
socket.error: [Errno 111] Connection refused

28 avril 2016 /

Il peut être parfois utile de pouvoir identifier facilement un port réseau sur un serveur lors des opération de brassage.
Pour identifier facilement une carte, on peut utiliser la commande ethtool et son option -p (ou –identify) pour faire clignoter la diode d’activitée (celle des données) durant une durée déterminé.

Pour faire clignoter la carte eth0 pendant 5 seconde:

ethtool -p eth0 5

Pour faire clignoter la carte eth0 indéfiniment:

ethtool -p eth0

18 avril 2016 /

Dans IPtables, les règles sont gérées par ligne par ligne, donc lorsque qu l’on ajoute une nouvelle règle, elle se mettra à la suite des autres.
Il est donc préférable de lister nos règles en spécifiant leur numéro de ligne avec l’option « –line-numbers« , sinon cela pourrait devenir un vrai casse tete en cas d’erreur.

iptables

:

Pour afficher les tables « INPUT« , « FORWARD » et « OUTPUT » avec les numeros de ligne:

iptables -L --line-numbers

Pour les tables « PREROUTING » et « POSTROUTING » avec les numeros de ligne:

iptables -L -t nat --line-numbers

Maintenant que l’on peut facilement identifier la règle à supprimer, on la supprime (ici la numéro 4 dans la table INPUT):

iptables -D INPUT 4

22 décembre 2015 /

FirewallD est un service qui permet de mettre en place une gestion dynamique du pare-feu sous RedHat, CentOS et Fedora.
Il s’appuie sur l’infrastructure Netfilter.

Les règles gérées par le service FireWallD sont appliquées san savoir besoin de redémarrer le parefeu.
Les règles existantes, toujours utiles, restent donc en place. Et les modules noyaux complémentaires utilisés ne sont pas déchargés.

La seule contraintes concernant FirewallD est qu’il nécessite que l’ensemble des règles de filtrage soient appliquées par lui même de façon à ce que son état (règles en cours) reste synchronisé avec celui du noyau.

Installation:

yum -y install firewalld

Démarrage:

systemctl start firewall

Voici quelques notes pour pouvoir se servir de l’interface du pare-feu sur votre CentOS, Fedora ou RHEL. Les règles ne sont pas prises en tant réel, mais lors du rechargement des règles.

Pour connaître l’activation du pare-feu:

firewall-cmd --state

 

Pour connaître la « zone » par défaut:

firewall-cmd --get-active-zones

 

Regarder les règles existantes sur la zone par defaut :

firewall-cmd –get-default-zone

 

Pour lister les règles de la zone « public »:

firewall-cmd --zone=public --list-all

 

Ajouter http (TCP/80) dynamiquement:

firewall-cmd –add-service http

ou

firewall-cmd --zone=public --add-service=http

 

Ajouter http (TCP/80) pour une prise en compte au redémarrage:

firewall-cmd –permanent –add-service http

ou

firewall-cmd --permanent --zone=public --add-service=http

 

Pour ajouter un port de manière permanente (ici 80 sur tcp):

firewall-cmd --permanent --zone=public --add-port=80/tcp

 

Pour supprimer un port de manière permanente (ici 80 sur tcp):

firewall-cmd --permanent --zone=public --remove-port=80/tcp

 

Pour recharger les règles du pare-feu:

firewall-cmd --reload

ou

systemctl restart firewalld.service

 

Plus d’info ici.