Aller au contenu

Le Topic D'openwrt


Messages recommandés

Salut @ tous

Je crée ce topic pour regrouper les tutos et les questions concernant le firmware pour routeur OpenWRT.

Ce firmware est basé sur les sources du firmware officiel de Linksys lui même dérivé de Linux.

Les avantages de ce firmware en comparaison du firmware officiel sont multiples mais je n'en citerai que quelques unes.

Tout d'abord, vous n'êtes pas obligé de passer par l'interface Web du routeur, car tout d'abord il n'y en a pas et de plus, un shell telnet ou ssh est directement accessible sur le routeur. Ce qui vous permet d'avoir beaucoup plus d'options de configuration de votre routeur pour en faire quasiment ce que vous voulez.

Un système de packages façon Debian à été mis en place via la commande ipkg. Cette commande vous permet d'installer un grand nombre de packages avec lesquels vous pouvez par exemple :

- lancer un serveur web directement sur votre routeur

- installer un bouncer irc

- monter des partages nfs

- installer un pbx voip

- capturer des trames réseau pour diagnostiquer vos soucis

- utiliser l'ipv6 dans votre lan

- gérer des vlan

- ...

[TODO] : compléter cette liste

De plus, le routeur utilisant linux, iptables est également disponible ce qui vous permettra de faire des configurations de routage et de firewalling avancées.

Pour commencer voici quelques liens :

Le site officiel du firmware : www.openwrt.org

La doc du firmware : http://wiki.openwrt.org/OpenWrtDocs

La page de download : http://downloads.openwrt.org/

Le forum ( en anglais ) regroupant le plus d'infos : http://forum.openwrt.org/

La page des packages disponibles : http://tracker.openwrt.org/ ( Down à l'heure actuelle )

Le matériel compatible :larrow.pnghttp://wiki.openwrt.org/TableOfHardware

rajout ( merci Zinzin ) :

Pour les malheureux qui n'ont pas pu acheter leur routeur à temps et qui se retrouvent avec un V5 et supérieur, voici un autre firmware alternatif :http://www.bitsum.com/openwiking/owbase/ow.asp?WRT54G5%5FCFE

Bon, pour l'instant c'est tout ce qu'il y a mais si vous avez des questions n'hésitez pas :)

1.Choisir votre firmware

Il existe 2 versions d'OpenWRT avec comme différence le système de fichiers utilisé qui permet ou non l'écriture de données dans la mémoire.

La version JFFS2 vous permet d'écrire dans tout le système alors que la version SquashFS ne vous donne les droits en écriture qu'à certains endroits ce qui n'est pas plus mal si vous avez peur de faire des bétîses.

Toutefois, ne croyez pas qu'avec la version SquashFS vous avez moins de possibilités.

a.Système de fichiers en SquashFS :

Prenons un fichier au hasard, /etc/dnsmasq.conf (fichier de configuration du relais dns et du serveur dhcp ). Ce fichier est en fait un symlink vers /rom/etc/dnsmasq.conf . Vous pouvez le modifier mais pas le supprimer. Si toutefois vous souhaitez le modifier il vous suffit de supprimer le lien, copier le fichier dans la racine et le modifier.

#unlink /etc/dnsmasq.conf

#cp /rom/etc/dnsmasq.conf /etc/

à la rigueur, modifiez les permissions :

#chmod u+w /etc/dnsmasq.conf

et voilà, vous pouvez y faire ce que vous voulez, et si vous voulez récupérer le fichier initial, il est toujours dans /rom/

:)

b.Système de fichiers JFFS2 :

Eh bien, là tout est en lecture écriture ce qui implique que vous n'avez pas de backups de vos config en cas de soucis, vous devez les faire vous même.

2.Tuning de l'iptables

En attendant, pour ceux qui ont du mal, voici mon script iptables ( merci à Boobz pour la suggestion :)

A placer dans votre script /etc/firewall.user et à modifier selon vos besoins :)

#!/bin/sh
. /etc/functions.sh

#Les 2 lignes suivantes sont là par défault, elles permettent d'obtenir les noms des interfaces WAN et LAN

