Portweiterleitung iptables an openvpn Client

qupfer

Cadet 4th Year
Registriert
Apr. 2011
Beiträge
76
Hi, dank eines etwas restriktiven Paketfilters (UDP mag der nicht :D) nutze ich einen billigen VServer als openvpn Server um auch mal online zocken zu können. Dabei wird der gesamte Traffic hatl darüber geschickt, der (S)NAT'et und schon läuft die Spielteilnahme. Zwar eher bescheidene Pings aber egal :D
Nun möchte ich auch ab und zu mal ein Spiel hosten und habe mir gedacht, da bräuchte ich ja nur die iptables passend einstellen, dass die alles übers tap device schicken soll, an meinen eigentlichen Rechner. ODer habe ich da einen Denkfehler? Mir fehlt nur die Ahnung wie man die iptables richtig einstellt

Also momentan siehts so aus

VPN-IPs 192.168.42.128 (Client) und 192.168.42.1 (Server)
Client(PC an dem ich Sitze)<---->Internet direkt<--->Openvpnserver<---->WWW & CO

Die ifconfig sieht so aus
Code:
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:18 errors:0 dropped:0 overruns:0 frame:0
          TX packets:18 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1080 (1.0 KiB)  TX bytes:1080 (1.0 KiB)

tap0      Link encap:Ethernet  HWaddr 11:22:33:44:55:66
          inet addr:192.168.42.1  Bcast:192.168.42.255  Mask:255.255.255.0
          inet6 addr: fe80::ecf3:eeff:fed2:c580/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:87555 errors:0 dropped:0 overruns:0 frame:0
          TX packets:85297 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:12540663 (11.9 MiB)  TX bytes:86245336 (82.2 MiB)

venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet6 addr: 1234:1234:1234:1234:abcd:abcd:abcd:abcd/0 Scope:Global
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:167487 errors:0 dropped:0 overruns:0 frame:0
          TX packets:216010 errors:0 dropped:623 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:104541894 (99.6 MiB)  TX bytes:105443950 (100.5 MiB)

venet0:0  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:209.85.148.99  P-t-P:209.85.148.99  Bcast:0.0.0.0  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
(global gültige IPs natürlich geändert :D )

und in der iptables (NAT) steht bisher nur:
Code:
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
SNAT       all  --  192.168.42.0/24      anywhere            to:209.85.148.99

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Könnte mir einer kurz sagen, in welchen iptable ich was reinschreiben muss, damit das klappt?

Danke (die Windowsfirewall bekomm ich dann aber selber hin :evillol: )
 
Zuletzt bearbeitet:
naja im prerouting sollte dann sowas stehen wie

Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT udp -- anywhere <server-inet-ip> udp dpt:<port> to:192.168.42.128:<port>

und in der FORWARD chain dann sowatt

Chain FORWARD
pkts bytes target prot opt in out source destination
0 0 ACCEPT udp -- any any anywhere 192.168.42.128 udp dpt:<port>

in den man pages findest du sicher alles was du brauchst :-)

masquerading sollte an sich auch nicht fehlen. iwie wäre da ein tun device eigentlich besser. tap impliziert ja immer eher das nutzen einer bridge.
 
Zuletzt bearbeitet:
BasCom schrieb:
iwie wäre da ein tun device eigentlich besser. tap impliziert ja immer eher das nutzen einer bridge.

Könntest du das etwas detailierter (also idiotensicher) ausführen? :D
Wenn ich einfach mal spasseshalber auf tun stelle, dann meckert openvpn über eine unsinnige config...vermutlich zu recht.
Code:
Options error: --server-bridge directive only makes sense with --dev tap
Code:
dev tun
#dev tap

proto tcp-server
#proto udp
tls-server
ca /etc/openvpn/keys/ca.crt
key /etc/openvpn/keys/meineDomain.key
cert /etc/openvpn/keys/meineDomain.crt
dh /etc/openvpn/keys/dh2048.pem

# Tell OpenVPN to be a multi-client udp server
mode server

# The server's virtual endpoints
#ifconfig 192.168.42.1 255.255.255.0
server-bridge 192.168.42.1 255.255.255.0 192.168.42.128 192.168.42.254
push "redirect-gateway def1"
push "dhcp-option DNS 208.67.222.222"

keepalive 10 120

log /var/log/openvpn.log
log-append /var/log/openvpn.log

# The server doesn't need privileges
user nobody
group nogroup


port 666

persist-key
persist-tun


daemon

verb 1

# special configs for each client
client-config-dir /etc/openvpn/client-conf

client-to-client
ifconfig-pool-persist ipp.txt
ifconfig 192.168.42.1 255.255.255.0

Edit: Multi-Client ist nicht mehr zwingend erforderlich....wie müsste da eine vereinfachte Konfig aussehen?
 
Zuletzt bearbeitet:
naja, ich nehme an du kannst tap belassen, es läuft ja alles bei dir, was das netzwerk angeht. normalerweise baust ja n tap device, das brückst du dann mit eth0. der brücke gibts dann die ip des ovpn servers. dann müsstest du deinem pc natuerlich auch eine ip auis diesem bereich geben. geht nicht, es sei denn dein vserver hat mehrere öffentliche ips. aber ein tap device kann auch unbridged sein, wie es wohl in deinem Fall ist.

meine tun config sieht z.b. so aus:

Code:
# Port
port XXX

# TCP oder UDP?
#proto tcp-server
#proto tcp-server
mode server
proto udp
tls-server

# tun oder tap?
# Das tun Device erstellt einen IP Tunnel,
# während das tap Device einen Ethernet Tunnel erstellt.
#tun or tap device
#tun is an IP tunnel,
#tap an ethernet tunnel
dev tun0
#tun-ipv6


#Our Server IP
ifconfig 192.168.254.1 192.168.254.2

#dynamic clients from 10.0.0.2-10.0.0.254
ifconfig-pool 192.168.254.2 192.168.254.10

client-to-client

#Die pakete werden auf dieser größe gekapselt
tun-mtu 1500
#fragment 1300
mssfix

#Paths to the certs
ca xxx.pem
cert yyy.pem
key www.pem

#Diffie-Hellmann Parameters
dh /etc/zerts/dh1024.pem

#Same Ip in the next session
ifconfig-pool-persist ipp.txt

#Routes the packages to the intern network, you should use iptables instead of this
#push "route 192.168.0.0 255.255.255.0"

#Tests the connection with a ping like paket. (wait=120sec)
keepalive 10 30

#Authenication
auth SHA1

#Our encryption algorithm
cipher aes-256-cbc
#openvpn --show-ciphers for testing

#comp
comp-lzo

#Sets new rights after the connection
user nobody
group nogroup

#We need this because of user nobody/group nobody.
persist-key
persist-tun

#Logging 0, (testing:5)
client-config-dir /etc/openvpn/ccd
verb 3
log-append /var/log/openvpn.log
route 192.168.0.0 255.255.255.0


#pings
#ping 10
#ping-restart 60
#push "ping 15"
#push "ping-restart 60"
#push "iptables -t nat -A POSTROUTING -s 192.168.254.0/24 -o eth0 -j MASQUERADE"
up /etc/openvpn/scripts/cc-script.sh
script-security 3 system

aber wenn bei dir ja alles mitm tap läuft..ich nehme an, dein eth0 hat ja ne öffentliche ip. dann ist das alles nur ne sache der iptables.
 
Zurück
Oben