fragen stichworte

Verwendung von iptables zum Weiterleiten von Paketen mit einer bestimmten Ziel-IP über eine bestimmte Schnittstelle

Ich habe eine Linux-Box als Router, die dieses Tutorial verwendet: https://help.ubuntu.com/community/Router

Auf dieser Maschine gibt es 2 Netzwerkschnittstellen und ein VPN: eth0 ist die Hauptinternetschnittstelle, eno1 ist das Intranet und tun0 ist die VPN-Schnittstelle.

Wie in diesem Tutorial verwende ich das folgende Skript, um alles, was von eno1 kommt, durch den vpn:

zu leiten
iptables-restore <<-EOF
*nat
-A POSTROUTING -o tun0 -j MASQUERADE
COMMIT

*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -i tun0 -o eno1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i eno1 -o tun0 -j ACCEPT
-A FORWARD -j LOG
COMMIT
EOF

Das funktioniert großartig. Jetzt möchte ich alle Pakete von eno1 und mit der Ziel-IP von 203.205.147.173 über eth0 weiterleiten.

Welche Art von iptables-Regeln sollte ich meinem Skript hinzufügen?

Bearbeiten

Ich habe das Skript wie folgt geändert, um alle Pakete zu 203.205.147.173 zu kennzeichnen:

iptables-restore <<-EOF
*nat
-A POSTROUTING -o tun0 -j MASQUERADE
COMMIT

*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -i tun0 -o eno1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i eno1 -o tun0 -j ACCEPT
-A FORWARD -j LOG
COMMIT

*mangle
-A PREROUTING -i "$INTIF" -d 203.205.0.0/16 -j MARK --set-mark 0x15
COMMIT
EOF

Dann erstelle ich die Tabelle X:

sudo nano/etc/iproute2/rt_tables und fügen Sie dann am Ende der Datei 1 tableX hinzu.

Fügen Sie dann Regel und Route hinzu:

sudo ip rule add fwmark 0x15 lookup tableX
sudo ip route add default via 192.168.5.1 dev eth0 table tableX
sudo ip route add 203.205.0.0/16 via 192.168.5.1 dev eth0 table tableX

aber traceroute 203.205.147.173 Timeout:

traceroute to 203.205.147.173 (203.205.147.173), 64 hops max, 52 byte packets
 (192.168.8.1)  2.384 ms  1.060 ms  1.027 ms
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  * * *
 7  * * *
 8  * * *

Ich denke, ich füge TableX nicht die richtige Route hinzu. Vorschläge zur Initialisierung von tableX?

Beachten Sie, dass eth0 router ip 192.168.5.1 und eno1 router ip 192.168.8.1

sind

antworten

Die iptables leitet selbst nichts weiter, kann aber die Routing-Entscheidung mit Firewall-Markierungen beeinflussen. Sie fügen mit dem ip-Tool weitere Routingtabellen hinzu (etwa ip route add <route> ... table X, fügen dann die Regeln hinzu, um die Pakete nach Firewall-Markierung (ip rule add fwmark 0x1 lookup X) zu leiten und markieren die Pakete mit den iptables-Regeln (iptables -t mangle -A PREROUTING ... -j MARK --set-mark 0x1). Nach diesen Schritten Die markierten Pakete werden durch die Routing-Tabelle X geleitet. Weitere Informationen erhalten Sie von LARTC (linux advanced routing und Traffic Control).

Sie müssen eine Zeile hinzufügen wie:

-A FORWARD -i eno1 -o eth0 -d 203.205.147.173 -j ACCEPT

Sie müssen es möglicherweise vor der Regel LOG hinzufügen.