Einrichten von öffentlichem und privatem Routing unter Ubuntu

Einrichten von öffentlichem und privatem Routing unter Ubuntu

Ich habe eine Weile gesucht und kann keine gute Antwort darauf finden, also dachte ich, ich frage einfach mal, bevor ich noch ein paar Tage damit verbringe, meinen Kopf auf den Schreibtisch zu schlagen.

Ich habe eine Ubuntu-Box mit zwei physischen Schnittstellen und einer virtuellen Schnittstelle.

  eno1 - 172.16.0.100
  eno2 - 172.16.0.101
eno1:0 - x.x.x.x

Was ich gerne hätte

  1. Bei Antworten auf eingehende Pakete möchte ich, dass die Pakete über die Schnittstelle ausgegeben werden, über die die Anforderung eingegangen ist.
  2. Für ausgehende Pakete möchte ich, dass sie standardmäßig am ... versendet werden.

    a. eno1 – für Pakete, die für private Netzwerke bestimmt sind (mehrere nicht zusammenhängende 172.16.x.0-Bereiche) b. eno1:0 – für Pakete, die für alle anderen Netzwerke bestimmt sind

Aktuelles Setup

IP-Regelliste

0:  from all lookup local 
32760:  from all to x.x.x.x lookup eno1:0 
32761:  from x.x.x.x lookup eno1:0 
32762:  from all to 172.16.0.101 lookup eno2 
32763:  from 172.16.0.101 lookup eno2 
32764:  from all to 172.16.0.100 lookup eno1 
32765:  from 172.16.0.100 lookup eno1 
32766:  from all lookup main 
32767:  from all lookup default

IP-Routenlistentabelle eno1:0

default via x.x.x.1 dev eno1 

IP-Routenlistentabelle eno1

default via 172.16.0.1 dev eno1 
172.16.0.0/24 dev eno1  scope link  src 172.16.0.100 

IP-Routenlistentabelle eno2

default via 172.16.0.1 dev eno2 
172.16.0.0/24 dev eno2  scope link  src 172.16.0.101

IP-Routenliste

default via 172.16.0.1 dev eno1 onlink 
x.x.x.0/23 dev eno1  proto kernel  scope link  src x.x.x.x 
172.16.0.0/24 dev eno2  proto kernel  scope link  src 172.16.0.101 
172.16.0.0/24 dev eno1  proto kernel  scope link  src 172.16.0.100

sysctl-Werte für eno1 und eno2

arp_filter=1
arp_ignore=1
arp_announce=2

Probleme

  1. Ich kann eno1 und eno2 sporadisch von Bereichen außerhalb ihrer Subnetze erreichen, aber ich kann eno1:0 überhaupt nicht erreichen.
  2. Von der Box aus kann ich das Internet (öffentliche IPs) überhaupt nicht erreichen.

Antwort1

Die Antwort entdeckt – oder vielmehr wiederentdeckt …

Das Problem ist, dass Unix davon ausgeht, dass der Host die Netzwerkeinheit ist und nicht der Port, was auf Multi-Homed-Servern alle möglichen ARP-Probleme verursacht. Ich musste also im Grunde die ARP-Antworten auf einer Schnittstelle auf die mit dieser Schnittstelle verknüpften IP-Adressen beschränken, da Unix sonst auf JEDER Schnittstelle unabhängig von der IP antwortet – was alle anderen Geräte im Subnetz wirklich verwirrt.

Also... Arptables installiert

sudo apt-get -y install arptables

Beschränken Sie die Antworten auf jeder Schnittstelle auf die IPs auf der Schnittstelle

sudo arptables -n -v --line-numbers -L
Chain INPUT (policy DROP 6011K packets, 168M bytes)
1 -j ACCEPT -i eno1 -o * -d x.x.x.x , pcnt=2496 -- bcnt=69888 
2 -j ACCEPT -i eno1 -o * -d 172.16.0.100 , pcnt=294 -- bcnt=8232 
3 -j ACCEPT -i eno2 -o * -d 172.16.0.101 , pcnt=294 -- bcnt=8232 

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
1 -j ACCEPT -i * -o eno1 -s x.x.x.x , pcnt=2503 -- bcnt=70084 
2 -j ACCEPT -i * -o eno1 -s 172.16.0.100 , pcnt=295 -- bcnt=8260 
3 -j ACCEPT -i * -o eno2 -s 172.16.0.101 , pcnt=294 -- bcnt=8232 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

Und voilà, alle IPs antworten auf ihren richtigen Ports.

Mann! Ich hoffe, ich vergesse das nicht wieder!

verwandte Informationen