On 13/02/2017 19:28, Catalin(ux) M. BOIE wrote:
> Un tcpdump pe ambele interfete, ar putea sa-ti arate chestii interesante:
> conexiunea din exterior vine pe un IP, dar pleaca cu o sursa incorecta.
>
> Astept cu nerabdare exact configuratia pe care ai facut-o si trace-urile
> de tcpdump.


N-am vrut sa insir vreun cearsaf pe aici, dar se pare ca n-am incotro 
:-) Eu am facut deja cam toate lucrurile pe care le-ai spus. O sa incerc 
sa le expun si aici si sa minimizez cat pot.

Am "float" in configuratia de openvpn, altfel nu mergea in varianta cu 
default route setat.

Configuratia de iproute2:
----------------------------------------------------
IF0="enp4s0"
IF1="enp0s25"
IF2="enp4s2"
IP0="172.24.100.1"
IP1=“1.1.1.1”
IP2=“2.2.2.2”
P1=“1.1.1.254”
P2=“2.2.2.254”
P0_NET="172.24.100.0/24"
P1_NET=“1.1.1.0/24"
P2_NET=“2.2.2.0/24”

ip route flush table T1
ip route flush table T2
ip rule del from $IP1 table T1
ip rule del from $IP2 table T2

ip route add $P1_NET dev $IF1 src $IP1 table T1
ip route add default via $P1 table T1
ip route add $P2_NET dev $IF2 src $IP2 table T2
ip route add default via $P2 table T2

ip rule add from $IP1 table T1
ip rule add from $IP2 table T2

ip route add $P0_NET dev $IF0 table T1
ip route add $P2_NET dev $IF2 table T1
ip route add 127.0.0.0/8 dev lo table T1
ip route add $P0_NET0 dev $IF0 table T2
ip route add $P1_NET dev $IF1 table T2
ip route add 127.0.0.0/8 dev lo table T2
----------------------------------------------------

Cred ca e destul de clar, IF0 e interfata interna, celelalte 2 catre cei 
2 provideri.

Cu ruta default setata prin P2 ma conectez la openvpn prin P1:
   Mon Feb 13 18:45:20 2017 UDPv4 link local: [undef]
   Mon Feb 13 18:45:20 2017 UDPv4 link remote: [AF_INET]1.1.1.1:1194
   Mon Feb 13 18:45:20 2017 TLS: Initial packet from 
[AF_INET]2.2.2.2:1194, sid=d2a8840d f02fe16c
Dupa cum vezi asta spune si in loguri, n-are rost sa mai dau detalii din 
tcpdump, intra pachetele pe o interfata, se intorc pe cealalta (default 
route) - cu 'float' setat.

Acum sterg ruta default si ma conectez in acelasi mod la openvpn prin P1 
(de la ip-ul public 9.9.9.9):

# tcpdump -i enp0s25 -nn port 1194
23:41:58.709140 IP 9.9.9.9.37307 > 1.1.1.1.1194: UDP, length 42
23:42:00.892050 IP 9.9.9.9.37307 > 1.1.1.1.1194: UDP, length 42
23:42:04.166071 IP 9.9.9.9.37307 > 1.1.1.1.1194: UDP, length 42
23:42:12.880868 IP 9.9.9.9.37307 > 1.1.1.1.1194: UDP, length 42
23:42:28.337031 IP 9.9.9.9.37307 > 1.1.1.1.1194: UDP, length 42
23:43:00.184881 IP 9.9.9.9.40322 > 1.1.1.1.1194: UDP, length 42
23:43:02.307497 IP 9.9.9.9.40322 > 1.1.1.1.1194: UDP, length 42
23:43:06.552837 IP 9.9.9.9.40322 > 1.1.1.1.1194: UDP, length 42
23:43:15.045645 IP 9.9.9.9.40322 > 1.1.1.1.1194: UDP, length 42
23:43:31.338430 IP 9.9.9.9.40322 > 1.1.1.1.1194: UDP, length 42
[etc]

Ascultand si pe celelalte interfete - chiar si pe cea interna :-)) - pe 
portul 1194 nu apare niciun pachet in toata perioada asta.

In schimb daca de exemplu fac un test pe portul 25 (tot fara default route):
# telnet 1.1.1.1 25
Trying 1.1.1.1...
Connected to 1.1.1.1.
Escape character is '^]'.
220 mail.localhost.localdomain ESMTP Postfix

# tcpdump -i enp0s25 -nn port 25
00:02:27.365936 IP 9.9.9.9.35082 > 1.1.1.1.25: Flags [S], seq 
3989728965, win 29200, options [mss 1460,sackOK,TS val 3423415060 ecr 
0,nop,wscale 7], length 0
00:02:27.365959 IP 1.1.1.1.25 > 9.9.9.9.35082: Flags [S.], seq 
794810362, ack 3989728966, win 28960, options [mss 1460,sackOK,TS val 
92128016 ecr 3423415060,nop,wscale 7], length 0
00:02:27.409897 IP 9.9.9.9.35082 > 1.1.1.1.25: Flags [.], ack 1, win 
229, options [nop,nop,TS val 3423415104 ecr 92128016], length 0
00:02:27.434864 IP 1.1.1.1.25 > 9.9.9.9.35082: Flags [P.], seq 1:37, ack 
1, win 227, options [nop,nop,TS val 92128085 ecr 3423415104], length 36
00:02:27.479003 IP 9.9.9.9.35082 > 1.1.1.1.25: Flags [.], ack 37, win 
229, options [nop,nop,TS val 3423415173 ecr 92128085], length 0


Sper sa nu fi scurtat prea mult povestea asta, mai dau detalii daca mai 
trebuie. Rezolvare alternativa probabil ca este, de exemplu sa pun un 
script care sa schimbe default route pe celelalt provider cand pica cel 
initial. In cazul asta ar merge openvpn tot timpul. Dar daca teoria 
spune ca ar trebui sa mearga fara default route (si asa poate ar fi si 
logic) atunci ce e in neregula?


Mersi de ajutor,
Catalin Bucur

_______________________________________________
RLUG mailing list
RLUG@lists.lug.ro
http://lists.lug.ro/mailman/listinfo/rlug

Raspunde prin e-mail lui