WAN=$(nvram get wan_ifname)
LAN=$(nvram get lan_ifname)

#Cette ligne permet d'obtenir votre adresse IP publique

EXTIP=$(ifconfig vlan1|grep inet|cut -f 2 -d :|cut -f 0 -d " ")

#A ne toucher que si vous savez ce que vous faites.
iptables -F input_rule
iptables -F output_rule
iptables -F forwarding_rule
iptables -t nat -F prerouting_rule
iptables -t nat -F postrouting_rule

### BIG FAT DISCLAIMER
### The "-i $WAN" literally means packets that came in over the $WAN interface;
### this WILL NOT MATCH packets sent from the LAN to the WAN address.

### Allow SSH on the WAN interface
# iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 22 -j ACCEPT
# iptables		-A input_rule	  -i $WAN -p tcp --dport 22 -j ACCEPT

### Port forwarding pour accéder par SSH à son routeur depuis le net
# iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 22 -j DNAT --to 192.168.1.2
# iptables		-A forwarding_rule -i $WAN -p tcp --dport 22 -d 192.168.1.2 -j ACCEPT

#Règles pour Emule :
iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 4662 -j DNAT --to 192.168.0.2
iptables		-A forwarding_rule -i $WAN -p tcp --dport 4662 -d 192.168.0.2 -j ACCEPT
iptables -t nat -A prerouting_rule -i $WAN -p udp --dport 4672 -j DNAT --to 192.168.0.2
iptables		-A forwarding_rule -i $WAN -p udp --dport 4672 -d 192.168.0.2 -j ACCEPT

#Port forwarding si vous avez un serveur DNS dans votre réseau et que vous voulez le rendre accessible depuis l'extérieur
iptables -t nat -A prerouting_rule -i $WAN -p udp --dport 53 -j DNAT --to 192.168.0.7
iptables		-A forwarding_rule -i $WAN -p udp --dport 53 -d 192.168.0.7 -j ACCEPT


#Serveur Web accessible depuis l'extérieur :
iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 80 -j DNAT --to 192.168.0.7
iptables		-A forwarding_rule -i $WAN -p tcp --dport 80 -d 192.168.0.7 -j ACCEPT


#Serveur Web accessible depuis sur votre ip publique mais depuis l'intérieur :
iptables -t nat -A prerouting_rule -i $LAN -p tcp -d $EXTIP --dport 80 -j DNAT --to 192.168.0.7
iptables		-A forwarding_rule -i $LAN -p tcp --dport 80 -d 192.168.0.7 -j ACCEPT
iptables -t nat -A postrouting_rule -o $LAN -p tcp -s 192.168.0.0/24 -d 192.168.0.7 --dport 80 -j SNAT --to-source 192.168.0.1


#Serveur Web https accessible depuis l'extérieur :
iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 443 -j DNAT --to 192.168.0.7
iptables		-A forwarding_rule -i $WAN -p tcp --dport 443 -d 192.168.0.7 -j ACCEPT

#Serveur Web https accessiblesur votre ip publique mais depuis l'intérieur
iptables -t nat -A prerouting_rule -i $LAN -p tcp -d $EXTIP --dport 443 -j DNAT --to 192.168.0.7
iptables		-A forwarding_rule -i $LAN -p tcp --dport 443 -d 192.168.0.7 -j ACCEPT
iptables -t nat -A postrouting_rule -o $LAN -p tcp -s 192.168.0.0/24 -d 192.168.0.7 --dport 443 -j SNAT --to-source 192.168.0.1


### Pour mettre un de vos pc en DMZ ( à placer à la fin des règles pour que les règles de NAT soient tout de mêmes prises en compte
# iptables -t nat -A prerouting_rule -i $WAN -j DNAT --to 192.168.1.2
# iptables		-A forwarding_rule -i $WAN -d 192.168.1.2 -j ACCEPT

3. Utilisation d'ipkg par BoobZ

Installation packages supplémentaires

Le fonctionnement de ipkg est quasi-similaire à apt ;-)

La 1er étapes c’est…de savoir ce qui est disponible, ensuite de réfléchir a ce que vous voulez installer .

