<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>GroundRouting</title><revhistory><revision><revnumber>4</revnumber><date>2014-06-14 21:39:14</date><authorinitials>Arka</authorinitials></revision><revision><revnumber>3</revnumber><date>2014-06-14 11:07:37</date><authorinitials>Arka</authorinitials></revision><revision><revnumber>2</revnumber><date>2014-04-17 08:14:00</date><authorinitials>Arka</authorinitials></revision><revision><revnumber>1</revnumber><date>2014-04-15 19:09:06</date><authorinitials>Arka</authorinitials></revision></revhistory></articleinfo><section><title>Ground Routing</title><para>Più volgarmente chiamato <emphasis>Routing a Terra</emphasis> se da una parte semplifica considerevolmente le funzioni del nodo, dall'altra <emphasis>garantisce</emphasis> un single point of failure, quindi prima di fare questo passo assicuriamoci di avere un hardware che possa sopportare un discreto stress. </para><para>Cosa serve: </para><itemizedlist><listitem><para>Router con olsrd e 802.1Q (vlan) </para></listitem><listitem><para>Switch trasparente alle VLAN </para></listitem><listitem><para>Device radio di qualsiasi genere </para></listitem></itemizedlist><para>Come si serve: </para><itemizedlist><listitem><para>Precotto con OpenWRT Scooreggione_v4 </para></listitem></itemizedlist><para>Dove si mangia: </para><itemizedlist><listitem><para>In casa o sul tetto </para></listitem></itemizedlist><para>Come si cucina: </para><itemizedlist><listitem><para>Configurare il router OWRT ed i device per la &quot;normale&quot; rete casalinga </para></listitem><listitem><para>Condire la configurazione rete con le necessarie VLAN (1/device) </para></listitem><listitem><para>Affogare le interfacce create (eth0.x) con le relative interfacce wlan (ath0 or wlan0) </para></listitem></itemizedlist><para>PS: I router cui rapporto qualità/prezzo risultano intriganti sono i seguenti </para><itemizedlist><listitem><para>TP-Link TL-WR1043ND </para></listitem><listitem><para>TP-Link TL-WDR3600 </para></listitem><listitem><para>TP-Link TL-WDR4300 </para></listitem><listitem><para>Il WR1043 gestisce VLAN tag e untag su singola porta </para></listitem><listitem><para>Il WDR3600 ed il WDR4300, purtroppo, gestisccono VLAN tag *OR* untag su singola porta </para></listitem><listitem><para>Il WR1043 ha la CPU dello switch sulla porta 5 </para></listitem><listitem><para>Il WDR3600 ed il WDR4300 hanno la CPU dello switch sulla porta 0 </para></listitem></itemizedlist><para>Con il WDR3600 si dovranno configurare i device con apposita VLAN *ANCHE* sulla LAN </para><screen><![CDATA[vi /etc/config/network
]]><![CDATA[
config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'
]]><![CDATA[
config interface 'pvt'
        option ifname 'eth0.1'
        option proto 'dhcp'
        option type 'bridge'
]]><![CDATA[
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'
]]><![CDATA[
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'
]]><![CDATA[
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'
]]><![CDATA[
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'
]]><![CDATA[
config switch
        option name 'eth0' # wdr3600
#       option name 'rtl8366rb' # wr1043
        option reset '1'
        option enable_vlan '1'
#       option enable_vlan4k '1' # wr1043
]]><![CDATA[
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
]]><![CDATA[
config switch_vlan
        option device 'eth0' # wdr3600
#       option device 'rtl8366rb' # wr1043
        option vlan '1'
        option ports '0t 1' # wdr3600
#       option ports '1 5t' # wr1043
]]><![CDATA[
config switch_vlan
        option device 'eth0' # wdr3600
#       option device 'rtl8366rb' # wr1043
        option vlan '6'
        option ports '0t 3t' # wdr3600
#       option ports '3t 5t' # wr1043
]]><![CDATA[
config switch_vlan
        option device 'eth0' # wdr3600
#       option device 'rtl8366rb' # wr1043
        option vlan '7'
        option ports '0t 3t' # wdr3600
#       option ports '3t 5t' # wr1043   
]]><![CDATA[
config switch_vlan
        option device 'eth0' # wdr3600
#       option device 'rtl8366rb' # wr1043
        option vlan '8'
        option ports '0t 3t' # wdr3600
#       option ports '3t 5t' # wr1043   ]]></screen><para>* Olsrd (io uso il file parsato, non UCI, per mia comodità) </para><screen><![CDATA[vi /etc/config/olsrd4.conf
]]><![CDATA[
DebugLevel  0
IpVersion 4
]]><![CDATA[
Pollrate  0.025
FIBMetric "flat"
]]><![CDATA[
RtTable 111
RtTableDefault 112
]]><![CDATA[
UseNiit no
SmartGateway no
]]><![CDATA[
Hna4
{
10.CAP.X.0 255.255.255.0
}
]]><![CDATA[
UseHysteresis no
TcRedundancy  2
MprCoverage 7
]]><![CDATA[
LinkQualityLevel 2
LinkQualityAlgorithm    "etx_ff"
LinkQualityAging 0.05
LinkQualityFishEye  1
]]><![CDATA[
LoadPlugin "olsrd_txtinfo.so.0.1"
{
   PlParam     "port"   "2006"
   PlParam     "Accept"   "0.0.0.0"
}
]]><![CDATA[
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"
}
]]><![CDATA[
LoadPlugin "olsrd_httpinfo.so.0.1"
{
 PlParam "Net"  "0.0.0.0 0.0.0.0"
 PlParam "Port" "1978"
}
]]><![CDATA[
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
}
]]><![CDATA[
Interface "eth0.6" "eth0.7" "eth0.8"
{
    Mode "mesh"
]]><![CDATA[
    # LinkQualityMult 192.168.0.1 0.5
    # LinkQualityMult default 0.8
}
]]><![CDATA[
]]><![CDATA[
--------------------[cutme]------------------------
]]><![CDATA[
]]><![CDATA[
vi /etc/config/olsrd6.conf
]]><![CDATA[
DebugLevel  0
IpVersion 6
]]><![CDATA[
Pollrate  0.025
FIBMetric "flat"
]]><![CDATA[
UseNiit no
SmartGateway no
]]><![CDATA[
Hna6
{
2001:4c00:893b:CAP:: 64
}
]]><![CDATA[
UseHysteresis no
TcRedundancy  2
MprCoverage 7
]]><![CDATA[
LinkQualityLevel 2
LinkQualityAlgorithm    "etx_ff"
LinkQualityAging 0.05
LinkQualityFishEye  1
]]><![CDATA[
LoadPlugin "olsrd_txtinfo.so.0.1"
{
   PlParam     "port"   "2007"
   PlParam     "Accept"   "::"
}
]]><![CDATA[
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"
}
]]><![CDATA[
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
}
]]><![CDATA[
Interface "eth0.6" "eth0.7" "eth0.8"
{
    Mode "mesh"
    
    IPv6Multicast FF02::6D
]]><![CDATA[
}]]></screen><para>Ora stabiliamo un po di regolette all'avvio del router  </para><screen><![CDATA[/etc/rc.local
]]><![CDATA[
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.
]]><![CDATA[
#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
]]><![CDATA[
#110 Local routes
#111 RtTable
#112 RtTableDefault
#113 Special Table for /1
#114 blackholes table
]]><![CDATA[
#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
]]><![CDATA[
#First evaluate local routes
ip rule add from all lookup 110 pref 3
]]><![CDATA[
#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
]]><![CDATA[
#Ninux IP Addresses to OLSR table
ip rule add to 176.62.53.0/24 table 111 pref 4
]]><![CDATA[
#Evaluate blackholes
ip rule add from all table 114 pref 5
]]><![CDATA[
#Send traffic of public addresses to BGP border routers
ip rule add from 176.62.53.0/24 table 113 pref 6
]]><![CDATA[
#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
]]><![CDATA[
#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
]]><![CDATA[
#Blackhole Ninux aggregate
ip route add blackhole 176.62.53.0/24 table 114
]]><![CDATA[
#Start olsrd v4 not UCI mode
olsrd -f /etc/config/olsrd4.conf -d 0
]]><![CDATA[
#Start olsrd v6 not UCI mode
olsrd -f /etc/config/olsrd6.conf -d 0
]]><![CDATA[
#Start radvd not UCI mode
radvd -C /etc/config/radvd.conf
]]><![CDATA[
#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
]]><![CDATA[
exit 0]]></screen><para>/etc/config/radvd.conf </para><screen><![CDATA[interface br-nnx
{
        MaxRtrAdvInterval 10;
        MinRtrAdvInterval 3;
        AdvLinkMTU 1280;
        AdvSendAdvert on;
        AdvManagedFlag off;
        AdvOtherConfigFlag off;
]]><![CDATA[
        prefix ::/64
        {
                AdvOnLink on;
                AdvAutonomous on;
                AdvRouterAddr off;
        };
};]]></screen><para>Andiamo sul tetto a prenderci un po di sole </para><para>Se montiamo device con  AirOS basterà andare sulla GUI nella sezione network: </para><itemizedlist><listitem><para>selezionare modalità BRIDGE </para></listitem><listitem><para>eliminare eventuale BRIDGE presente/i </para></listitem><listitem><para>creare VLAN con identica numerazione di quella dichiarata in OpenWRT (ex: eth0.7 = VLAN ID 7) </para></listitem><listitem><para>[SOLO PER WDR3600: creare VLAN ID 2] </para></listitem><listitem><para>creare bridge tra wlan0 e vlan0.x </para></listitem><listitem><para>selezionare LAN0 come &quot;Management Interface&quot; (SOLO CON WDR3600 selezionare LAN0.2) </para></listitem><listitem><para>assegnare IP coerenti con propria subnet </para></listitem><listitem><para>click on change and apply </para></listitem></itemizedlist><para>Se monta OpenWRT: </para><screen><![CDATA[vi /etc/config/network
]]><![CDATA[
config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'
]]><![CDATA[
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'
]]><![CDATA[
config interface 'STA6'
        option type 'bridge'
        option ifname 'eth0.6'
]]><![CDATA[
]]><![CDATA[
---------------[cutme]---------------
]]><![CDATA[
vi /etc/config/wireless
]]><![CDATA[
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
]]><![CDATA[
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
]]><![CDATA[
# Si possono usare entrambe le configurazioni assieme (AP e STA)
]]><![CDATA[
#config wifi-iface
#       option device 'radio0'
#       option encryption 'none'
#       option network 'AP12'
#       option mode 'ap'
#       option wds '1'
#       option ssid 'XYZ.ninux.org'
]]><![CDATA[
]]><![CDATA[
-----------------------[cutme]-----------------------
]]><![CDATA[
vi /etc/rc.local
]]><![CDATA[
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.
]]><![CDATA[
#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
]]><![CDATA[
exit 0]]></screen></section></article>