Italiano English
Modifica History Actions

GroundRouting

Ground Routing

Più volgarmente chiamato Routing a Terra se da una parte semplifica considerevolmente le funzioni del nodo, dall'altra garantisce un single point of failure, quindi prima di fare questo passo assicuriamoci di avere un hardware che possa sopportare un discreto stress.

Cosa serve:

  • Router con olsrd e 802.1Q (vlan)
  • Switch trasparente alle VLAN
  • Device radio di qualsiasi genere

Come si serve:

  • Precotto con OpenWRT Scooreggione_v4

Dove si mangia:

  • In casa o sul tetto

Come si cucina:

  • Configurare il router OWRT ed i device per la "normale" rete casalinga
  • Condire la configurazione rete con le necessarie VLAN (1/device)
  • Affogare le interfacce create (eth0.x) con le relative interfacce wlan (ath0 or wlan0)

PS: I router cui rapporto qualità/prezzo risultano intriganti sono i seguenti

  • TP-Link TL-WR1043ND
  • TP-Link TL-WDR3600
  • TP-Link TL-WDR4300
  • Il WR1043 gestisce VLAN tag e untag su singola porta
  • Il WDR3600 ed il WDR4300, purtroppo, gestisccono VLAN tag *OR* untag su singola porta
  • Il WR1043 ha la CPU dello switch sulla porta 5
  • Il WDR3600 ed il WDR4300 hanno la CPU dello switch sulla porta 0

Con il WDR3600 si dovranno configurare i device con apposita VLAN *ANCHE* sulla LAN

vi /etc/config/network

config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config interface 'pvt'
        option ifname 'eth0.1'
        option proto 'dhcp'
        option type 'bridge'

config interface 'nnx'
        option ifname 'eth0.2'
        option proto 'static'
        option type 'bridge'
        option ipaddr '10.CAP.X.YZ'
        option broadcast '10.CAP.X.YZ.255'
        option netmask '255.255.255.0'
        option ip6addr '2001:4c00:893b:CAP::YZ/64'
        option dns '10.11.12.13 10.11.12.14'

config interface 'STA6'
        option ifname 'eth0.6'
        option proto 'static'
        option ipaddr '172.16.CAP.X'
        option netmask '255.255.0.0'
        option ip6addr '2001:4c00:893b:1:CAP::X/128'

config interface 'AP7'
        option ifname 'eth0.7'
        option proto 'static'
        option ipaddr '172.16.CAP.Y'
        option netmask '255.255.0.0'
        option ip6addr '2001:4c00:893b:1:CAP::Y/128'

config interface 'STA8'
        option ifname 'eth0.8'
        option proto 'static'
        option ipaddr '172.16.171.Z'
        option netmask '255.255.0.0'
        option ip6addr '2001:4c00:893b:1:CAP::Z/128'

config switch
        option name 'eth0' # wdr3600
#       option name 'rtl8366rb' # wr1043
        option reset '1'
        option enable_vlan '1'
#       option enable_vlan4k '1' # wr1043

config switch_vlan
        option device 'eth0' # wdr3600
#       option device 'rtl8366rb' # wr1043
        option vlan '2'
        option ports '0t 2 3t 4 5' # wdr3600
#       option ports '0 2 3 4 5t' # wr1043

config switch_vlan
        option device 'eth0' # wdr3600
#       option device 'rtl8366rb' # wr1043
        option vlan '1'
        option ports '0t 1' # wdr3600
#       option ports '1 5t' # wr1043

config switch_vlan
        option device 'eth0' # wdr3600
#       option device 'rtl8366rb' # wr1043
        option vlan '6'
        option ports '0t 3t' # wdr3600
#       option ports '3t 5t' # wr1043

config switch_vlan
        option device 'eth0' # wdr3600
#       option device 'rtl8366rb' # wr1043
        option vlan '7'
        option ports '0t 3t' # wdr3600
#       option ports '3t 5t' # wr1043   

config switch_vlan
        option device 'eth0' # wdr3600
#       option device 'rtl8366rb' # wr1043
        option vlan '8'
        option ports '0t 3t' # wdr3600
#       option ports '3t 5t' # wr1043   

* Olsrd (io uso il file parsato, non UCI, per mia comodità)

vi /etc/config/olsrd4.conf

DebugLevel  0
IpVersion 4

Pollrate  0.025
FIBMetric "flat"