- qu’y a t’il de disponible ? http://tracker.openwrt.org/packages/ un clique sur le package vous donnera plus d’info et http://tracker.openwrt.org/repositories/ où les liens vers les packages sont précisés….

- Ex : de site de depot http://openwrt.alphacore.net/experimental/

- édition du ipkg.conf : comme le fichier source.list sur debian, c’est le lien vers les dépôts openwrt, qui contiennent les packages à installer

il aura cette forma là :

src openwrt http://openwrt.alphacore.net/experimental/

dest root /

dest ram /tmp

- Mise à jour de la liste à disposition , une fois le fichier ipkg.conf édité comme il se doit, un coup de

moi@openwrt:/etc# ipkg update

Downloading http://openwrt.alphacore.net/experimental//Packages

Updated list of available packages in /usr/lib/ipkg/lists/openwrt

Done.

moi@openwrt:/etc#

- Listage des disponibilités :

moi@openwrt:/etc# ipkg list

6tunnel - 0.11rc1-1 - 6tunnel allows you to use services provided by IPv6 hosts with IPv4-only applications and vice-versa. It can bind to any of you

aes-util - 1.0.7-1 - aesutil is a command line program to encrypt and decrypt data using the Rjiandel algorythm.

aespipe - v2.3b-1 - aespipe program is AES encrypting or decrypting pipe. It reads from standard input and writes to standard output. It can be use

aircrack - 2.3-1 - 802.11 sniffer and WEP key cracker.

anapd - 0.27-1 - Open Source Napster Server & Client.

ands - 1.1-1 - adns is a resolver library for C (and C++) programs, and a collection of useful DNS resolver utilities.

ap-utils - 1.5-1 - Access Point Utilites for Unix - it's a set of utilites to configure and monitor Wireless Access Points under Unix using SNMP p

aphopper - 0.3-1 - AP Hopper is a program that automatically hops between access points of different wireless networks.

scd

……………

- recherche : logiquement ça devrait etre ipkg search interface mais cela ne me donne aucune réponse (je verrai plus tard…)

- l’installation :

moi@openwrt:/etc# ipkg install interface-nwn

Installing interface-nwn (0.2-1) to root...

Downloading http://openwrt.alphacore.net/experimental/....2-1_mipsel.ipk

Installing haserl (0.8.0-1) to root...

Downloading http://openwrt.alphacore.net/experimental/....0-1_mipsel.ipk

Configuring haserl

Configuring interface-nwn

Done.

Faites vous plaisir….

( Merci @ toi pour cette contribution :) ).

4. Installation d'httpd : par BoobZ :)

Installation mini-http

Avec les source qui vont bien (cf ipkg et tracker.openwrt.org)

Ipkg install mini-httpd

De là et pour le moment (en attendant d’autres contibuteurs qui disposeraient de plus de temps….), il faut créé le fichier /etc/httpd.conf (j’ai récupéré la source sur un forum)

# - Specification of Allow all (A:*) is a no-op

#

# Example:

# 1. Allow only specified addresses

# A:172.20 # Allow any address that begins with 172.20.

# A:10.10. # Allow any address that begins with 10.10.

# A:127.0.0.1 # Allow local loopback connections

# D:* # Deny from other IP connections

#

# 2. Only deny specified addresses

# D:1.2.3. # deny from 1.2.3.0 - 1.2.3.255

# D:2.3.4. # deny from 2.3.4.0 - 2.3.4.255

# A:* # (optional line added for clarity)

#

# Note:

# A:*

# D:*

# Mean dany ALL !!!!

#

A:*

#

"/etc/httpd.conf" line 47 of 97 --48%--

#

# Example :

# /cgi-bin:admin:FOO

#

# MD5 crypt password :

# httpd -m "_password_"

# Example :

# httpd -m "astro" => $1$$e6xMPuPW0w8dESCuffefU.

# /work:toor:$1$$e6xMPuPW0w8dESCuffefU.

#

#

# MIME type part

#

# .ext:mime/type new mime type not compiled into httpd

#

# Example :

