Projet

Général

Profil

AtelierCanal2013 » Historique » Version 36

« Précédent - Version 36/37 (diff) - Suivant » - Version actuelle
Laurent GUERBY, 26/05/2016 18:22


AtelierCanal2013

Objectif

Wifi pour les peniches du parc du canal a Ramonville

Contact ok planet science pour test puis install
Contact TODO capitainerie via planet science

Routage

L'idée est d'utiliser la connection internet d'un sympathisant (ici ADSL chez Planet Science) pour en faire un depart reseau 5 GHz avec un routage en IPv4 publique vers l'adherent sans en utiliser sur les intermediaires. Cela peut se faire facilement avec tunnel openwrt sur un PC Linux mais en pratique on peut aussi le faire avec un simple TP-Link 740N sous Openwrt qui a l'avantage d'un faible prix (16 euros) et faible encombrement/consomation, parfaitement silencieux.

Sur le routeur gw a Paris

qui a pour ip publique IP_ROUTEUR_PARIS

openvpn --mktun --dev-type tun --dev tunpsp
ip link set tunpsp up
openvpn --dev tunpsp --dev-type tun --cipher none --auth none --port PORT_NUMBER --verb 3 --proto tcp-server --daemon --log-append SOME_LOG --keepalive 10 60
ip addr add 10.0.28.1/24 dev tunpsp
ip route add IP_PUBLIQUE/32 dev tunpsp

Ne pas oublier de mettre la route sur h3 (les dev tun ne se propagent pas par bird 1.2.x visiblement).

Sur le 740N a Planet science

- port WAN branché sur le reseau local de planet science (donc la box ADSL)
- port LAN vers l'antenne 5 GHz AP

network / interfaces
Wifi : disable
br-lan : IPv4 statique 192.168.1.1/24 + disable DHCP
wan : DHCP client

system / software
install packages : openvpn-devel-nossl ip
Pour ipv6 : kmod-ipv6 ip6tables kmod-ip6tables radvd luci-app-radvd
adds implicitely: libip6tc libdaemon

system / startup
openvpn disable
firewall disable

system / startup / local startup

# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.

openvpn --mktun --dev-type tun --dev tunpsp
ip li set tunpsp up
ip a a 10.0.28.2/24 dev tunpsp
openvpn --dev tunpsp --dev-type tun --lport 0 --remote IP_ROUTEUR_PARIS PORT_NUMBER --proto tcp-client --daemon --keepalive 10 60

ip route add 10.0.28.0/24 dev tunpsp table 25
ip route add default via 10.0.28.1 dev tunpsp table 25 
ip rule add from 10.0.28.2 table 25

ip route add IP_PUBLIQUE/32 dev br-lan
ip rule add from IP_PUBLIQUE/32 table 25

exit 0

Antennes AP et STA

Les antennes 5 GHz sont en bridge avec des IP admin locales
192.168.1.21/24 AP planet science
192.168.1.22/24 STA adherent 1
...

Sur le 740N adherent

sur routeur client
- port WAN sur l'antenne STA 5 GHz client
- port LAN et wifi = br-lan = reseau local

system / software
important installer le paquet : ip

network / interfaces
wan static address IP_PUBLIQUE/32
use DNS IP_DNS

system / startup / local startup

# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.

ip route add 192.168.1.0/24 dev eth1
ip route add default via 192.168.1.1

exit 0

IPv6

TODO

Modele financier

  • 20 (740N sur box) + 60 (LocoM5 AP) = 80 euros de setup (+ cables)
  • 20 (740N LAN adherent) + 60 (LocoM5 STA) = 80 euros/adherent (+ cables)
  • participation eventuelle a la connection ADSL du local
  • total 160 euros + cables + participation

Pour 1 adherent 160 euros, 8 mois d'amortissement avec 20/mois
Pour 2 adherents 240 euros, 6 mois d'amortissement avec 20+20/mois

Liens

http://wiki.freifunk.net/images/7/73/Vortrag.pdf

echo 50 XY »/etc/iproute2/rt tables
ip rule add from $HNA/$MSK prio 30002 table XY
ip rule add to $HNA/$MSK prio 30001 lookup main
ip route add default \
via $TUNNEL NEIGH IP \
dev $TUNNEL DEV \
table XY
ip route flush cache

ip tunnel \
add tunnel0 \
mode ipip \
remote 10.10.1.1 \
local 10.10.99.1 \
compress lzo
ip link set dev ipip0 up
ip address add 172.16.1.2/24 dev tunnel0

Version 2014

Rue de l'ukraine

Sur h7 :

openvpn --mktun --dev-type tun --dev tunukr
ip link set tunukr up
openvpn --dev tunukr --dev-type tun --cipher none --auth none --port 65114 --verb 3 --proto udp --local 91.224.148.1 --daemon --log-append /root/vpn/65114.log --keepalive 10 60
ip addr add 10.0.129.1/24 dev tunukr
ip route add 172.31.129.0/24 dev tunukr

