ubuntuusers.de

post-up iptables

Status: Gelöst | Ubuntu-Version: Ubuntu 12.04 (Precise Pangolin)
Antworten |

archondis

Anmeldungsdatum:
2. August 2012

Beiträge: 313

Guten morgen,

ich betreibe einen ProxmoxServer. Um Portweiterleitungen zu gestatten, habe ich in der vi /etc/network/interfaces folgenden Code.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
auto lo
iface lo inet loopback

auto vmbr0
iface vmbr0 inet static
	address 192.168.178.254
	netmask 255.255.255.0
	gateway 192.168.178.1
	bridge_ports eth0
	bridge_stp off
	bridge_fd 0
	
	
# zweite Netzwerkarte für das interne Netzwerk 192.168.0.0/24
auto vmbr1
iface vmbr1 inet static
        address  192.168.0.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.0.0/24' -o vmbr0 -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -s '192.168.0.0/24' -o vmbr0 -j MASQUERADE

#Zentyal Server
        post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 1020 -j DNAT --to 192.168.0.1:443
        post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 1020 -j DNAT --to 192.168.0.1:443

#Web Server
        post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 1022 -j DNAT --to 192.168.0.2:22
        post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 1022 -j DNAT --to 192.168.0.2:22

Wenn Änderungen an dieser Datei gemacht werden, muss jedesmal ein Reboot durchgeführt werden. Wie könnte ich das in einem Firewall Scrit unterbringen, damit ich die Regeln Löschen und wieder einlesen kann?

Bzw. die Einträge in ein Script setzen?

Ich stehe zur zeit etwas auf dem Schlauch. ☹

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14347

archondis schrieb:

Wie könnte ich das in einem Firewall Scrit unterbringen, damit ich die Regeln Löschen und wieder einlesen kann?

Bzw. die Einträge in ein Script setzen?

Wenn Du keine weitere iptables-Regeln hast, dann versuch mal mit:

#!/bin/sh
#
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
#
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o vmbr0 -j MASQUERADE
iptables -t nat -I PREROUTING 1 -i vmbr0 -p tcp --dport 1020 -j DNAT --to 192.168.0.1:443
iptables -t nat -I PREROUTING 2 -i vmbr0 -p tcp --dport 1022 -j DNAT --to 192.168.0.2:22

archondis

(Themenstarter)

Anmeldungsdatum:
2. August 2012

Beiträge: 313

Danke lubux,

ich kommentierte folgendes in der interfaces aus

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
auto vmbr1
iface vmbr1 inet static
        address  192.168.0.254
        netmask  255.255.255.0
        bridge_ports none
        bridge_stp off
        bridge_fd 0
        
	#------------------------ Nur zum Testen Ubuntu Forum!
	
        #post-up echo 1 > /proc/sys/net/ipv4/ip_forward
        #post-up iptables -t nat -A POSTROUTING -s '192.168.0.0/24' -o vmbr0 -j MASQUERADE
        #post-down iptables -t nat -D POSTROUTING -s '192.168.0.0/24' -o vmbr0 -j MASQUERADE

#Zentyal Server
        #post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 1020 -j DNAT --to 192.168.0.1:443
        #post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 1020 -j DNAT --to 192.168.0.1:443

#Web Server
        #post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 1022 -j DNAT --to 192.168.0.2:22
        #post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 1022 -j DNAT --to 192.168.0.2:22

Danach einen Reboot

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
iptables -L -t nat

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Nun zum Script! chmod -x firewall.sh chmod 755 firewall.sh

Nun führte ich das firewall Script aus!

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/sh
#
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
#
iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o vmbr0 -j MASQUERADE
iptables -t nat -I PREROUTING 1 -i vmbr0 -p tcp --dport 1020 -j DNAT --to 192.168.50.1:443
iptables -t nat -I PREROUTING 2 -i vmbr0 -p tcp --dport 1021 -j DNAT --to 192.168.50.2:4576




# Alte Variante!
#Zentyal Server
#        post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 1020 -j DNAT --to 192.168.50.1:443
#        post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 1020 -j DNAT --to 192.168.0.1:443

#Web Server Cosynus
#        post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 1021 -j DNAT --to 192.168.50.2:4576
#        post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 1021 -j DNAT --to 192.168.50.2:4576

Ausgabe

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
iptables -L -t nat

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  anywhere             anywhere             tcp dpt:1020 to:192.168.50.1:443
DNAT       tcp  --  anywhere             anywhere             tcp dpt:1021 to:192.168.50.2:4576

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  192.168.50.0/24      anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Nun komme ich aber nicht mehr von extern auf den Server mit der "tcp dpt:1020 to:192.168.50.1:443".

Wenn ich meine Regle wieder einbinde "original" und einen Rebooet mache, bekomme ich folgende Ausgabe

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  anywhere             anywhere             tcp dpt:1020 to:192.168.50.1:443

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  192.168.50.0/24      anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Das sieht doch gleich aus??

Was bedeutet die 1/2 in der "PREROUTING 1" "PREROUTING 2" ?

danke vorab für deine Hilfe.

archondis

(Themenstarter)

Anmeldungsdatum:
2. August 2012

Beiträge: 313

OK, ich hab es gefunden,

das

echo 1 > /proc/sys/net/ipv4/ip_forward

hat noch gefehlt.

SUPPER! VIELEN DANK 👍 👍

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14347

archondis schrieb:

ich kommentierte folgendes in der interfaces aus

Ich denke, das ist falsch. Warum kommentierst Du überhaupt aus? Und dann auch noch:

#post-up echo 1 > /proc/sys/net/ipv4/ip_forward

Was bedeutet die 1/2 in der "PREROUTING 1" "PREROUTING 2" ?

Insert one or more rules in the selected chain as the given rule number.  So, if the rule number is 1, the  rule  or  rules are inserted at the head of the chain.

archondis

(Themenstarter)

Anmeldungsdatum:
2. August 2012

Beiträge: 313

gegen das auskommentieren in der Testphase spricht meiner Meinung nichts dagegen. Oder habe ich dich jetzt falsch verstanden?

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14347

archondis schrieb:

gegen das auskommentieren in der Testphase spricht meiner Meinung nichts dagegen. Oder habe ich dich jetzt falsch verstanden?

Das Auskommentieren ist nicht notwendig, denn das Script funktioniert unabhängig von irgendwelchen (aktiven) iptables-Regeln:

-F, --flush [chain]
              Flush the selected chain (all the chains in the table if none is given).  This is equivalent to deleting all the rules  one by one.

archondis

(Themenstarter)

Anmeldungsdatum:
2. August 2012

Beiträge: 313

ok, danke 😀

Antworten |