# .ipk:application/octet-stream

#

# MIME type compiled into httpd

#

# .htm:text/html

# .html:text/html

# .jpg:image/jpeg

# .jpeg:image/jpeg

# .gif:image/gif

# .png:image/png

# .txt:text/plain

# .h:text/plain

# .c:text/plain

# .cc:text/plain

# .cpp:text/plain

# .css:text/css

# .wav:audio/wav

# .avi:video/x-msvideo

# .qt:video/quicktime

# .mov:video/quicktime

# .mpe:video/mpeg

# .mpeg:video/mpeg

# .mid:audio/midi

# .midi:audio/midi

# .mp3:audio/mpeg

#

# Default MIME type is application/octet-stream if extension isnt set

#

Ensuite un petit ipkg install interface-nwn (interfac Nantes wireless forum : http://www.nantes-wireless.org/forum/viewforum.php?f=41 )

Ensuite le lancement du process httpd :

httpd -c /etc/httpd.conf -p 80 -h /www/

-c fichier de config

-p port d’ecoute de votre serveur

-h emplacement du répertoire source de votre site web

Ensuite allé vérifier votre serveur web…

La connexion doit s’effectuer sur http://adresseipserverweb/cgi-bin/index.cgi

On arrive sur l’interface de configuration plus conviviale pour ceux qui n’apprécient pas ou n’ont pas le temps pour la ligne de commande

Bien entendu il faudra installer les modules nécessaires …Par exemple pour avoir accès au menu network/ configuration du pare-feu, il faudra installer le package interface-nwn-network-firewall

Bon courage à tous…

5. Vos packages Perso :

Dans cette rubrique nous allons regrouper les packages créés par les membres du forum :) .

Pour créer un package, on peut s'aider de cette page, ainsi que de celle là .

Je commence avec mon second package ( le premier n'a pas d'intérêt ... )

Iftop :

:)

Miau :

Linkd :

Autres packages : http://openwrt.poulpy.org

Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 138
  • Créé
  • Dernière réponse

super , il tombe bien ce tuto !

je suis entrain d'hesiter entre un routeur netgear et un linksys pour remplacer mon dg834 qui fait office de simple switch

sur mon reseau (plus de firewall , plus de dhcp ...)

Le firmware semble etre super interressant et pourrait faire pencher la balance en faveur du WRT :zarb:

++

Lien vers le commentaire
Partager sur d’autres sites

Que faire en cas de problèmes :

http://wiki.openwrt.org/OpenWrtDocs/Troubleshooting

Le plus important est d'activer le boot_wait sur ton routeur. Cette option permet au routeur, lorsqu'il démarre, de télécharger un firmware par tftp.

Pour activer le boot_wait mode :

3.2.1. Enabling boot_wait

If the boot_wait variable is set, the bootup process is delayed by few seconds allowing a new firmware to be installed through the bootloader using tftp. Setting of the boot_wait variable is done through a bug in the Ping.asp administration page by pinging the certain "addresses" listed below. You find ping.asp by navigating through the administration page and selecting diagnostics..

First, for this to work the internet port must have a valid ip address, either from dhcp or manually configured from the main page - the port itself doesn't need to be connected unless using dhcp. Next, navigate to the Ping.asp page and enter exactly each line listed below, one line at a time into the "IP Address" field, pressing the Ping button after each entry.

/!\ The last versions of the firmware to support the Ping.asp bug described below are [WWW] 3.01.3 for the WRT54G (up to/including v3.0) and [WWW] 3.37.2 for the WRT54GS (up to/including v2.0). Downgrading to these firmwares is required to enable boot_wait.

/!\ I have a WRT54GS 1.1 with a firmware version 4.50 - the Ping.asp trick worked for me without downgrading the firmware! This seems to work as well with the WRT54G V3.1 with firmware V4.01.2. If you are lazy, like me, it may worth a try.

/!\ Ping bug still exists in firmware 4.20.6 on hardware 4.0 and firmware 4.20.7 on hardware 2.0, but it is necessary to use the ping_times variation on the hack, plus some stripping of javascript. Details [WWW] here.

