Ceci est une ancienne révision du document !
Table des matières
Brouillon
OpenWRT
Liens:
Il s'agit de changer le firmware d'un routeur Linksys WRT54G v2.0
Installer firmware
Reset du routeur
On remet le routeur dans un etat par défaut (parce que je n'ai plus le mot de passe!)
- Debrancher le routeur du courant
- Presser le bouton reset 30 secondes
- Brancher sur le courant en maintenant le bouton reset pendant encore une dizaine de secondes.
Version du WRT54G
Il existe une demi-dizaine de versions de routeur WRT54G.
D'aprés ce site, il suffit de regarder les 4 premières lettres du n° de série:
CDF1 = WRT54G v1.0 / ADM6996L Chipset / CPU 125Mhz
C'est mon mien ! Un peu vieux, mais je l'aime bien.
Loading
On choisis l'image:
pptp/ * Standard image (web interface, pptp)
On telecharge:
$ wget http://downloads.openwrt.org/whiterussian/newest/pptp/openwrt-wrt54g-squashfs.bin
( Dans un autre cas, j'ai choisit default/
)
upgrade
Brancher le routeur par les ports LAN.
Faire pointer son navigateur sur: http://192.168.1.1
(IP en dur!).
A la demande du user
taper admin
et la même chose pour le mot de passe.
Choisir une mise à jour du firmware
et donner le fichier précédement chargé.
Password
Une nouvelle interface web apparait, mais on va d'abord mettre un mot de passe:
$ telnet 192.168.1.1 ... root@OpenWrt:/# passwd Changing password for root Enter the new password (minimum of 5 characters) Please use a combination of upper and lower case letters and numbers. Enter new password: Re-enter new password: Password changed. root@OpenWrt:/#
On peut maintenant se reconnecter avec ssh
!
$ ssh root@192.168.1.1 ... enjoy !
Configurer le reseau
Selon un WRT54G v1 ou v2 et plus, on a ça:
Manufacturer | Model | Hardware version | LAN | WAN | WIFI |
Linksys | WRT54G | v1.x | vlan2 | vlan1 | eth2 |
Linksys | WRT54G | v2.x/v3.x/v4.0 | vlan0 | vlan1 | eth1 |
D'abord, le routeur s'est attribué lui-même l'IP 192.168.1.1 sur le LAN ! pas bien !
WAN
On va activer le WAN avec une IP en dur.
Il n'est pas nécessaire de faire:
# nvram set wan_ifname=vlan1
Puisque c'est déjà le cas !
# nvram get wan_ifname vlan1
Mais il faut bien faire ça:
# nvram set wan_proto=static # nvram set wan_ipaddr=192.168.0.52 # nvram set wan_netmask=255.255.255.0 # nvram set wan_gateway=192.168.0.254 # nvram set wan_dns=192.168.0.50
# nvram set lan_dns=192.168.0.50
L'IP du WAN est …52
et la Freebox est en …254
et on a un DNS en …50
.
On sauvegarde dans la NVRAM (sinon, c'est simplement en RAM!)
# nvram commit
Autoriser les connexions à SSH via le WAN
# vi /etc/firewall.user
Et faire en sorte d'avoir:
### Open port to WAN ## -- This allows port 22 to be answered by (dropbear on) the router iptables -t nat -A prerouting_wan -p tcp --dport 22 -j ACCEPT iptables -A input_wan -p tcp --dport 22 -j ACCEPT
Autoriser l'interface web via le WAN
iptables -t nat -A prerouting_wan -p tcp --dport 80 -j ACCEPT iptables -A input_wan -p tcp --dport 80 -j ACCEPT
Et puis:
# /etc/init.d/S35firewall
LAN
On va mettre le LAN dans un réseau étrange:
# nvram set lan_ipaddr=10.18.2.1 # nvram set lan_netmask=255.255.255.0
Et toujours:
# nvram commit
Mais:
# ifup lan
Et oui, pas besoin de reboot cette fois-ci… mais verifions quand même…
LAN libre
On est dans la configuration ou le côté WAN appartient en fait à un réseau local, et on veut faire en sorte que le LAN puisse atteindre le reseau WAN sans être NATé !
Pour cela, il suffit d'editer le fichier:
/etc/init.d/S35firewall
Et de faire en sorte de ne pas NATé en POSTROUTING du WAN:
(J'ai simplement mis en commentaire)
iptables -t nat -A POSTROUTING -j postrouting_rule # TJ ---- # iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE # ----
Et en enfin:
# /etc/init.d/S35firewall
LAN routé
forcer la route
Le LAN est “libre”, mais je veux qu'il atteigne directement une IP par defaut, sans autre possibilité.
Installons ip
de iproute2
:
# ipkg update # ipkg install ip
Ensuite, je fais un petit scripté nommé: /etc/init.d/S45iproute
#!/bin/sh ## TJ ## 25/07/2007 TABLE=200 MARK=0xfff0001 XIP=/usr/sbin/ip WAN="$(nvram get wan_ifname)" GW_IP="192.168.166.1" test -x $XIP || exit 0 case $1 in start) $XIP rule add fwmark $MARK table $TABLE $XIP route add default via $GW_IP dev $WAN table $TABLE $XIP route flush cache ;; stop) $XIP route del default via $GW_IP dev $WAN table $TABLE $XIP route flush cache $XIP rule del fwmark $MARK table $TABLE ;; *) echo "usage: $0 (start|stop)" exit 1 ;; esac exit 0
Explication:
- On utilise le marquage des paquets
- On associe au marquage une route vers le “firewall/gateway”.
Notez que la table numero 200
a ete choisit en aveugle, parce que je n'ai pas trouvé l'equivalent de Debian:
/etc/iproute2/rt_tables
Toutefois, on peut creer ce fichier, et ça marche aussi:
cat /etc/iproute2/rt_tables 200 freebox
Et voila. Je suis certain que quelques soient l'IP visé, elle sera routé vers le Firewall.
Le Firewall peut maintenant controler les echanges avec le reste du réseau.
Firewall
La regle créé ci-dessus, n'est activé qu'a partir du Firewall, on va proceder ainsi:
- Editer le fichier
/etc/init.d/S35firewall
- marquer ce qui entre par l'interface LAN, et qui n'est pas destine au LAN
Ce qui peut faire une regle IpTables de la forme:
iptables -t mangle -A PREROUTING -i $LAN -p all -s 192.168.1.0/24 -d ! 192.168.1.0/24 -j MARK --set-mark 0xfff0001
(A adapter au cas par cas)
LAN libre 2
Maintenant, je voudrais que tout le WAN puisse atteindre toutes les IP du LAN… mais ou est donc le controle du Firewall ? Il n'y en a plus. Enfin, ce controle est déporté sur un autre Firewall.
Bref, il faut editer le fichier:
/etc/firewall.user
Et ajouter:
# TJ iptables -A forwarding_wan -p all -d 10.18.2.0/24 -j ACCEPT
Rappel: c'est parce que la gateway va faire un rôle de Firewall.
WIFI simple en WPA
Lien:
Installer le package nas
:
# ipkg update # ipkg install nas
Fixer le nom du reseau wifi:
# nvram set wl0_ssid=tj
Le crypto:
# nvram set wl0_crypto=tkip # nvram set wl0_akm="psk psk2"
Et le mot de passe super secret:
# nvram set wl0_wpa_psk=le_mot_de_passe_super_secret_entre_8_et_63_caracteres
Verifier qu'on a bien:
# nvram get wl0_wep disabled # nvram get wl0_mode ap
Et si on ne veut pas que l'on broadcast le nom du reseau:
# nvram set wl0_closed=1
Et a la fin:
# nvram commit
Pour appliquer la nouvelle configuration du Wifi:
# ifup wifi
ou si ca ne fonctionne pas:
# reboot
Trucs
Hostname
# nvram set wan_hostname=MyHostName
A l'heure !
# ipkg install ntpclient
Donner l'adresse du serveur ntp
:
# nvram set ntp_server=<IP_du_serveur_NTP>
Verifier:
# nvram show | grep ntp ntp_enable=1 ntp_server=<IP_du_serveur_NTP> ntp_mode=auto
Et puis:
# nvram commit
Faire en sorte que ca fonctionne au prochain reboot:
Dans /etc/init.d/
, creer un fichier nommé: tz
contenant:
#!/bin/sh tz=$(nvram get time_zone) tz=${tz:-"CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00"} echo $tz > /etc/TZ
Et faire aussi:
# chmod a+x tz
Et enfin:
/etc/init.d/tz
Et voila le fichier /etc/TZ
, permettant enfin a date
de retourner la bonne heure.