Netzwerk Routing Problem...

Akecheta

New Member
Servus liebe leutz,

ich betreue den Server eines Freundes welcher sich den aus der ServerBoerse von Hetzner bestellt hat. Der Server hat nun schon einige Jahre auf dem Buckel, aber es hackt an dem kompletten IP Zuweisung.

die IPs werden auf der Netzwerkkarte vai ip up eingebunden.

Code:
root ~ # nano /etc/network/interfaces
iface enp6s0 inet static
    address  46.4.xxx.xxx
    netmask  255.255.255.224
    gateway  46.4.96.97
    up route add -net 46.4.96.96 netmask 255.255.255.224 gw 46.4.96.97 dev enp6s0
    up ip addr add 46.4.xxx.xxx/32 dev enp6s0
    up ip addr add 46.4.xxx.xxx/32 dev enp6s0
    up ip addr add 46.4.xxx.xxx/32 dev enp6s0
    up ip addr add 46.4.xxx.xxx/32 dev enp6s0
    up ip addr add 46.4.xxx.xxx/32 dev enp6s0
    up ip addr add 46.4.xxx.xxx/32 dev enp6s0

auto vmbr0
iface vmbr0 inet static
    address  192.168.100.254
    netmask  255.255.255.0
    bridge_ports none
    bridge_stp off
    bridge_fd 0
    post-up echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up iptables -t nat -A POSTROUTING -s '192.168.100.0/24' -o enp6s0 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '192.168.100.0/24' -o enp6s0 -j MASQUERADE

so sind die IPs nun auf dem RootServer bekannt und sind abrufbar. Da mit Proxmox Virtualisiert wird ist die vmbr0 hier vorhanden welche den VMs eine Interne IP vergeben sollte (sofern DHCP läuft) andernfalls sind die VMs Manuell auf das Netzwerk eingestellt.

VM01 => 192.168.100.10
VM02 => 192.168.100.20
u.s.w.

auf dem Root Server wird eine IPTables basierendes Script ausgeführt welche die IP Adressen an das Jeweilige Interne Netz Routen sollte.
Code:
#!/bin/bash

# POLICY
# ------------------------------------------------------------

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

iptables -F
iptables -t nat -F

# REGELN :: LO
# ------------------------------------------------------------

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# REGELN :: DNAT + SNAT
# ------------------------------------------------------------

iptables -t nat -A PREROUTING -d 46.4.xxx.xxx -j DNAT --to-destination 192.168.100.20
iptables -t nat -A POSTROUTING -s 192.168.100.20 -j SNAT --to-source 46.4.xxx.xxx

iptables -t nat -A PREROUTING -d 46.4.xxx.xxx -j DNAT --to-destination 192.168.100.30
iptables -t nat -A POSTROUTING -s 192.168.100.30 -j SNAT --to-source 46.4.xxx.xxx

iptables -t nat -A PREROUTING -d 46.4.xxx.xxx -j DNAT --to-destination 192.168.100.50
iptables -t nat -A POSTROUTING -s 192.168.100.50 -j SNAT --to-source 46.4.xxx.xxx

iptables -t nat -A PREROUTING -d 46.4.xxx.xxx -j DNAT --to-destination 192.168.100.10
iptables -t nat -A POSTROUTING -s 192.168.100.10 -j SNAT --to-source 46.4.xxx.xxx

# iptables -t nat -A PREROUTING -d 46.4.xxx.xxx -j DNAT --to-destination 192.168.100.60
# iptables -t nat -A POSTROUTING -s 192.168.100.60 -j SNAT --to-source 46.4.xxx.xxx

# iptables -t nat -A PREROUTING -d 46.4.xxx.x -j DNAT --to-destination 192.168.100.Y
# iptables -t nat -A POSTROUTING -s 192.168.100.Y -j SNAT --to-source 46.4.xxx.x

# x = externe IP y = interne IP

# KEINE EIGENE MAC ANFORDERN !!!!!!!!!!!!!!!! in HETZNER ROBOT 


