Contourne OpenVPN Sur certains ports

J'ai un serveur en cours d'exécution Debian 7, Et je voudrais me connecter à VPN et permettre à tout le trafic de passer à travers VPN, À l'exception de certains ports (SSH, Sites Web placés, etc.).

J'ai déjà cherché un peu de temps sur Internet, mais rien ne fonctionne, comme prévu.

Je ne suis pas un spécialiste iptables / réseaux, alors peut-être me manque quelque chose ...

Voici mes scénarios:

Avant le script VPN

Voici un scénario courant à VPN, Il est utilisé pour bloquer tout le nouveau entrant / trafic sortant sans passer à travers VPN, À l'exception de certains ports (ici SSH).

Si je ne lance que ce scénario, il fait son travail. Je peux me connecter à mon serveur via SSH, Mais tous les autres ports sont bloqués et le serveur ne peut pas entrer sur Internet. (car VPN Non lancé).

#!/bin/bash

# Flush iptables
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

# Default policy
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

# Accept packets through VPN
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A OUTPUT -o tun+ -j ACCEPT

# Accept local connections
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Accept connection to/from VPN servers
iptables -A INPUT -s xxx.xxx.xxx.xxx -j ACCEPT
iptables -A OUTPUT -d xxx.xxx.xxx.xxx -j ACCEPT

# Disable Reverse Path Filtering on all network interfaces
for i in /proc/sys/net/ipv4/conf/*/rp_filter ; do
echo 0 > $i
done

# Open ports on iptable
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

Script de routage OpenVPN

Voici le script causé par l'option OpenVPN "route-up". Ceci est un script qui devrait forcer les ports à contourner VPN.

#!/bin/bash

WAN_GATEWAY="xxx.xxx.xxx.xxx"

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

# Delete table 100 and flush all existing rules
ip route flush table 100
ip route flush cache
iptables -t mangle -F PREROUTING

# Table 100 will route all traffic with mark 1 to WAN (no VPN)
ip route add default table 100 via $WAN_GATEWAY dev eth0
ip rule add fwmark 1 table 100
ip route flush cache

# Mark packets on port 22
iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 1

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

fichier de configuration OpenVPN

Voici le fichier de configuration du client OpenVPN.

client
dev tun
proto udp
resolv-retry infinite
nobind
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
persist-key
persist-tun
comp-lzo
verb 3
redirect-gateway def1
user nobody
group nogroup
script-security 2
auth-user-pass /path/to/config/login.conf
route-up /path/to/scripts/vpn_up.sh
remote xxx.xxx.xxx.xxx 443
ca /path/to/config/certs/ch.crt

Mon problème est que quand VPN Inclus, je ne peux plus accéder à mon serveur.

Qu'est-ce que je fais mal?

Merci beaucoup pour votre aide !
Invité:

Agathe

Confirmation de:

Après une petite recherche, j'ai trouvé cette branche:
https://forum.linode.com/viewt ... 50114
J'ai changé mon script OpenVPN Pour router comme suit, et il a finalement gagné! J'ai supprimé toutes les autres règles sales (iptable PREROUTING, MASQUERADE etc.).

Voici mon dernier script "Route":

ip route flush table 100
ip route flush cache

ip rule add from x.x.x.x table 100
ip route add table 100 to y.y.y.y/y dev ethX
ip route add table 100 default via z.z.z.z

Où x.x.x.x - C'est l'adresse IP publique de mon serveur, y.y.y.y / y - Ceci est le sous-réseau de l'adresse IP publique de mon serveur, ethX - Ceci est une interface publique Ethernet mon serveur, et z.z.z.z - Passerelle par défaut.

J'espère que cela aidera quelqu'un d'autre.

Giselle

Confirmation de:

Après avoir traversé le même test, j'ai trouvé au moins un problème avec le script de routage.

iptables -t mangle -A PREROUTING ...

Ça devrait être:

iptables -t mangle -A OUTPUT ...

Pourquoi, lire ici:
http://www.iptables.info/en/st ... .html
Je n'ai pas eu à inclure le transfert IP.

Pour répondre aux questions, connectez-vous ou registre