RtTable 111
RtTableDefault 112

UseNiit no
SmartGateway no

Hna4
{
10.CAP.X.0 255.255.255.0
}

UseHysteresis no
TcRedundancy  2
MprCoverage 7

LinkQualityLevel 2
LinkQualityAlgorithm    "etx_ff"
LinkQualityAging 0.05
LinkQualityFishEye  1

LoadPlugin "olsrd_txtinfo.so.0.1"
{
   PlParam     "port"   "2006"
   PlParam     "Accept"   "0.0.0.0"
}

LoadPlugin "olsrd_mdns.so.1.0.1"
{
 PlParam     "NonOlsrIf"  "eth0"
 PlParam     "NonOlsrIf"  "br0"
 PlParam     "MDNS_TTL"   "20"
 PlParam     "TTL_Check"  "true"
 PlParam     "Network_ID" "1"
 #PlParam     "FilteredHost" "192.168.0.1"
}

LoadPlugin "olsrd_httpinfo.so.0.1"
{
 PlParam "Net"  "0.0.0.0 0.0.0.0"
 PlParam "Port" "1978"
}

InterfaceDefaults {
   HelloInterval 3.0
   HelloValidityTime 125.0
   TcInterval 2.0
   TcValidityTime 500.0
   MidInterval 25.0
   MidValidityTime 500.0
   HnaInterval 10.0
   HnaValidityTime 125.0
}

Interface "eth0.6" "eth0.7" "eth0.8"
{
    Mode "mesh"

    # LinkQualityMult 192.168.0.1 0.5
    # LinkQualityMult default 0.8
}


--------------------[cutme]------------------------


vi /etc/config/olsrd6.conf

DebugLevel  0
IpVersion 6

Pollrate  0.025
FIBMetric "flat"

UseNiit no
SmartGateway no

Hna6
{
2001:4c00:893b:CAP:: 64
}

UseHysteresis no
TcRedundancy  2
MprCoverage 7

LinkQualityLevel 2
LinkQualityAlgorithm    "etx_ff"
LinkQualityAging 0.05
LinkQualityFishEye  1

LoadPlugin "olsrd_txtinfo.so.0.1"
{
   PlParam     "port"   "2007"
   PlParam     "Accept"   "::"
}

LoadPlugin "olsrd_mdns.so.1.0.1"
{
 PlParam     "NonOlsrIf"  "eth0"
 PlParam     "MDNS_TTL"   "20"
 PlParam     "TTL_Check"  "true"
 PlParam     "Network_ID" "1"
 #PlParam     "FilteredHost" "2001::1"
}

InterfaceDefaults {
   HelloInterval 3.0
   HelloValidityTime 125.0
   TcInterval 2.0
   TcValidityTime 500.0
   MidInterval 25.0
   MidValidityTime 500.0
   HnaInterval 10.0
   HnaValidityTime 125.0
}

Interface "eth0.6" "eth0.7" "eth0.8"
{
    Mode "mesh"
    
    IPv6Multicast FF02::6D

}

Ora stabiliamo un po di regolette all'avvio del router

/etc/rc.local

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

#Usefull rules for Arkanet TP-Links
iptables -t nat -A POSTROUTING -o br-pvt -j MASQUERADE -s 10.CAP.X.0/24
iptables -t nat -A POSTROUTING -o br-nnx -j MASQUERADE -s 192.168.XYZ.0/24

#110 Local routes
#111 RtTable
#112 RtTableDefault
#113 Special Table for /1
#114 blackholes table

#Copy local routes only from table main 254 to table 110
ip route show table 254 | grep -Ev ^default | grep -Ev ^blackhole | while read ROUTE ; do
MASK=`echo "${ROUTE}" | awk '{print $1}' | awk -F/ '{print $2}'`
if [ "$MASK" -ne 16 ] ; then
ip route add table 110 $ROUTE
fi
done

#First evaluate local routes
ip rule add from all lookup 110 pref 3

#Private routes to OLSR table
ip rule add to 10.0.0.0/8 table 111 pref 4
ip rule add to 172.16.0.0/12 table 111 pref 4
ip rule add to 192.168.0.0/16 table 111 pref 4

#Ninux IP Addresses to OLSR table
ip rule add to 176.62.53.0/24 table 111 pref 4

#Evaluate blackholes
ip rule add from all table 114 pref 5

