# [routing] creare un anello tra 2 interfacce

## CRV§ADER//KY

Ho il seguente problema che non riesco a risolvere:

Ho due interfacce di rete, ppp0 e ppp1, con due IP pubblici:

```
ppp0      Link encap:Point-to-Point Protocol  

          inet addr:217.201.135.75  P-t-P:10.6.6.6  Mask:255.255.255.255

          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1

          RX packets:5 errors:0 dropped:0 overruns:0 frame:0

          TX packets:5 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:3 

          RX bytes:112 (112.0 b)  TX bytes:97 (97.0 b)

ppp1      Link encap:Point-to-Point Protocol  

          inet addr:217.201.101.116  P-t-P:10.6.6.6  Mask:255.255.255.255

          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1

          RX packets:553 errors:0 dropped:0 overruns:0 frame:0

          TX packets:541 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:3 

          RX bytes:342332 (334.3 Kb)  TX bytes:64249 (62.7 Kb)

# route

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

10.6.6.6        *               255.255.255.255 UH    0      0        0 ppp1

10.6.6.6        *               255.255.255.255 UH    0      0        0 ppp0

10.242.34.92    *               255.255.255.252 U     2000   0        0 eth1

169.254.0.0     *               255.255.0.0     U     0      0        0 eth0

loopback        *               255.0.0.0       U     0      0        0 lo

default         10.6.6.6        0.0.0.0         UG    0      0        0 ppp1

default         10.242.34.93    0.0.0.0         UG    2000   0        0 eth1
```

Ho necessità di testare la rete del provider, ovvero far partire pacchetti da ppp0 e farli arrivare a ppp1 e viceversa.

Ho provato a forzare l'interfaccia di rete utilizzata con 

# route add <IP di ppp1> ppp0 && route add <IP di ppp1> ppp0

```
# route add 217.201.101.116 ppp0

# route add 217.201.135.75 ppp1

# route

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

217.201.135.75  *               255.255.255.255 UH    0      0        0 ppp1

217.201.101.116 *               255.255.255.255 UH    0      0        0 ppp0

10.6.6.6        *               255.255.255.255 UH    0      0        0 ppp1

10.6.6.6        *               255.255.255.255 UH    0      0        0 ppp0

10.242.34.92    *               255.255.255.252 U     2000   0        0 eth1

169.254.0.0     *               255.255.0.0     U     0      0        0 eth0

loopback        *               255.0.0.0       U     0      0        0 lo

default         10.6.6.6        0.0.0.0         UG    0      0        0 ppp1

default         10.242.34.93    0.0.0.0         UG    2000   0        0 eth1

```

Ma se provo a pingare uno qualsiasi dei due IP ottengo una latenza di 0.035ms, segno che i pacchetti non lasciano il mio computer.

Idee?

----------

## koma

io uso questo: http://network-tools.com/

----------

## CRV§ADER//KY

 *koma wrote:*   

> io uso questo: http://network-tools.com/

 

ehm non ci siamo capiti... a me non serve misurare le prestazioni tra una di quelle due interfacce e un generico server esterno, ma tassativamente tra le due interfacce....   :Confused: 

----------

## Kernel78

 *CRV§ADER//KY wrote:*   

>  *koma wrote:*   io uso questo: http://network-tools.com/ 
> 
> ehm non ci siamo capiti... a me non serve misurare le prestazioni tra una di quelle due interfacce e un generico server esterno, ma tassativamente tra le due interfacce....  

 

tra le due interfacce hai già misurato una latenza di 0.035ms ma se a te non sta bene io non riesco a capire quale ostacolo vuoi metterci in mezzo  :Confused: 

----------

## CRV§ADER//KY

 *Kernel78 wrote:*   

>  *CRV§ADER//KY wrote:*    *koma wrote:*   io uso questo: http://network-tools.com/ 
> 
> ehm non ci siamo capiti... a me non serve misurare le prestazioni tra una di quelle due interfacce e un generico server esterno, ma tassativamente tra le due interfacce....   
> 
> tra le due interfacce hai già misurato una latenza di 0.035ms ma se a te non sta bene io non riesco a capire quale ostacolo vuoi metterci in mezzo 

 

Tra le due interfacce c'è di mezzo il PROVIDER... con una latenza di circa 300ms... quella devo misurare   :Evil or Very Mad: 

I pacchetti devono uscire da ppp0, arrivare al router del provider e tornare dentro a ppp1. In altre parole, devo simulare lo scambio di pacchetti tra due computer distinti attaccati al provider!

----------

## djinnZ

prova ad aggiungere "gw" e "-net"

----------

## Kernel78

 *CRV§ADER//KY wrote:*   

> Tra le due interfacce c'è di mezzo il PROVIDER... con una latenza di circa 300ms... quella devo misurare  
> 
> I pacchetti devono uscire da ppp0, arrivare al router del provider e tornare dentro a ppp1. In altre parole, devo simulare lo scambio di pacchetti tra due computer distinti attaccati al provider!

 