;cp${IFS}*/*/nvram${IFS}/tmp/n

;*/n${IFS}set${IFS}boot_wait=on

;*/n${IFS}commit

;*/n${IFS}show>tmp/ping.log

When you get to the last command the ping window should be filled with a long list of variables including boot_wait=on somewhere in that list.

This ping exploit definitely works with ALL WRT54G/GS VERSIONS. You must have an address on the WAN port. In the Setup/Basic Setup/Internet Setup section you may wish to select Static IP and set IP=10.0.0.1, Mask=255.0.0.0, Gateway=10.0.0.2. Those values are meaningless; you'll be overwriting them soon with new firmware. Note: flashing a Linksys WRT54GS v1.1 by using TFTP is only possible using the Port 1 of the switch!

You can also use the [WWW] takeover script to make ping hack in a single command (need a shell command line interpreter). This script expects to find the to-be flashed firmware in a file called openwrt-g-code.bin, which is in the current directory.

There is another bug still present in Ping.asp (firmware revision 3.03.1) where you can put your shell code into the ping_times variable. See [WWW] http://www.linksysinfo.org/modules.php?nam...viewtopic&t=448 This means you don't have to downgrade your firmware first and it removes the input size restrictions so you can use more obvious shell commands like:

`/usr/sbin/nvram set boot_wait=on`

`/usr/sbin/nvram commit`

`/usr/sbin/nvram show > /tmp/ping.log`

For instance, if you are in Unix and have Perl and LWP installed, you may issue this command:

echo 'submit_button=Ping&submit_type=start&action=Apply&change_action=gozila_cgi&ping_ip=10.0.0.1&ping_times=`/usr/sbin/nvram show > /tmp/ping.log`'|POST -C admin:admin http://192.168.1.1/apply.cgi

Une fois celà fait, tu peux redémarrer ton routeur et en suivant les instructions dans le premier lien, reflasher ton routeur.

En ce qui concerne les risques, je n'ai pas vu de routeur brické à cause d'un mauvais flashage mais celà est toujours possible, de plus l'installation d'un firmware non officiel annule ta garantie, ce qui est bon à savoir.

Lien vers le commentaire
Partager sur d’autres sites

C'est du site que je vais tirer la plupart des informations qui seront dans ce topic, seulement elles seront traduites et ( la plupart du temps ) testées. :ouioui:

:modoreussi::devil::yes:

Sauf que moi je vais le tester avant que t'ai le temps de tout faire le tuto :ouioui:

Pour le hack de la page Ping, j'ai essayer avec Firefox et IE, ça ne marche pas. J'ai donc vérifiez la commande, est-ce que ça se peut qu'il faut que ce soit fait sous Linux ? Ou j'ai peut-être mal fait quelque chose, j'ai entrer une par une les commandes, avec le ; au début de chaque.

Lien vers le commentaire
Partager sur d’autres sites

C'est du site que je vais tirer la plupart des informations qui seront dans ce topic, seulement elles seront traduites et ( la plupart du temps ) testées. ;)

Très bonne idée ce topic. ;)

Merci pour la traduction, sympas de penser aux anglophobes ;)

:zarb: Poulpatine, l'homme grâce auquel j'ai un Linksys wrt54gs ;)

Lien vers le commentaire
Partager sur d’autres sites

test1.png

Ah ok XZombi, en fait je suis resté trés peu de temps sur le firmware Linksys, donc je ne me souviens plus de ses options car dés le début j'ai installé Alchemy de Sveasoft.

Si le hack ping ne passe pas c'est ptet que ton firmware est trop récent. Une solution serait de le downgrader avec un firmware linksys pour ensuite faire le hack pour vérifier ton boot_wait et enfin, flasher avec OpenWRT.

Ce que je préconise pour installer OpenWRT,plutot que de passer par le tftp c'est de passer par la page "firmware upgrade" qui fonctionne trés bien :).

Par cette page j'ai fait :

- Linksys -> Sveasoft

- Sveasoft -> OpenWRT ( squashfs )

et ce, sans rencontrer aucun soucis.