Sur 740N rc.local :

openvpn --mktun --dev-type tun --dev tunukr
ip link set tunukr up
ip addr add 10.0.129.2/24 dev tunukr
openvpn --dev tunukr --dev-type tun --lport 0 --remote 91.224.148.1 65114 --proto udp --daemon --keepalive 10 60

ip route add default dev tunukr table 25
ip -6 route add default dev tunukr table 25
ip route add 172.31.129.0/24 dev br-lan table 25

ip rule add from 10.0.129.2 table 25
ip rule add from 172.31.129.0/24 lookup 25

ip addr add 89.234.156.0/32 dev br-lan
ip -6 addr add fe80::31/64 dev br-lan

WAN: DHCP
LAN: 172.31.129.1/24

Version 2015

Sur le 740N de routage ADSL Montescot

packages a installer sur attitude adjustment : openvpn-devel-nossl ip kmod-ipv6

opkg update
opkg install openvpn-devel-nossl ip kmod-ipv6 # or openvpn-nossl 

Ne pas oublier de desactiver le firewall.

Attention : j'utilise OpenWRT attitude adjustment 12.09 pour les 740N de tunnel car avec barrier breaker /etc/rc.local s'execute avant le up des interfaces reseau. J'ai pas cherché a creuser, il doit y avoir une solution en y passant un peu de temps (d'un autre coté la 12.09 est extraordinairement stable avec le setup tunnel, on n'a jamais eu le moindre soucis et des uptime > 6 mois).

A tester avec Chaos Calmer aussi.

Pour résoudre le problème d'initialisation sur Barrier Breaker, une solution est d'utiliser l'intégration d'openvpn dans le système fournie par openwrt :
  • on ne met rien dans /etc/rc.local
  • /etc/init.d/openvpn enable
  • dans /etc/config/openvpn configurer un tunnel avec une "custom_config" :
    openvpn.custom_config=openvpn
    openvpn.custom_config.enabled=1
    openvpn.custom_config.config=/etc/openvpn/client.conf
    
  • dans /etc/openvpn créer un fichier de configuration openvpn "classique" client.conf
  • créer deux scripts vpn.up et vpn.down, leur donner les droits d'exécution (chmod +x)
  • dans client.conf ajouter les directives permettant de lancer des scripts après l'établissement du tunnel et avant son extinction
    script-security 2
    up /etc/openvpn/vpn.up
    down /etc/openvpn/vpn.down
    
  • dans /etc/openvpn/vpn.up
    #!/bin/sh
    ip route add default dev tunmts table 25
    # etc.. (cf la suite)
    
  • dans /etc/openvpn/vpn.down on met l'inverse
    #!/bin/sh
    ip route del default dev tunmts table 25
    # etc.. (cf plus bas)
    

    Ainsi, le tunnel est créé après que le network et le firewall soient configurés, et les routes sont bien enregistrées
  • /etc/init.d/openvpn restart

Reseau 2015

Normalement deux plages sont assignés : 10.0.XXX.0/24 pour l'interco tunnel et 172.31.XXX.0/24 pour le LAN antenne, IP et PORT pour le VPN sont aussi assignés.

Mettre 172.31.XXX.0/24 sur le br-lan du routeur 740N et desactiver le serveur DHCP sur br-lan.

Dans /etc/rc.local :

sleep 20 # since barrier breaker interface not up when rc.local called

openvpn --mktun --dev-type tun --dev tunmts
ip link set tunmts up
openvpn --dev tunmts --dev-type tun  --lport 0 --proto udp --daemon --remote IP PORT --keepalive 10 60 
ip addr add 10.0.XXX.2/24 dev tunmts

ip route add default dev tunmts table 25 priority 10000
ip -6 route add default dev tunmts table 25 priority 10001

ip rule add from all iif tunmts table 25 priority 10002
ip -6 rule add from all iif tunmts table 25 priority 10003

ip rule add from all iif br-lan table 25 priority 10004
ip -6 rule add from all iif br-lan table 25 priority 10005

ip rule add from 10.0.XXX.2 table 25 priority 10006
ip rule add from 172.31.XXX.1 table 25 priority 10007

ip route add 172.31.XXX.0/24 dev br-lan table 25

ip -6 addr add fe80::31/64 dev br-lan
ip addr add 89.234.156.0/32 dev br-lan

# Par adherent
ip route add 89.234.156.XX/32 dev br-lan table 25
ip -6 route add 2a01:6600:8083:YY00::/56 via fe80::83:YY dev br-lan table 25

Si le tunnel est fait sur une machine Linux (et pas un 740N) ne pas oublier de rajouter dans /etc/rc.local :

echo 1 > /proc/sys/net/ipv4/ip_forward
for i in /proc/sys/net/ipv6/conf/*; do for j in autoconf accept_ra; do echo 0 > $i/$j; done;done
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding