Router Debian linux

debianRecentemente ho usato Debian 7 (Wheezy) come router per una rete domestica, cercherò di coprire la maggior parte degli aspetti della creazione di un router Debian linux per coloro che amano questo tipo di configurazioni, anche se questo tutorial è specifico per debian 7 (wheezy), la sua applicato può essere usata anche con altre distribuzioni Linux.

Obiettivo:

Creare un router Debian Linux, che consenta oltre alla navigazione senza fili (WIFI) di Internet per tutta la casa anche il controllo,il caching, il logging e il monitoraggio del traffico con alcuni strumenti integrati nella nostra distribuzione, in parole semplici creare una rete wifi con la flessibilità di Linux.

Hardware utilizzato:

  • Computer con Debian 7 ( wheezy ) installato su di essa : non hai bisogno di un computer potente per renderlo un router, un vecchio computer è sufficiente;tuttavia disporre di un pc con elevate caratteristiche è meglio perchè se si vuole eseguire più di un servizio su di esso,come un proxy di navigazione,avrà bisogno di più risorse.
  • 2 (o più) schede di rete Ethernet.
  • Modem/router ADSL: quello che avete ottenuto con il vostro provider internet,lasciate le funzionalità base di router attive ma disattivare il WiFi.
  • Router wireless: non è veramente un router (il routing sarà eseguito da Debian), ma lo useremo come punto di accesso( è necessario disattivare la funzionalità di routing) wifi e tutte le richieste di rete saranno rigirate a Debian.

Software utilizzato:

  • Server dhcp ISC: assegnerà gli indirizzi IP ai client collegati (PC, telefoni, tablet, ecc ..) per installarlo eseguire il seguente comando aptitude install isc-dhcp server
  • iptables: saranno utilizzati per inoltrare le richieste Ethernet (rete wireless locale e internet)
  • bind (opzionale): caching e inoltro richieste DNS da server DNS locali aptitude install bind9
  • squid3 (opzionale): caching e proxy server, possono essere utilizzati per vari scopi, ma useremo come caching server (file statici di cache per la navigazione veloce) aptitude install squid3
  • vnstat (opzionale): logging/visualizzazione di dati statistici utili sul traffico di download/upload,che vengono in intreata od uscitatramite il nostro router.aptitude install vnstat.

Procedimento:

1)Collegare il computer al modem/router ADSL all’ Ethernet primario (eth0 per esempio).

2)Wireless router deve essere impostato come punto di accesso con 10.5.5.5 indirizzo ip.

3)Collegare il computer al router wireless (AB2).

4)Testare il router debian per la connettività internet, provare un ping per esempio: ping-c 3 google.com se il ping non ha avuto successo, allora avete bisogno di risolvere la connessione a Internet, provate a collegare il cavo ADSL o Internet ad altri computer di assicurarsi che il computer può connettersi a internet, se solo il route Debian non è connesso ad Internet provare a cambiare la posizione del cavo cambiando l’interfaccia.

5)Modificate /etc/network/interfaces assicurarsi che il suo aspetto sia simile al seguente:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# automatic start the following interfaces:
auto lo eth0 eth1 

# The loopback network interface:
iface lo inet loopback

# The primary network interface:
allow-hotplug eth0 eth1 

# primary ethernet (connected to the internet)
iface eth0 inet dhcp

# secondery ethernet (connected to local side)
iface eth1 inet static
 address 10.5.5.1
 netmask 255.255.255.0
 network 10.5.5.0
 broadcast 10.5.5.255
 gateway 10.5.5.1

6)Modificate /etc/bind/named.conf.options (si prega di notare che i commenti sono decommentati:

options {
 directory "/var/cache/bind";

 forward first;
 forwarders {
   8.8.8.8;
   8.8.4.4; 
  };

  dnssec-validation no;

 auth-nxdomain no;  

 listen-on { 127.0.0.1; 10.5.5.1; };
 listen-on-v6 { none; };
};

questo userà i dns di Google come forwaders, potete modificarlo a vostro con i dns del vostro ISP.

7)Modifica /etc/dhcp/dhcpd.conf:

#
# Sample configuration file for ISC dhcpd for Debian
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

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

# network, the authoritative directive should be uncommented.
authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

######################
# internal network
######################
# A slightly different configuration for an internal subnet.
subnet 10.5.5.0 netmask 255.255.255.0 {
  range 10.5.5.11 10.5.5.33;
  option domain-name-servers 10.5.5.1;
  option routers 10.5.5.1;
  option broadcast-address 10.5.5.255;
  default-lease-time 600;
  max-lease-time 7200;
}

# wireless router need fixed ip address 10.5.5.5
#  0000000000 mustbe replaces with router hardware mac address
host router{
  hardware ethernet 0000000000;
  fixed-address 10.5.5.5;
}

8)Modificare /etc/squid3/squid.conf

acl localnet src 10.5.5.0/24 # RFC1918 possible internal network

acl SSL_ports port 443
acl Safe_ports port 80  # http
acl Safe_ports port 21  # ftp
acl Safe_ports port 443  # https
acl Safe_ports port 70  # gopher
acl Safe_ports port 210  # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280  # http-mgmt
acl Safe_ports port 488  # gss-http
acl Safe_ports port 591  # filemaker
acl Safe_ports port 777  # multiling http
acl CONNECT method CONNECT

# Deny requests to certain unsafe ports
http_access deny !Safe_ports

# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports

# Only allow cachemgr access from localhost
http_access allow localhost manager
http_access deny manager 

# one who can access services on "localhost" is a local user
#http_access deny to_localhost

# from where browsing should be allowed
http_access allow localnet

# And finally deny all other access to this proxy
http_access deny all

# Squid normally listens to port 3128
http_port 10.5.5.1:3128 intercept

# Uncomment and adjust the following to add a disk cache directory. 7168 = 7 Gb,  feel free to increase it
cache_dir ufs /var/cache/squid3 7168 16 256

# Leave coredumps in the first cache dir
coredump_dir /var/cache/squid3

#
# Add any of your own refresh_pattern entries above these.
#
refresh_pattern ^ftp:  1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern .  0 20% 4320

9)Regole iptables:

le seguenti regole sono adattate per un router, fondamentalmente permettiamo di inoltrare il traffico tra due schede Ethernet tramite il server proxy squid router (porta 3128), si prega di notare che la tabella di filtro è vuota e abbastanza permissiva (non raccomandato), si consiglia di limitare l’accesso alla rete locale e al router.

*filter
:INPUT ACCEPT 
:FORWARD ACCEPT 
:OUTPUT ACCEPT 
COMMIT

*nat
:PREROUTING ACCEPT 
:INPUT ACCEPT 
:OUTPUT ACCEPT 
:POSTROUTING ACCEPT 
 -A PREROUTING -s 10.5.5.0/24 -i eth1 -p tcp -m tcp -j REDIRECT --to-ports 3128
 -A OUTPUT -s 10.5.5.0/24 -p tcp -m owner ! --uid-owner 13 -m tcp -j REDIRECT --to-ports 3128
 -A POSTROUTING -o eth0 -j MASQUERADE
COMMIT

*mangle
:PREROUTING ACCEPT 
:INPUT ACCEPT 
:FORWARD ACCEPT 
:OUTPUT ACCEPT 
:POSTROUTING ACCEPT 
COMMIT

salvare il contenuto in un file, ad esempio /etc/iptables-router.rules per mantenere le impostazioni dopo il riavvio e con la creazione di 2 file uno che lavora quando la rete è up e un altro quando la rete è down
+ Nuovo file /etc/network/if-pre-up.d/router.up

#! /bin/sh

iptables-restore -c  < /etc/firewall.d/iptables-router.rules

exit 0

Renderlo eseguibile

chmod + x /etc/network/if-pre-up.d/router.up

 

+ Nuovo file /etc/network/if-post-down.d/router.down

#! /bin/sh

iptables-restore -c  < /etc/firewall.d/iptables-router.rules

exit 0

Renderlo eseguibile

chmod +x /etc/network/if-post-down.d/router.down

Modifica /etc/sysctl.conf e assicurarsi che contenga le seguenti righe:

# Uncomment the next two lines to enable Spoof protection (reverse-path filter)
# Turn on Source Address Verification in all interfaces to
# prevent some spoofing attacks
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

essenzialmente abilita il forwarding dei pacchetti necessario per il corretto funzionamento del router.

riavvio debian

reboot

Il nostro router debian sarà attivo e funzionante, riconosco che questo post è ben lungi dall’essere completo, spero di aggiungere altre guide per renderlo più completo possibile.

Saluti alla prossima guida.