Ho questo client VPN che tocca la tabella di routing e poi continua a guardarlo per uscire se viene toccato.
È il tipo di configurazione necessaria per un endpoint, come un laptop.
Voglio utilizzare un piccolo PC come endpoint VPN e instradarlo per altre macchine sulla mia LAN (192.168.0.0/24).
Poiché non riesco a toccare la tabella di routing e tutti i pacchetti vengono forzati tramite le VPN tun0, stavo pensando che iptables potrebbe aiutarmi a POSTROUTE riportare i pacchetti alla rete 192.168.0.0 sul dispositivo eth1.
Non sono sicuro di come funzionerebbe, perché una volta terminato eth1 dovrebbe risolvere l'IPtoMAC perché è già sulla rete di destinazione e non so se il pacchetto è già stato risolto o non accadrà finché non raggiunge l'iface.
Qualche suggerimento?
Risposta accettata:
Dal momento che non hai fornito ulteriori informazioni, non sono sicuro di come rispondere al meglio.
Quindi ecco il mio tentativo di darti alcune indicazioni, ignorando volutamente che non puoi modificare la tua tabella di routing (capirai perché leggendo il mio suggerimento):
A seconda del client VPN e di dove si aggancia alla FIB (forward information base) del kernel, potresti avere un po' di fortuna in quanto il monitoraggio della FIB o, usando la tua tabella di routing delle espressioni, tramite la VPN avviene solo per il local
e main
tabelle delle regole. Puoi controllare le tue regole di routing utilizzando
ip rule show
Per ciascuna delle stringhe dietro il tag "lookup" (che sono le voci della tabella delle regole), puoi interrogare le informazioni di instradamento corrispondenti dalla FIB, usando
ip route show table <name>
Con un po' di fortuna potresti provare a costruire una regola che corrisponda ai tuoi requisiti e darle la preferenza nella tabella di ricerca delle regole. Ad esempio (ho inventato qualcosa per darti un vantaggio), aggiungiamo una nuova regola con una preferenza maggiore rispetto a main
a determinati flussi:
ip rule add from 192.168.1.0/24 to 10.10.212.1/30 iif eth0 oif eth2 lookup 888 pref 12000
ip rule show
0: from all lookup local
12000: from 192.168.1.0/24 to 10.10.212.1/30 iif eth0 oif eth2 lookup 888
32766: from all lookup main
32767: from all lookup default
Su un sistema Linux standard (Ubuntu nel caso di questo post), vedresti le tre tabelle di regole predefinite local
, main
e default
, di cui normalmente vedi solo il main
tabella quando si invoca netstat -rn
per esempio.
Ora vogliamo popolare le voci FIB nella tabella di ricerca 888 con nuove voci di instradamento:
ip route add default via 10.37.129.4 dev eth2 table 888
Vediamo come appaiono le nostre voci di instradamento nella tabella 888:
ip route show table 888
default via 10.37.129.4 dev eth2
Penso che tu abbia l'idea. Ora, per quanto riguarda le tue specifiche esigenze di routing, non è chiaro cosa esattamente stai cercando di ottenere. Assicurati di svuotare la cache di routing quando giochi con le tabelle delle regole:
ip route flush cache
Nota che usando l'architettura iproute2 puoi sostanzialmente filtrare e modificare praticamente qualsiasi voce FIB; le voci delle regole possono essere effettuate anche sulla base di fwmarks e/o classificatori u32, come segue (esempio tratto dal policy routing book):
tc filter add dev eth1 parent ffff: protocol ip prio 1 u32
match ip src 10.1.1.0/24 classid :1
ip rule add fwmark 1 table 1 prio 15000 realms 3/4
ip route add default via 192.168.1.1 table 1 src 192.168.1.254
ip route flush cache
Per le cose che vanno in tilt nelle voci delle tabelle delle regole, molti anni fa avevo preparato un piccolo frammento di bash per riportare il mio sistema allo stato originale delle regole di routing:
: ${KEEP:="local main default"}
while read prio rule; do
continue=0
for keep in ${KEEP}; do
if [ "${rule//lookup ${keep}/}" != "${rule}" ]; then
continue=1
fi
done
if [ ${continue} -eq 0 ]; then
ip rule del prio ${prio%%:*} ${rule//all/0/0}
fi
done < <(ip rule show)
Sorprendentemente, sembra che dopo oltre 10 anni di iproute2
's esiste, ancora solo poche persone sembrano sapere che esiste un universo oltre il classico "rotto" strumenti come ifconfig
o netstat
.