¿Cómo especifico un proxy calcetines5 detrás del túnel openVPN en un archivo de configuración del cliente?

¿Cómo especifico un proxy calcetines5 detrás del túnel openVPN en un archivo de configuración del cliente?

Necesito conectarme a la VPN de mi empresa para poder acceder a sitios web y aplicaciones web internos, mientras que no puedo acceder a la VPN interna normal cuando me conecto a la VPN a menos que sea a través de un proxy calcetines5 específico. En una Mac o PC, puedo conectarme a openVPN y luego usar SwitchyOmega para conectarme al proxy de Socks5 para sitios web que requieren acceso regular a Internet, pero en Android o iOS, no puedo usar OpenVPN y Socks5 juntos.

Deseo saber si puedo (y cómo) modificar el archivo de configuración del cliente para especificar un proxy calcetines5 detrás del túnel openVPN para enrutar mi tráfico. Tenga en cuenta que no tengo privilegios para cambiar la configuración del lado del servidor.

##############################################
# 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

Arriba está la versión simulada del archivo .opvn en mi lado del cliente.

Respuesta1

La configuración que presenta no contiene nada sobre enrutamiento. Esto significa que las rutas se enviarán desde el servidor OpenVPN. Debe echar un vistazo al archivo de registro de una conexión exitosa y verificar qué rutas se envían. Si solo obtienes un redirect-gateway def1, tendrás que descubrir las rutas tú mismo. Básicamente, echas un vistazo a las direcciones IP a las que te conectas (como1.2.3.4) y cree su propia tabla de objetivos de enrutamiento:

  1. 1.2.3.4/24
  2. 4.3.2.1/24

Luego modifica la configuración del cliente con la información que obtuvo:

route 1.2.3.4 255.255.255.0
route 4.3.2.1 255.255.255.0
route …
pull-filter ignore "route"

Esto hará que su cliente ignore las rutas del servidor mientras configura las reglas explícitas que necesita para alcanzar los objetivos que necesita.

Podría surgir un problema: si alguna de las redes de su empresa es la misma subred que la red doméstica, esto no funcionará fácilmente. La mejor opción en este caso es cambiar la subred local.

Si se conecta sólo a objetivos muy específicos (sin conflictos allí), puede evitar el problema no utilizando una máscara de red. Luego, por defecto será255.255.255.255.


Si no quiere molestarse con todo esto y la empresa utiliza solo rangos de IP internos, también puede hacer esto:

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"

Esto funcionará porque su red doméstica (con suerte) tiene un prefijo más largo, lo que hace que su ruta coincida debido a una mayor especificidad.


Tenga en cuenta que es posible que desee configurar un servidor DNS interno en algún lugar, si la empresa lo tiene.

información relacionada