Ich werde verrückt, da ich jetzt schon seit fast einer Woche versuche, das zu lösen.
Szenario:Ein Server mit zwei verschiedenen Netzwerkgeräten. Jedes Gerät ist an ein anderes Unternehmenssubnetz angeschlossen.
eth0
ist eingesteckt x.y.5.184/29
, während eth1
ist eingesteckt x.y.88.224/27
. Ich möchte, dass der Server auf lauschtbeideGeräte.
Server-IP in .5.184/29
soll sein x.y.5.186
, Server-IP in .88.224/27
soll sein x.y.88.253
. Ich möchte zwei verschiedene VMs mit Apache betreiben, daher soll der Server – mit natpf zur jeweiligen VM – auf x.y.5.186:p1
VM1 und auf x.y.88.253:p2
VM2 lauschen
x
und y
müssen aus Datenschutzgründen ausgeblendet werden, erhalten aber Werte.
Also, hier ist das Problem: Wenn ich auftauche eth1
, antwortet der Server nicht eth0
und ich weiß nicht wirklich, warum.
Hier ist eine Ausgabemitbeide Geräte hoch:
[user@server ~]$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet x.y.5.186 netmask 255.255.255.248 broadcast x.y.5.191
ether <MAC> txqueuelen 1000 (Ethernet)
RX packets 77141 bytes 50779367 (48.4 MiB)
RX errors 27 dropped 0 overruns 26 frame 1
TX packets 83841 bytes 63781133 (60.8 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet x.y.88.253 netmask 255.255.255.224 broadcast x.y.88.255
ether <MAC> txqueuelen 1000 (Ethernet)
RX packets 77911 bytes 6285521 (5.9 MiB)
RX errors 0 dropped 836 overruns 0 frame 0
TX packets 6502 bytes 1057860 (1.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 740 bytes 606784 (592.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 740 bytes 606784 (592.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:67:e6:77 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[user@server ~]$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 x.y.5.185 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 x.y.88.225 0.0.0.0 UG 10 0 0 eth1
x.y.5.184 0.0.0.0 255.255.255.248 U 0 0 0 eth0
x.y.88.224 0.0.0.0 255.255.255.224 U 10 0 0 eth1
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
[user@server ~]$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
# ifcfg-eth0
HWADDR=<MAC>
TYPE=Ethernet
BOOTPROTO=none
#DNS1=x.y.company.dns
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV4_ROUTE_METRIC=0
IPV6INIT=no
IPV6_AUTOCONF=no
IPV6_DEFROUTE=no
IPV6_FAILURE_FATAL=no
NAME=SERVER
UUID=<uuid>
DEVICE=eth0
ONBOOT=yes
IPADDR=x.y.5.186
PREFIX=29
GATEWAY=x.y.5.185
[user@server ~]$ cat /etc/sysconfig/network-scripts/ifcfg-eth1
# ifcfg-eth1
HWADDR=<MAC2>
TYPE=Ethernet
BOOTPROTO=none
#DNS1=x.y.company.dns
DEFROUTE=no
IPV4_FAILURE_FATAL=yes
IPV4_ROUTE_METRIC=10
IPV6INIT=no
IPV6_AUTOCONF=no
IPV6_DEFROUTE=no
IPV6_FAILURE_FATAL=no
NAME=CLIENT
UUID=<uuid2>
DEVICE=eth1
ONBOOT=no
IPADDR=x.y.88.253
PREFIX=27
GATEWAY=x.y.88.225
Ich denke also, dass es eine Route sein könnte. Ich habe /etc/sysconfig/network-scripts/route-eth0
und gelöscht route-eth1
, das sind also die Standardeinstellungen.
[user@server ~]$ ip route
default via x.y.5.185 dev eth0 proto static
default via x.y.88.225 dev eth1 proto static metric 10
x.y.5.184/29 dev eth0 proto kernel scope link src x.y.5.186
x.y.88.224/27 dev eth1 proto kernel scope link src x.y.88.253 metric 1
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
Ich habe die Standardroute gelöscht füreth1
[root@server user]# ip route del default via x.y.88.225 dev eth1 prot
Und trotzdem ändert sich nichts. Ping zu eth0
IP schlägt fehl, aber wenn ich die andere Route lösche mit
[root@server user]# ip route del x.y.88.224/27 dev eth1 proto kernel ric 10
eth0
funktioniert wieder, jede Verbindung x.y.5.186
funktioniert wieder, eth1
funktioniert aber nicht mehr. Soweit ich weiß, eth1
sollte die von mir verwendete Metrik das Problem lösen, tut es aber nicht. Hat irgendein Routing-Experte eine Idee dazu?
Bearbeiten: frisches CentOS
Antwort1
Diese Frage wurde hier schon millionenfach gestellt.
Es kann nicht so gemacht werden, wie Sie es versuchen, Sie brauchenRichtlinienrouting. Eine Einführung dazu finden SieHier.
Sie müssen angeben, alsIP-Regeldas bestimmt, welche der beiden Routing-Tabellen angewendet werden soll. Eine gibt an, dass, wenn das Paket von der IP-Adresse von VM1 kommt, Tabelle 1 verwendet wird, andernfalls Tabelle 2. Aus diesem Grund wird es manchmalQuellrouting, anstelle von Policy-Routing: denn welche Tabelle angewendet werden soll, wird auf Grundlage der Quell-IP-Adresse und nicht der Zieladresse ausgewählt.