# REGELN :: NET - LOKAL - NET
# ------------------------------------------------------------

iptables -A INPUT -i enp6s0 -p tcp --dport 22 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i enp6s0 -p tcp --dport 80 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i enp6s0 -p tcp --dport 8006 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i enp6s0 -p icmp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

iptables -A INPUT -i enp6s0 -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i enp6s0 -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o enp6s0 -p tcp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp6s0 -p udp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp6s0 -p icmp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

# REGELN :: VM - LOKAL - VM
# ------------------------------------------------------------

iptables -A INPUT -i vmbr0 -p tcp --dport 22 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

iptables -A INPUT -i vmbr0 -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i vmbr0 -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i vmbr0 -p icmp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o vmbr0 -p tcp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o vmbr0 -p udp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o vmbr0 -p icmp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

# REGELN :: NET - VM - NET
# ------------------------------------------------------------

iptables -A FORWARD -i enp6s0 -o vmbr0 -p tcp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i enp6s0 -o vmbr0 -p udp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i enp6s0 -o vmbr0 -p icmp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i vmbr0 -o enp6s0 -p tcp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i vmbr0 -o enp6s0 -p udp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i vmbr0 -o enp6s0 -p icmp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

# END-REGELN
# ------------------------------------------------------------

iptables -A INPUT -i enp6s0 -j REJECT
iptables -A INPUT -i vmbr0 -j REJECT

iptables -A OUTPUT -o enp6s0 -j REJECT
iptables -A OUTPUT -o vmbr0 -j REJECT

iptables -A FORWARD -i enp6s0 -o vmbr0 -j REJECT
iptables -A FORWARD -i vmbr0 -o enp6s0 -j REJECT

wenn ich die VMs untereinnander mit der Internen IP Anspreche, klappt alles vernünftig. die andere VM Antwortet auf meine Anfragen. Wenn ich diese nun aber über die Externe IP anprechen möchte, geht das ins leere und erhalte ein 100% Packet Lost. vlt ist es nur ein Denkfehler, aber ich blicke nicht mehr durch wo ich einen fehler gemacht haben könnte.

das IPTables Script stammt nicht von mir dies ist noch von einem weiteren Administrator.

die VMs 2x Linux, 2x Windows haben alle das Selbe problem.

Das Hostsystem basiert auf Debian 10, Aktuelle Updates eingespielt in verbindung mit Proxmox. ebenfalls ist DNSMasQ installiert. Die VMs haben als DNS Server den Root eingetragen bekommen und als 2. DNS den Server 1.1.1.1, Gateway steht ebenfalls bei der Internen IP des Roots (192.168.100.254)

ich hoffe das mir hier jemand helfen kann denn das Routing Problem belastet auch die VMs wenn diese eine Verbindung zu anderen Servern aufbauen wollen um Versionen zu Prüfen.
 
IPTables werden von oben nach unten abgearbeitet, was als erstes matcht wird genommen.
Deine Masquerade Regel steht als erstes drin. Die SNAT Regeln dahinter. D.h. ausgehend dürfte immer die Masquerade Regel als erstes greifen. Was in Kombination mit der DNAT Regel dafür sorgt, dass die Antwortpakete mit einer anderen IP rausgehen, als ursprünglich angesprochen. Das können die Gegenstellen nicht zusammenführen und verwerfen die Pakete. Entsprechend kommt nichts durch.

Wie wärs ansonsten mit der offensichtlichsten Debug Maßnahme? Dauerping von aussen, Paketzähler der IPTables zurücksetzen und gucken welche Regeln überhaupt Pakete zählen. Zusätzlich via tcpdump an die einzelnen Interfaces dran hängen und gucken wo das Paket mit welchen Adressen verloren geht.
Ist der Weg rein debuggt, macht man das gleiche mit den Antwortpaketen in die Gegenrichtung. Wenn dort das NAT aus irgendeinem Grund klemmt, geht halt auch nichts.
 
Back
Top