Beantwortet: Headless server zugriff via SSH bei aktiven VPN (OpenVPN)

minion

New Member
Moin moin,
da ich mittlerweile mit meinem Latein am Ende bin, frage ich hier mal nach und hoffe, dass hier jemand besser mit iptables ist als ich.

Also nun zu meinem Problem, ich habe meinen headless server, auf dem der OpenVPN client läuft. Während der Client aktiv ist, würde ich gerne trotzdem zugriff via SSH haben.

Hier mein iptables/ip setup:
Code:
iptables -t mangle -A PREROUTING -i eth0 -m conntrack --ctstate NEW -j CONNMARK --set-mark 1
iptables -t mangle -A OUTPUT -m connmark --mark 1 -j MARK --set-mark 2

ip route add 172.31.1.1/32 dev eth0 proto kernel scope link src 1.0.0.101 table 2
ip route add default via 172.31.1.1 table 2
ip rule add fwmark 2 table 2

OS: Ubuntu 16.04.4 LTS
Sonstiges: SeedBox mittels QuickBox installiert.

Ich bin mir nach einigem debuggen mittlerweile ziemlich sicher, dass die config so funktioniert und der eingehende und ausgehende traffic richtig ge-marked wird.

Das Interessante ist, sobald ich den OpenVPN Service starte und die Verbindung steht, funktioniert der Zugriff via SSH nicht mehr.

Hat jemand ne Idee, wo ich ansetzen kann bzw. sieht den Fehler direkt?

Grüße
minion
 
Solution
Hab es jetzt auf eine andere Weise gelöst.

Angenommen die public IP vom Server ist "123.456.789.001", wäre die config wie folgend.

Code:
ip route add 172.31.1.1/32 dev eth0 proto kernel scope link src 123.456.789.001 table 1
ip route add default via 172.31.1.1 table 1
ip rule add table 1 from 123.456.789.001
ip rule add fwmark 1 table 1


# SSH incoming
iptables -t filter -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
# DNS outgoing
iptables -t filter -A INPUT -i eth0 -p udp --sport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -p udp --dport 53 -m state...
Hallo.

Ich verstehe nicht ganz, was du mit dem 2. Mark machst.
So wie ich mir das vorstelle:
- mit CONNMARK werden nur die fwmarks gespiegelt
- dadurch werden dieselben Marks auch auf die dazugehörenden ausgehenden Pakete gesetzt
- anhand der fwmark rule wird dann die routing-table ausgewählt

Ich kann es gerade nicht direkt testen, aber so etwas ähnliches habe ich schon verwendet:

Code:
iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark
iptables -t mangle -A PREROUTING -i eth0 -m conntrack --ctstate NEW -m mark --mark 0 -j MARK --set-mark 1

iptables -t mangle -A POSTROUTING -j CONNMARK --save-mark

und das Routing so wie du es schon hast, nur mit "fwmark 1"
 
Hi @MixMaster,
Ich hab das gerade mal ausprobiert. Leider führt das was du mir da geschrieben hast auch nicht zur Lösung. Der Server ist nach dem VPN-Aufbau immer noch nicht via SSH erreichbar. :(
 
Hab es jetzt auf eine andere Weise gelöst.

Angenommen die public IP vom Server ist "123.456.789.001", wäre die config wie folgend.

Code:
ip route add 172.31.1.1/32 dev eth0 proto kernel scope link src 123.456.789.001 table 1
ip route add default via 172.31.1.1 table 1
ip rule add table 1 from 123.456.789.001
ip rule add fwmark 1 table 1


# SSH incoming
iptables -t filter -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
# DNS outgoing
iptables -t filter -A INPUT -i eth0 -p udp --sport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -p udp --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# OpenVPN outgoing
iptables -t filter -A OUTPUT -o eth0 -p udp -m multiport --dports 148,149,150,151,1148,1149,1150,1151 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -p tcp -m multiport --dports 300,301,142,152,1142,1152 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p udp -m multiport --sports 148,149,150,151,1148,1149,1150,1151 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp -m multiport --sports 300,301,142,152,1142,1152 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Traffic through OpenVPN
iptables -t filter -A OUTPUT -o tun0 -j ACCEPT
iptables -t filter -A INPUT -i tun0 -j ACCEPT
# Webinterface SeedBox incoming
iptables -t filter -A INPUT -i eth0 -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -p tcp -m multiport --sports 80,443 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Policy DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P INPUT DROP
 
Solution
Back
Top