ok, adesso mi è più chiaro cosa vuoi fare.

Ho ancora un dubbio come hai fatto a misurare i 300ms di latenza del provider ? (e se l'hai già misurata perchè cerchi di "rimisurarla" ?)

----------

## CRV§ADER//KY

 *Kernel78 wrote:*   

>  *CRV§ADER//KY wrote:*   Tra le due interfacce c'è di mezzo il PROVIDER... con una latenza di circa 300ms... quella devo misurare  
> 
> I pacchetti devono uscire da ppp0, arrivare al router del provider e tornare dentro a ppp1. In altre parole, devo simulare lo scambio di pacchetti tra due computer distinti attaccati al provider! 
> 
> ok, adesso mi è più chiaro cosa vuoi fare.
> ...

 

300ms sono tra una interfaccia e un server qualsiasi, era un numero tanto per dire.

----------

## emilianodc

Forse non ho capito bene la situazione, ma se le due interfacce fanno parte dello stesso provider (e gli ip sembrerebbero confermarlo), quando fai un ping da una all'altra è possibile che la latenza che hai sia già quella che cerchi.

Il comando di route che hai usato tu invece secondo me non ha un gran senso.

Prova magari a fare un traceroute, così puoi vedere che giro fanno i pacchetti che mandi da una interfaccia a un'altra...

----------

## Scen

La butto lì (premetto che non sono esperto in questo ambito, per cui potrei scrivere anche delle castonerie  :Razz:  ): secondo me dovresti impostare come gateway predefinito l'interfaccia ppp0 (così i pacchetti verso il mondo esterno usciranno da lì), però dovresti (tramite iptables&C o in altro modo) modificare l'indirizzo IP sorgente del pacchetto, assegnandogli quello dell'IP pubblico di ppp1, in modo che le risposte ti arrivino su quest'ultima interfaccia. Ed ecco fatto il tuo "ring".

E come diceva un certo Martufello: di più, nin 'zo  :Rolling Eyes:  (ovvero, lascio agli esperti le istruzioni sull'implementazione pratica di tale configurazione)

----------

## GabrieleB

un'interfaccia direct-connected viene sempre preferita a un giro da internet, quindi secondo me NON stai facendo il giro.

Un trucco per fare cio' che chiedi potrebbe essere quello di impostare con iptables un masquerading (o un nat 1-1) dell'ip che usi per uscire e un nat 1-1 sull'ip da raggiungere. Cosi' forse freghi il routing del kernel, o forse no.

In sostanza, ti dai alle 2 interfacce ppp 2 indirizzi privati di subnet diverse, e li natti con gli ip pubblici che il provider ti assegna.

Con un router/firewall di qualsiasi marca funzionerebbe, non vedo perche' non lo dovrebbe fare anche un kernel linux

----------

## gutter

Credo basti semplicemente cambiare le metriche  :Wink: 

----------

## CRV§ADER//KY

 *gutter wrote:*   

> Credo basti semplicemente cambiare le metriche 

 

ehm... cioé? come si fa?  :Confused: 

GabrielB: uhm, suggerimento interessante. Se ho ben capito dovrei creare 2 interfacce di rete "fantoccio" con IP privati e subnet diverse tra loro e poi creare un percorso tipo

App1 -> Fantoccio1 -(NAT)-> ppp0 -> provider -> ppp1 -(NAT)-> Fantoccio2 -> App2

giusto? Il problema è, come faccio a creare interfacce di rete fittizie? forse con tun? (non ho la più pallida idea di come si faccia a creare una tun a mano)  :Confused: 

----------

## gutter

 *CRV§ADER//KY wrote:*   

> *

 

Qualcosa del genere:

```
ifconfig eth1 192.168.1.1 netmask 255.255.255.0 metric 1
```

----------

## GabrieleB

 *CRV§ADER//KY wrote:*   

> 
> 
> App1 -> Fantoccio1 -(NAT)-> ppp0 -> provider -> ppp1 -(NAT)-> Fantoccio2 -> App2
> 
> 

 

esatto !

secondo me lo fai con iptables e le regole di nat (ma per un aiuto qua ti devi rivolgere a qualcun'altro).

In pratica la tua applicazione deve puntare a fantoccio2, e il pacchetto di ritorno deve tornare a fantoccio1

fantoccio1 e fantoccio2 sono pubblici, ppp0 e ppp1 sono privati (il provider assegnera' il pubblico ai ppp, ma poi tu lo cambi a mano)

quindi source ip e destination ip nel percorso citato sopra cambiano rispettivamente in:

...app1...

sip ppp0, dip fantoccio2

sip fantoccio1 (masquerading), dip fantoccio2

...provider...

sip fantoccio1, dip fantoccio2

sip fantoccio1, dip ppp1 (nat)

...app2...

mi rendo conto della complicatezza della cosa ... se risolvi con le metriche fai prima.

----------

