Outils pour utilisateurs

Outils du site


informatique_openwrt

Ceci est une ancienne révision du document !


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!)

  1. Debrancher le routeur du courant
  2. Presser le bouton reset 30 secondes
  3. Brancher sur le courant en maintenant le bouton reset pendant encore une dizaine de secondes.

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

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

Comme on a un WRT54G v2, on a ça:

Manufacturer Model Hardware version LAN WAN WIFI
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 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
XIP=/usr/sbin/ip
WAN="$(nvram get wan_ifname)"
FW_IP="192.168.166.1"

test -x $XIP || exit 0

## effacer ce qui existe
$XIP route del default via $FW_IP dev $WAN table $TABLE >/dev/null 2>&1
$XIP rule del from 192.168.1.0/24 table $TABLE >/dev/null 2>&1

## ajouter
$XIP rule add from 192.168.1.0/24 table $TABLE
$XIP route add default via $FW_IP dev $WAN table $TABLE
$XIP route flush cache

exit 0

La premiere efface le routage en place, s'il y etait. On ignore les erreurs.
La deuxieme partie met en place le routage.

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

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.

effet de bord

Aprés avoir forcer le LAN vers une route, le problème est l'IP du routeur lui-même, dans la classe 192.168.1.0/24.
Son IP est 192.168.1.1, or, on dit maintenant d'envoyer toutes les requetes au firewall.
Mon mobile Wifi interroge le DNS en 192.168.1.1, et ce DNS n'existe pas, l'IP ne ping pas non plus.

Modifier pour NATé vers le DNS:

vi /etc/firewall.user

Et faire en sorte d'avoir:

# TJ
iptables -t nat -A prerouting_rule -p udp -s 192.168.1.0/24 -d 192.168.1.1 --dport 53 -j DNAT --to <IP_DU_DNS_DANS_192.168.166.0/24>
iptables -t nat -A prerouting_rule -p all -s 192.168.1.0/24 -d 192.168.1.1 -j DNAT --to <IP_DU_WAN_DANS_192.168.166.0/24>

On peut aussi opter pour une autre solution: laissé passer sur le routeur, et NATé a partir du firewall vers le DNS. C'est finalement la solution choisit. (oups:ca ne marche pas bien)

En fait, voici les règles:

# regles a cause d'iproute:
# TJ
iptables -t nat -A prerouting_rule -p udp -s 192.168.1.0/24 -d 192.168.1.1 --dport 53 -j DNAT --to <IP_DU_DNS>
iptables -t nat -A prerouting_rule -p tcp -s 192.168.1.0/24 -d 192.168.1.1 --dport 22 -j DNAT --to <IP_DE_MON_WAN>
iptables -t nat -A prerouting_rule -p icmp -s 192.168.1.0/24 -d 192.168.1.1 -j DNAT --to <IP_DE_MON_WAN>

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:

# wifi

ou

# wl

ou faute de mieux:

# 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.

informatique_openwrt.1185457707.txt.gz · Dernière modification : 2007/07/26 13:48 de thierry