L'application est dispose de 2 parties, un client et un serveur. La partie serveur fait le monitoring d'un port udp particulier. Si un paquet correctement formate parvient sur le port, l'ouverture a la demande va s'activer sur le port tcp demande. Pour faire parvenir ce paquet sur ton port udp, tu disposes d'une application client (des binaires sont disponibiles pour linux et windows).
Pour mieux comprendre le mechanisme je te mets en copie quelques fichiers de config...
Fichier config cote serveur:
#
# 'doormand.cf'
# Sample configuration file for the Doorman Daemon, "doormand".
#
#
interface eth0
port 1001
waitfor 10
connection_delay_1 100000 # 1/10th second (delay is in microseconds)
connection_delay_2 2
logfile /var/log/messages
loglevel debug
pidfile /var/run/doormand.pid
guestlist /usr/local/etc/doormand/guestlist
firewall-add /usr/local/etc/doormand/iptables_add
firewall-del /usr/local/etc/doormand/iptables_delete
tag-queue-length 100000
tag-queue /var/doorman_tag_queue
tag-db /var/doorman_tag_db.db
Tu vois que le serveur fait le monitoring sur le port 1001, sur eth0. Les scripts iptables_add et iptables_delete sont en charge des l'ouverture des ports.
Ca c'est le fichier cote serveur qui determine les usagers qui on le droit de demander une ouverture de ports, les ports auxquels ils ont droit et les reseaux depuis lesquels ils peuvent envoyer leurs requetes:#
# Sample 'guestlist' file (man 5 guestlist)
#
# .--<-- group name must start on column 1 !
# /
# /grp secret ports addresses
#/---- ---------- ---------- -----------------------------------------------
user4 qwertyuiop4 22 pop3 192.168.0.0/24 9.10.11.12/16 127.0.0.1/24
Fichier config cote client windows:#
# 'KNOCK.CFG'
# Sample configuration file for the Doorman knocker, "knock.exe"
#
#
group user4 # Change this
secret qwertyuiop4 # And this!
port 1001 # The UDP port the doorman is watching
run "PuTTY myname@%H%" # A typical thing to run after a knock.
# The hostname used in the knock command
# will be subsituted in place of '%H%'.
Tu vois que le client va envoyer le paquet sur le port 1001, avec login
user4 et mot de passe
qwertyuiop4. Le port tcp demande sera donne en argument au client avec le nom du host. La clef
run determine l'application qui doit etre lance apres l'ouverture de port.
Il convient de noter que le client n'a pas la moindre idee si l'ouverture de port a ete fait avec succes ou pas, le daemon ne donne aucun message et travaille d'une facon completement masquee. Le port udp qui est monitore n'a pas besoin d'etre ouvert non plus.