#Send traffic of public addresses to BGP border routers
ip rule add from 176.62.53.0/24 table 113 pref 6

#Lookup default route first from user and then from OLSR
ip rule add from all lookup 254 pref 7
ip rule add from all lookup 112 pref 8

#Blackhole private aggregates
ip route add blackhole 10.0.0.0/8 table 114
ip route add blackhole 172.16.0.0/12 table 114
ip route add blackhole 192.168.0.0/16 table 114

#Blackhole Ninux aggregate
ip route add blackhole 176.62.53.0/24 table 114

#Start olsrd v4 not UCI mode
olsrd -f /etc/config/olsrd4.conf -d 0

#Start olsrd v6 not UCI mode
olsrd -f /etc/config/olsrd6.conf -d 0

#Start radvd not UCI mode
radvd -C /etc/config/radvd.conf

#MTU Clamping
iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
ip6tables -I FORWARD -p tcp --syn  -j TCPMSS --clamp-mss-to-pmtu

exit 0

/etc/config/radvd.conf

interface br-nnx
{
        MaxRtrAdvInterval 10;
        MinRtrAdvInterval 3;
        AdvLinkMTU 1280;
        AdvSendAdvert on;
        AdvManagedFlag off;
        AdvOtherConfigFlag off;

        prefix ::/64
        {
                AdvOnLink on;
                AdvAutonomous on;
                AdvRouterAddr off;
        };
};

Andiamo sul tetto a prenderci un po di sole

Se montiamo device con AirOS basterà andare sulla GUI nella sezione network:

  • selezionare modalità BRIDGE
  • eliminare eventuale BRIDGE presente/i
  • creare VLAN con identica numerazione di quella dichiarata in OpenWRT (ex: eth0.7 = VLAN ID 7)
  • [SOLO PER WDR3600: creare VLAN ID 2]
  • creare bridge tra wlan0 e vlan0.x
  • selezionare LAN0 come "Management Interface" (SOLO CON WDR3600 selezionare LAN0.2)
  • assegnare IP coerenti con propria subnet
  • click on change and apply

Se monta OpenWRT:

vi /etc/config/network

config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config interface 'lan'
#       option ifname 'eth0.2' # wdr3600
        option ifname 'eth0' # wr1043nd
        option proto 'static'
#       option type 'bridge' # wdr3600
        option ipaddr '10.CAP.X.1'
        option netmask '255.255.255.0'
        option gateway '10.CAP.X.10'
        option dns '10.11.12.13 10.11.12.14 8.8.8.8'

config interface 'STA6'
        option type 'bridge'
        option ifname 'eth0.6'


---------------[cutme]---------------

vi /etc/config/wireless

config wifi-device 'radio0'
        option type 'mac80211'
        option channel '60'
        option hwmode '11na'
        option macaddr '00:27:22:XX:YY:ZZ'
        option htmode 'HT20' # HT20|HT40-|HT40+
        list ht_capab 'SHORT-GI-40'
        list ht_capab 'TX-STBC'
        list ht_capab 'RX-STBC1'
        list ht_capab 'DSSS_CCK-40'
        option disabled '0'
        option noscan '1'
        option distance '1100'
        option txpower '14' # 1|30

config wifi-iface
        option device 'radio0'
        option encryption 'none'
        option network 'STA6'
        option mode 'sta'
        option wds '1'
        option ssid 'ninux.org'
        option bssid '00:15:6D:XX:YY:ZZ' # lock to mac ap

# Si possono usare entrambe le configurazioni assieme (AP e STA)

#config wifi-iface
#       option device 'radio0'
#       option encryption 'none'
#       option network 'AP12'
#       option mode 'ap'
#       option wds '1'
#       option ssid 'XYZ.ninux.org'


-----------------------[cutme]-----------------------

vi /etc/rc.local

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

#Ipv6 assignment
#echo 0 > /proc/sys/net/ipv6/conf/all/accept_ra
#echo 0 > /proc/sys/net/ipv6/conf/all/accept_ra_pinfo
#echo 0 > /proc/sys/net/ipv6/conf/all/accept_ra_defrtr
#echo 0 > /proc/sys/net/ipv6/conf/lo/disable_ipv6
#ip -6 addr flush dev eth0 scope global
#ip -6 addr add 2001:4c00:893b:CAP::10/64 dev eth0

exit 0