Ascolto memorizzato su interfacce selezionate


9

Sto installando Memcached su un server Debian che ha due interfacce: eth0 (pubblico) ed eth1 (privato).

Voglio che Memcached ascolti sia eth1 che lo (loopback) in modo che sia possibile accedervi anche se la rete privata si interrompe ma NON eth0 (pubblico).

Dalla pagina man di memcached ho capito che l' -lopzione può prendere solo un indirizzo IP. Ho pensato di usare i socket UNIX per le connessioni locali ma la pagina man dice

-s
Percorso socket Unix su cui ascoltare ( disabilita il supporto di rete ).

L'unico altro metodo che conosco è bloccare le connessioni tramite eth0 usando IPTables. Esiste un'altra soluzione che non utilizza il firewall?

Risposte:


8

Non è conveniente come elencare un'interfaccia e ottenere tutti i suoi indirizzi associati e richiede la conoscenza di tutti gli indirizzi associati a un'interfaccia, ma può essere fatto. (Nota che non puoi semplicemente elencare alcune interfacce, come hai scoperto - una singola interfaccia, tutte le interfacce o un elenco di IP.)

L' -lopzione può accettare un'interfaccia, INADDR_ANY (che significa tutti gli indirizzi su tutte le interfacce) o un elenco di indirizzi IP separati da virgole. Un indirizzo IP può avere una specifica della porta opzionale. Quindi, per esempio

memcached -l 127.0.0.1:11211,127.0.0.1:11212,10.1.2.3

avrà memcached in ascolto di lo0 solo su 127.0.0.1 sulle porte 11211 e 11212 e anche sull'indirizzo 10.1.2.3 (su qualunque interfaccia sia) su qualunque porta sia impostata da -po -U.

È necessario conoscere / disporre di tutti gli indirizzi che si desidera associare. Questo è forse un grande divario tra lo0e un elenco di IP (poiché le limitazioni delle risorse interne predefinite di memcached non consentiranno l'associazione agli indirizzi ~ 2 ^ 24 su quell'interfaccia)


L'uso di un elenco separato da virgole di indirizzi IP funziona. Molte grazie! Questa funzione è stata introdotta in una versione specifica? Perché non riesco a trovare la riga "o un elenco separato da virgole di indirizzi IP" su nessuna manpage.
A.Jesin,

1
@ A.Jesin: Scorrendo le vecchie configurazioni, esiste da almeno il 2009. Sembra che nel 2007 sia stata aggiunta una patch per più IP grokbase.com/t/danga/memcached/078qdmzphz/… e lists.danga.com/ pipermail / memcached / allegati / 20070823 /… . Non mi è chiaro se questo è memcached upstream o alcune mod locali che alla fine lo hanno reso a monte.
Eric Towers,

@ A.Jesin: Inoltre, non dimenticare che sui siti StackExchange puoi "accettare" la risposta che funziona meglio per te (in modo che, in futuro, altri che abbiano la tua stessa domanda trovino immediatamente la risposta migliore).
Eric Towers,

Interessante! Questo sembra averlo reso a monte ma la versione in CentOS 6.x non lo supporta ancora.
falso

10

Come sottolineato nella risposta accettata, le versioni più recenti la supportano:

memcached -l 127.0.0.1:11211,127.0.0.2:11211  

o

memcached -l 127.0.0.1:11211 -l 127.0.0.2:11211  

Le versioni precedenti (fornite con CentOS 6.5 o precedenti) non lo supportano ancora, possono ascoltare su tutte le interfacce, un singolo indirizzo IP o un socket.
Nessuna combinazione di questi.

L'unico modo per risolverlo è associarlo a tutte le interfacce e firewall l'interfaccia pubblica o collegarlo solo a 127.0.0.1 e inoltrare le richieste a eth1: 11211 a lo0: 11211 tramite iptables.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.