Sinon, il y a aussi cette méthode ( pour le boot_wait ) qui à l'air de fonctionner bien que je ne l'ai pas testé :

http://www.linksysinfo.org/modules.php?nam...viewtopic&t=448.

hbt_oz : \o/ :) bah de rien, j'espere remplir le topic avec plein d'infos utiles :)

Lien vers le commentaire
Partager sur d’autres sites

Merci Poulpo ! :non:

Mon firware est V3.0 pourtant ! Mais je peux passer Linksys -> Sveasoft via la page "firmware upgrade" ? Ou c'est vraiment un firmware Linksys qu'il faut absolument la ?

Dans le fond ce serait bien que tu me dise comment t'avais fait pour passer le tien a Sveasoft :mdr:

Pour passer le mien à Sveasoft je suis passé par la page "firmware upgrade" et ça s'est fait sans problèmes, donc, non c'est pas spécifiquement un fw linksys dont tu aurais besoin.

:)

Lien vers le commentaire
Partager sur d’autres sites

Merci Poulpo ! :francais:

Mon firware est V3.0 pourtant ! Mais je peux passer Linksys -> Sveasoft via la page "firmware upgrade" ? Ou c'est vraiment un firmware Linksys qu'il faut absolument la ?

Dans le fond ce serait bien que tu me dise comment t'avais fait pour passer le tien a Sveasoft :non:

Pour passer le mien à Sveasoft je suis passé par la page "firmware upgrade" et ça s'est fait sans problèmes, donc, non c'est pas spécifiquement un fw linksys dont tu aurais besoin.

:)

:mdr: Je test ca ce soir :non:

Lien vers le commentaire
Partager sur d’autres sites

C'est bon, j'ai installé le Firmware Version: Alchemy-V1.0 v3.37.6.8sv

Déjà rendu là, y'as plein de nouvelle option. Et ce qui est intéressant, c'est que je ne les connait pas toute. Ouf, vas falloir que je me documente la dessus.

La bin j'hésite à mettre OpenWRT parce que j'aurai pas le temps de tout configurer, et y'as pas que moi sur le routeur, y'as l'ordi à ma famille et le portable que je prête à mes soeurs. :smack:

Mais je vais regarder ça mardi surement.

Lien vers le commentaire
Partager sur d’autres sites

Déja sur Alchemy tu peux te connecter par ssh et regarder un peu les options en nvram ( ce sont les plus intéressantes ;-) ).

Attention, les options que tu modifies avec la commande nvram ne seront plus valables aprés un reboot du routeur, si tu veux les valider pour de bon tu dois faire un "nvram commit" mais fais bien attention à ce que tu fait avant de faire ce commit :)

Lien vers le commentaire
Partager sur d’autres sites

La bin j'hésite à mettre OpenWRT parce que j'aurai pas le temps de tout configurer, et y'as pas que moi sur le routeur, y'as l'ordi à ma famille et le portable que je prête à mes soeurs. :roll:

Salut,

pourtant tu devrais, j'ai flasher du classique linksys vers openwrt, quand j'ai mater la config sous openwrt je me suis rendu compte qu'il s'etait appuyé sur l'ancienne config (WEP/DHCP.....) donc pô de soucis sur les clients, ils pourront toujours se connectés ;-)

Par contre afin de simplifier la venue des gens sur ce magnifique firmware,Ca serait cool de mettre en place un petit script iptable (je m'en occupe si je trouve un peu de temps aujourd'hui...) commenté afin de laisser les gens libre des règles...

++

Lien vers le commentaire
Partager sur d’autres sites

Nan, comme l'a dit Boobz les settings restent les mêmes, ils sont tous en nvram et apparement la structure est la même.

J'ai fait linksys > sveasoft > openwrt sans rien changer.

Bon aprés sous openwrt je les ai resettés pour faire un peu mumuse et voir les settings de base :)

Pour le script iptables je vais déja poster mon script en première page histoire de donner quelques infos :).

( XZombi, ton avatar est prêt ;-), désolé de pas l'avoir fait plus tôt :-/ ).

@++

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.


×
×
  • Créer...