« Réseau@elaboratoire » : différence entre les versions

De Breizh-Entropy
Aller à la navigation Aller à la recherche
m (intro physique)
m (intro physique)
Ligne 25 : Ligne 25 :
Il faut mettre un relai plus près des chap'.
Il faut mettre un relai plus près des chap'.


[[File:Map elabo.png]]
[[File:Map elabo.png|600px]]


== Architecture logique ==
== Architecture logique ==

Version du 18 mars 2011 à 16:01

Architecture physique

Contexte

Deux lieux :

  • l'Élaoratoire (17B av du chardonnet, 48.108587 : -1.645598)
  • le "48" (48 av Villebois-Mareuil, 48.106852 : -1.651019)

Une freebox dans chaque lieu. Des lieux communs, des ateliers, des habitations réparties.

48

Une freebox installée en équilibre précaire. Rien d'autre.

Il faut (dans l'ordre) :

  • cabler la cuisine
  • mettre une grosse antenne omni à la place de la freebox
  • cabler la maison
  • installer un relai au fond

Élabo

Une freebox dans le bureau, arrose tout le bâtiment.

Il faut mettre un relai plus près des chap'.

Map elabo.png

Architecture logique

Une première proposition pourrait ressembler à ça:

Elabo.png

Adressage IP

  • Réseau: 10.42.0.0/20
    • Infrastructure : 10.42.0.0/23
      • Serveurs etc : 10.42.0.0 /24
        • Routeur: 10.42.0.1
        • Serveurs: 10.42.0.2-254
      • Reservé : 10.42.1.0 /24
    • Hackerspace : 10.42.2.0/23
      • 10.42.2.1/24
        • Routeur : 10.42.2.1
        • Clients : 10.42.2.2-254
      • Reservé: 10.42.3.0/24
    • 48 : 10.42.4.0/23
      • Normal : 10.42.4.0/24
        • Routeur : 10.42.4.1
        • Clients : 10.42.4.2-254
      • Anonyme : 10.42.5.0/24
        • Routeur : 10.42.5.1
        • Clients : 10.42.5.2-254
    • Chardonet : 10.42.6.0/23
      • Normal : 10.42.6.0/24
        • Routeur : 10.42.6.1
        • Clients : 10.42.6.2-254
      • Anonyme : 10.42.7.0/24
        • Routeur : 10.42.7.1
        • Clients : 10.42.7.2-254
    • Reservé: 10.42.8.0/23
      • Reservé: 10.42.8.0/24
      • Reservé: 10.42.9.0/24
    • Reservé: 10.42.10.0/23
      • Reservé: 10.42.10.0/24
      • Reservé: 10.42.11.0/24
    • Reservé: 10.42.12.0/23
      • Reservé: 10.42.12.0/24
      • Reservé: 10.42.13.0/24
    • Reservé: 10.42.14.0/23
      • Reservé: 10.42.14.0/24
      • Reservé: 10.42.15.0/24


  • DN42: 172.22.108.0/23
    • Infra: 172.22.108.0/24
      • Routeur: 172.22.108.1
        Réservé: 172.22.108.2-254
        TODO: /25 pour les serveurs ?
    • Clients hackerspace: 172.22.109.0/24
      • Routeur: 172.22.109.1
      • Clients: 172.22.109.2-254

Topologie

  • 2 Vlan / SSIDs proposés sur le wifi:
    • 1 vlan pour les clients normaux
    • 1 vlan pour les clients anonymes.

Notes

  • Connexion anonyme via VPN toile-libre.
  • Accès IPv6 pour clients normaux.
  • Accès DN42 pour les clients normaux.
  • Chardonnet et 48 relié par pont wifi + VPN en backup (limité à 1Mb/s)
  • Pourquoi un/des serveur(s): Pour proposer quelques services, typiquement partage de fichier, boot réseaux vers des livecds etc
  • Pourquoi plein d'adresses reservées ? Pour prévoir une config un peu large permettant de ne pas avoir à tout casser en cas de nouveau besoin (typiquement, interco avec un autre site)

TODO

  • Documenter, documenter, documenter, documenter ...
  • Inventaire matos
  • Mise en place routeur
  • Mise en place premier AP wifi

Inventaire materiel

  • 1x Firebox x550: PC 1ghz 512 Mb ram 8 ports réseau 100Mb/s
  • 1x poweredge 1950: PC 2x Xeon 3Ghz , 2 go de ram , 2x36Go SCSI.
  • 2x NSLU2

Configurations

Routeur 1

Materiel

Firebox x550: PC 1ghz 512 Mb ram 8 ports réseau 100Mb/s

OS

Debian squeeze.

Partionnement:

  • /dev/sda5 : /boot => 100Mo
  • /dev/sda6 : LVM => Reste
    • / => 1Go
    • /usr => 2Go
    • /var => 2Go
    • swap => 1Go
    • reste => inutilisé

Interfaces

auto lo
iface lo inet loopback

#infra normal etc
auto eth1
iface eth1 inet static
    address 10.42.0.1
    netmask 255.255.255.0

# Hackerspace
auto eth2
iface eth2 inet static
    address 10.42.2.1
    netmask 255.255.255.0

# 48 normal
auto eth3
iface eth3 inet static
    address 10.42.4.1
    netmask 255.255.255.0

# 48 Anonyme
auto eth4
iface eth4 inet static
    address 10.42.5.1
    netmask 255.255.255.0

IPv6

nano /etc/network/interfaces
---
auto he-ipv6
iface he-ipv6 inet6 v4tunnel
	endpoint 216.66.84.42
	address	TODO
	netmask 64
	up	ip -6 route add 2000::/3 dev he-ipv6
	down	ip -6 route add 2000::/3 dev he-ipv6
	mtu	1480

auto dummy0
iface dummy0 inet6 static
	address TODO
	netmask 64
---
apt-get install radvd

VPN

https://www.toile-libre.org/fr/node/102

Firewall

(work in progress)

#########################################################################################################
# RAZ
#########################################################################################################
iptables -F
iptables -X

ip6tables -F
ip6tables -X

iptables -t nat -F
iptables -t nat -X

#########################################################################################################
# On commence par definir une serie de variable pour associer les interfaces au type de réseau.
#########################################################################################################

# interfaces physiques
INTERNET=eth0
SERVEURS=eth1
HACKERSPACE=eth2
CLIENTS=eth3
ANONYMES=eth4

# interfaces virtuelles
VPN=tap0
DN42=tap1
INTERNET6=he-ipv6

#########################################################################################################
# On definit quelques fonctions utilitaires
#########################################################################################################

# iptables pour ipv6 et ipv4
ip46tables () {
    iptables $@
    ip6tables $@
}

# aliases
FW = ip46tables
FW4 = iptables
FW6 = ip6tables

# log et refuse le paquet
$FW -N LOGREJECT
$FW -A LOGREJECT -j LOG
$FW -A LOGREJECT -j REJECT

# log et efface le paquet
$FW -N LOGDROP
$FW -A LOGDROP -j LOG
$FW -A LOGDROP -j DROP

# log et accepte le paquet
$FW -N LOGACCEPT
$FW -A LOGACCEPT -j LOG
$FW -A LOGACCEPT -j ACCEPT

#########################################################################################################
# Cas du traffic entrant sur le routeur
#########################################################################################################

$FW -A INPUT -i $HACKERSPACE -j ACCEPT
$FW -A INPUT -i $CLIENTS -j ACCEPT
$FW -A INPUT -i $ANONYMES -j ACCEPT
$FW -A INPUT -i $SERVEURS -j ACCEPT

$FW -N INPUT_INTERNET
$FW -N INPUT_DN42
$FW -A INPUT -i $INTERNET -j INPUT_INTERNET
$FW -A INPUT -i $DN42 -j INPUT_DN42

$FW -A INPUT -j LOGDROP

#########################################################################################################
# Cas du traffic sortant depuis le routeur
#########################################################################################################

# on accepte tout
$FW -A OUTPUT $INTERNET -j ACCEPT

#########################################################################################################
# Cas du traffic que le routeur transfere
#########################################################################################################

###########################
# Clients
###########################
$FW -A FORWARD -i $CLIENTS -o $INTERNET -j ACCEPT
$FW -A FORWARD -i $CLIENTS -o $HACKERSPACE -j ACCEPT
$FW -A FORWARD -i $CLIENTS -o $SERVEURS -j ACCEPT
$FW -A FORWARD -i $CLIENTS -o $ANONYMES -j ACCEPT

###########################
# Clients Anonymes
###########################
$FW -A FORWARD -i $ANONYMES -o $VPN -j ACCEPT
$FW -A FORWARD -i $ANONYMES -o $HACKERSPACE -j ACCEPT
$FW -A FORWARD -i $ANONYMES -o $SERVEURS -j ACCEPT
$FW -A FORWARD -i $ANONYMES -o $CLIENTS -j ACCEPT

###########################
# hackerspace
###########################
$FW -A FORWARD -i $HACKERSPACE -o $INTERNET -j ACCEPT
$FW -A FORWARD -i $HACKERSPACE -o $INTERNET6 -j ACCEPT
$FW -A FORWARD -i $HACKERSPACE -o $CLIENTS -j ACCEPT
$FW -A FORWARD -i $HACKERSPACE -o $ANONYMES -j ACCEPT
$FW -A FORWARD -i $HACKERSPACE -o $SERVEURS -j ACCEPT
$FW -A FORWARD -i $HACKERSPACE -o $DN42 -j ACCEPT

###########################
# Serveurs
###########################
$FW -A FORWARD -i $SERVEURS -o $INTERNET -j ACCEPT
$FW -A FORWARD -i $SERVEURS -o $CLIENTS -j ACCEPT
$FW -A FORWARD -i $SERVEURS -o $ANONYMES -j ACCEPT
$FW -A FORWARD -i $SERVEURS -o $HACKERSPACE -j ACCEPT

###########################
# Internet
###########################
$FW -A FORWARD -i $INTERNET -m state --state RELATED,ESTABLISHED -j ACCEPT
$FW -A FORWARD -i $INTERNET6 -m state --state RELATED,ESTABLISHED -j ACCEPT

$FW -N FWD_INTERNET
$FW -A FORWARD -i $INTERNET -J FWD_INTERNET
$FW -A FORWARD -i $INTERNET6 -J FWD_INTERNET

###########################
# VPN
###########################
$FW -A FORWARD -i $VPN -m state --state RELATED,ESTABLISHED -j ACCEPT

###########################
# DN42
###########################
$FW -A FORWARD -i $DN42 -m state --state RELATED,ESTABLISHED -j ACCEPT

$FW -N FWD_DN42
$FW -A FORWARD -i $DN42 -J FWD_DN42

###########################
# RESTE
###########################
$FW -A FORWARD -j LOGDROP

#########################################################################################################
# Cas particuliers
#########################################################################################################

# trafic internet -> routeur
$FW4 -A INPUT_INTERNET -p icmp -j ACCEPT
$FW6 -A INPUT_INTERNET -p icmpv6 -j ACCEPT
$FW -A INPUT_INTERNET -p tcp -m tcp --dport 22 -j ACCEPT

# trafic dn42 -> routeur
$FW4 -A INPUT_DN42 -p icmp -j ACCEPT
$FW6 -A INPUT_DN42 -p icmpv6 -j ACCEPT
$FW -A INPUT_DN42 -p tcp -m tcp --dport 22 -j ACCEPT

# TODO: mettre ici l'hébergement de services.

#########################################################################################################
#		NAT
#########################################################################################################

$FW4 -t nat -P PREROUTING ACCEPT
$FW4 -t nat -P POSTROUTING ACCEPT
$FW4 -t nat -P OUTPUT ACCEPT

$FW4 -t nat -A POSTROUTING -d -i $SERVEURS -o $INTERNET -j MASQUERADE
$FW4 -t nat -A POSTROUTING -d -i $HACKERSPACE -o $INTERNET -j MASQUERADE
$FW4 -t nat -A POSTROUTING -d -i $CLIENTS  -o $INTERNET-j MASQUERADE

$FW4 -t nat -A POSTROUTING -d -i $ANONYMES -o $VPN -j MASQUERADE

$FW4 -t nat -A POSTROUTING -d -i $HACKERSPACE -o $DN42-j MASQUERADE

#########################################################################################################
# END !
#########################################################################################################
iptables-save > /etc/iptables.conf
ip6tables-save > /etc/ip6tables.conf

DHCP

ddns-update-style none;
update-static-leases on;

//option domain-name "@DOMAIN";
//option domain-name-servers @DNSIP1, @DNSIP2;
option netbios-name-servers 10.42.0.2;


default-lease-time 600;
max-lease-time 7200;

authoritative;
log-facility local7;

// We don't use dhcp in the server range
//subnet 10.42.0.0 netmask 255.255.255.0 {
//  option routers 10.42.0.1;
//  option domain-name-servers 10.42.0.1, 10.42.0.2;
//
//  pool {
//     range 10.42.0.2 10.42.0.254;
//  }
//}

//hackerspace
subnet 10.42.2.0 netmask 255.255.255.0 {
  option routers 10.42.2.1;
  option domain-name-servers 10.42.2.1, 10.42.0.2;

  pool {
     range 10.42.2.2 10.42.2.254;
     range 172.22.109.2 172.22.109.254 // c'est valide ça ?
  }
}

// clients 48
subnet 10.42.4.0 netmask 255.255.255.0 {
  option routers 10.42.4.1;
  option domain-name-servers 10.42.4.1, 10.42.0.2;

  pool {
     range 10.42.4.2 10.42.4.254;
  }
}

// anonymes 48
subnet 10.42.3.0 netmask 255.255.255.0 {
  option routers 10.42.3.1;
  option domain-name-servers 10.42.3.1, 10.42.0.2;

  pool {
     range 10.42.5.2 10.42.5.254;
  }
}

DNS

apt-get install bind
nano /etc/bind/named.conf.options
nano /etc/bind/named.conf.local

Monitoring

apt-get install logcheck nano /etc/cron.d/logcheck apt-get install rkhunter apt-get install munin-node

Serveur

Materiel

poweredge 1950: PC 2x Xeon 3Ghz , 2 go de ram , 2x36Go SCSI.

OS

Debian squeeze.

2 disques partionnés de manière identique pour raid

  • 1x Raid 1 100 Mo => /boot
  • 1x Raid 1 X Go => LVM
    • / => 1Go
    • /usr => 2Go
    • /var => 2Go
    • Reste => TODO
  • 2x Swap 1Go

Disque de données ?

  • /srv/data
    • /srv/data/shared
    • /srv/data/homes

Monitoring

apt-get install logcheck nano /etc/cron.d/logcheck apt-get install rkhunter apt-get install munin munin-node

Samba

apt-get install samba
nano /etc/samba/smb.conf
---
security = TODO
wins support = yes

[partage]
    path = /srv/data/shared
    read only = no
    create mask = 0777
    directory mask = 0777
    guest ok = yes
---

NFS

apt-get install nfs-kernel-server
nano /etc/exports
---
# TODO: corriger
/srv/data/	 10.42.*.*(rw,async,fsid=0,no_subtree_check,root_squash)
---

FTPD

apt-get install pure-ftpd

TFTP

TODO

apache

apt-get install apache2

php (fcgid)

apt-get install php-cgi libapache2-mod-fcgi

mysql

apt-get install mysql-server mysql-client