Ich muss mich mit dem VPN meines Unternehmens verbinden, um auf interne Websites und Webanwendungen zuzugreifen. Auf die regulären internen Verbindungen kann ich bei Verbindung mit dem VPN jedoch nur über einen bestimmten Socks5-Proxy zugreifen. Auf einem Mac oder PC kann ich mich mit OpenVPN verbinden und dann SwitchyOmega verwenden, um mich mit dem Socks5-Proxy für Websites zu verbinden, die regulären Internetzugang erfordern. Auf einem Android- oder iOS-Gerät kann ich OpenVPN und Socks5 jedoch nicht zusammen verwenden.
Ich möchte wissen, ob ich die Client-Konfigurationsdatei ändern kann (und wie), um einen Socks5-Proxy hinter dem OpenVPN-Tunnel anzugeben, durch den mein Datenverkehr geleitet werden soll. Beachten Sie, dass ich keine Berechtigung habe, die serverseitige Konfiguration zu ändern.
##############################################
# Sample client-side OpenVPN 2.0 config file #
# for connecting to multi-client server. #
# #
# This configuration can be used by multiple #
# clients, however each client should have #
# its own cert and key files. #
# #
# On Windows, you might want to rename this #
# file so it has a .ovpn extension #
##############################################
# Specify that we are a client and that we
# will be pulling certain config file directives
# from the server.
client
# Use the same setting as you are using on
# the server.
# On most systems, the VPN will not function
# unless you partially or fully disable
# the firewall for the TUN/TAP interface.
;dev tap
dev tun
# Windows needs the TAP-Win32 adapter name
# from the Network Connections panel
# if you have more than one. On XP SP2,
# you may need to disable the firewall
# for the TAP adapter.
;dev-node MyTap
# Are we connecting to a TCP or
# UDP server? Use the same setting as
# on the server.
proto tcp
;roto udp
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote fake.com 7777
;remote my-server-2 1194
# Choose a random host from the remote
# list for load-balancing. Otherwise
# try hosts in the order specified.
;remote-random
# Keep trying indefinitely to resolve the
# host name of the OpenVPN server. Very useful
# on machines which are not permanently connected
# to the internet such as laptops.
resolv-retry infinite
# Most clients don't need to bind to
# a specific local port number.
nobind
# Downgrade privileges after initialization (non-Windows only)
;user nobody
;group nogroup
# Try to preserve some state across restarts.
persist-key
persist-tun
# If you are connecting through an
# HTTP proxy to reach the actual OpenVPN
# server, put the proxy server/IP and
# port number here. See the man page
# if your proxy server requires
# authentication.
;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]
# Wireless networks often produce a lot
# of duplicate packets. Set this flag
# to silence duplicate packet warnings.
;mute-replay-warnings
# SSL/TLS parms.
# See the server config file for more
# description. It's best to use
# a separate .crt/.key file pair
# for each client. A single ca
# file can be used for all clients.
;ca ca.crt
;cert client.crt
;key client.key
# Verify server certificate by checking that the
# certicate has the correct key usage set.
# This is an important precaution to protect against
# a potential attack discussed here:
# http://openvpn.net/howto.html#mitm
#
# To use this feature, you will need to generate
# your server certificates with the keyUsage set to
# digitalSignature, keyEncipherment
# and the extendedKeyUsage to
# serverAuth
# EasyRSA can do this for you.
remote-cert-tls server
# If a tls-auth key is used on the server
# then every client must also have the key.
;tls-auth ta.key 1
key-direction 1
reneg-sec 21600
# Select a cryptographic cipher.
# If the cipher option is used on the server
# then you must also specify it here.
cipher AES-256-CBC
auth SHA256
# Enable compression on the VPN link.
# Don't enable this unless it is also
# enabled in the server config file.
comp-lzo
# Set log file verbosity.
verb 3
# Silence repeating messages
;mute 20
# script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf
<ca>
-----BEGIN CERTIFICATE-----
xxx
-----END CERTIFICATE-----
</ca>
<tls-auth>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
xxx
-----END OpenVPN Static key V1-----
</tls-auth>
auth-user-pass
auth-nocache
Oben ist die Mock-Version der .opvn-Datei auf meiner Clientseite.
Antwort1
Die von Ihnen präsentierte Konfiguration enthält nichts über das Routing. Dies bedeutet, dass Routen vom OpenVPN-Server gepusht werden. Sie müssen sich die Protokolldatei einer erfolgreichen Verbindung ansehen und prüfen, welche Routen gepusht werden. Wenn Sie nur eine erhalten redirect-gateway def1
, müssen Sie die Routen selbst herausfinden. Im Grunde genommen sehen Sie sich die IP-Adressen an, mit denen Sie sich verbinden (wie1.2.3.4) und erstellen Sie Ihre eigene Tabelle mit Routing-Zielen:
- 1.2.3.4/24
- 4.3.2.1/24
- …
Anschließend ändern Sie die Client-Konfiguration mit den erhaltenen Informationen:
route 1.2.3.4 255.255.255.0
route 4.3.2.1 255.255.255.0
route …
pull-filter ignore "route"
Dadurch ignoriert Ihr Client Routen vom Server, während er die expliziten Regeln einrichtet, die Sie zum Erreichen der gewünschten Ziele benötigen.
Ein Problem könnte auftreten: Wenn eines Ihrer Firmennetzwerke dasselbe Subnetz wie Ihr Heimnetzwerk hat, funktioniert dies nicht ohne weiteres. Die beste Lösung in diesem Fall ist, das lokale Subnetz zu ändern.
Wenn Sie sich nur mit ganz bestimmten Zielen verbinden (wo es keine Konflikte gibt), können Sie das Problem umgehen, indem Sie keine Netzmaske verwenden. Dann wird standardmäßig255.255.255.255.
Wenn Sie sich mit all dem nicht beschäftigen möchten und das Unternehmen nur interne IP-Bereiche verwendet, können Sie auch Folgendes tun:
route 10.0.0.0 255.0.0.0
route 172.16.0.0 255.224.0.0
route 192.168.0.0 255.255.0.0
pull-filter ignore "route"
Dies funktioniert, weil Ihr Heimnetzwerk (hoffentlich) über ein längeres Präfix verfügt, sodass die Route aufgrund der höheren Spezifität übereinstimmt.
Bedenken Sie, dass Sie möglicherweise irgendwo einen internen DNS-Server einrichten möchten, falls das Unternehmen über einen solchen verfügt.