lunedì 9 novembre 2015

Medjugorje

24 giugno 1981 - 24 giugno 2021

A 40 anni esatti dalla prima apparizione, aspettiamoci qualcosa di nuovo. Da Wikipedia:

Nella Bibbia questa parola ricorre molte volte, spesso per indicare un periodo cronologico di prova e isolamento o di purificazione:

  • il diluvio universale è durato quaranta giorni e quaranta notti (Genesi 7, 4.12.17)
  • all'arrivo in terra promessa, gli esploratori della terra di Canaan impiegarono 40 giorni durante i quali se la spassarono; per punizione l'esodo del popolo Israelita durò quarant'anni (Numeri 13, 25; 14, 33-34; 32, 13, Esodo 16, 35; Deuteronomio 8, 2.4; 29, 4; Giosuè 5, 6)
  • i 120 anni della vita di Mosé si possono suddividere in tre periodi di quarant'anni[3]
  • Mosè è rimasto sul monte Sinai per quaranta giorni e quaranta notti (Esodo 24, 18; 34, 28; Deuteronomio 9, 9.11.18.25; 10, 10)
  • il profeta Elia ha dovuto attraversare il deserto per quaranta giorni prima di giungere al monte Oreb (1Re 19, 8)
  • il profeta Giona ha annunciato la distruzione di Ninive per quaranta giorni (Giona 3, 4)
  • la flagellazione secondo la legge mosaica prevedeva "non più di quaranta colpi" (Deuteronomio 25, 3 || 2Corinzi 11, 24)
  • quaranta giorni dopo la nascita, Gesù è presentato al Tempio di Gerusalemme (Luca 2, 22) per "essere offerto" a Dio "secondo la Legge di Mosè" (Esodo 13, 2.11-16). Sempre secondo tale Legge simultaneamente avviene la purificazione di Maria: la puerpera compie l'offerta prescritta dal Levitico (12, 2-4.6-8). Nella tradizione della Chiesa cattolica questi due eventi sono ricordati con la festa liturgica della Candelora
  • Gesù si è ritirato nel deserto per quaranta giorni prima d'iniziare la sua predicazione pubblica (Luca 4, 1-2 || Marco 1, 12-13 || Matteo 4, 1-2). [DA CUI LA QUARESIMA]

E ancora 40 erano le ore trascorse tra la morte di Gesù (venerdì pomeriggio) e la Sua Resurrezione (domenica mattina). 40 giorni dopo ascese al cielo. Pertanto non sono 40 ore o giorni in senso simbolico, ma sicuramente almeno per Gesù è un 40 materiale e cronologico.

sabato 7 novembre 2015

[bash] iptables iproute2 and multiple routes

I had the following scenario: 1 server + 1 NIC + several openvpn tunnels.

If your job is wasting time with precanned scripts, good luck.

I tried every guide, official or not, to make work iptables, ip route and ip rule in order to mark traffic, both with UBUNTU server 16 and CENTOS 7. No way.


This will make the kernel permanently route packets, enables multiple routes and even for networks not attested on the machine:
nano /etc/sysctl.conf
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.all.rp_filter = 2
net.ipv4.ip_forward = 1

for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 0 >| $f ; done

This will initialize iptables and in particular mangle and nat, which are needed for marking the traffic:
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

add the alternative routes editing:
nano /etc/iproute2/rt_tables

Add (names are your references):
1 tunnel0
2 tunnel1

add routes and rules, we use tables IDs instead of names which are more immediate. As you can notice, the gateway is unrelevant, expecially for tunnels which can have  dynamic gateways:
ip route add 0.0.0.0/0 dev tun0 table 1
ip route add 0.0.0.0/0 dev tun1 table 2

add rules to mark traffic and bind to the corresponding table:
ip rule add from all fwmark 1 table 1
ip rule add from all fwmark 2 table 2
ip route flush cache

check if you like:
ip route show table 1
ip route show table 2
ip rule show

if you miss something, you can delete this way:
ip rule del table 1
ip route flush table 1

NOW THE MISSING PART:
THIS WON'T WORK:
iptables -A PREROUTING -t mangle -p tcp --dport 80 -j MARK --set-mark 1

THIS WILL:
iptables -A OUTPUT -t mangle -p tcp --dport 80 -j MARK --set-mark 1
iptables-save


Do you need to select traffic and push it simultaneously in a device / tunnel? No problem, I solved this too:
iptables -A OUTPUT -t mangle -p tcp --dport 10001 -j MARK --set-mark 1
iptables -A OUTPUT -t mangle -p tcp --dport 10002 -j MARK --set-mark 2
iptables -t nat -A OUTPUT -p tcp --dport 10001 -j DNAT --to :80
iptables -t nat -A OUTPUT -p tcp --dport 10002 -j DNAT --to :80

NAT mandatory for reply
iptables -t nat -A POSTROUTING -o $DEV1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o $DEV2 -j MASQUERADE

iptables-save