Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[Openvpn] Communication vers subnet a l'autre bout du tunnel
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
Shibo
n00b
n00b


Joined: 18 Sep 2005
Posts: 15

PostPosted: Tue Oct 14, 2008 12:36 am    Post subject: [Openvpn] Communication vers subnet a l'autre bout du tunnel Reply with quote

Bonjour,
Aprés avoir harpenté le forum et lu pas mal de tuto sur les vpn je rencontre encore des soucis qui nécessiteraient quelqu'un de plus expert que moi. J'ai testé pas mal de trucs mais rien n'y fait. Je me commence même a me demander si j'utilise le bon type de vpn (routed) et si il ne faudrait pas changer (pour un bridged). Je vais donc vous présenter la situation en espérant que l'un d'entre vous aura plus d'idée que moi car là: je séche.

Tout d'abort voici un topo de la situation:
Code:
(clients X)----->[ (A) 10.59.13.251/24 | 10.5.5.6 ]<===( internet)===> [ (B) 213.186.x.x | Server | 10.5.5.1 ]<-----(clients Y)



  • (A) Server Gentoo hebergant un client OpenVPN. La route par defaut de ce server passe par le VPN, il sert de gateway pour certains pc clients et de proxy msn pour d'autres.
  • (B) Server Gentoo externe (fournisseur de servers), server hebergant OpenVPN en mode server.
  • (X) Clients sous Windows ou Gentoo du subnet 10.59.13.0/24.
  • (Y) Clients sous Windows se connectant depuis leurs domicile.



Le but est multiple:

  • Etablir un VPN entre le server (A-client) et le server (B-server). IP: Server (B) 10.5.5.1 & 2 - Client (A) 10.5.5.5 & 6. (Fonctionne)
  • Permettre a un client (X) de se connecter au VPN via le server (A) ou directement. (Fonctionne)
  • Permettre a un client (X) d'utiliser le tunnel pour accéder au net. Donc définir comme passerelle par defaut l'ip 10.59.13.251. (Fonctionne)
  • Permettre a un client (Y) de se connecter au VPN, d'obtenir une ip en 10.5.5.0/24 (Fonctionne) et de pinger les clients (X) sur leur ip du VPN (10.5.5.0/24) ou local (10.59.13.0/24) (Sa coince !!)


J'ai donc cherché et pensé a plusieurs solutions. Tout d'abort je me suis interessé au table de routage mais les pings ne passaient toujours pas, a cause du firewall peut-être? J'ai donc été voir dans mon firewall pour y ajouter des régles pour le nat (note: ip_forward a 1 sur les 2 servers). J'ai essayé de faire du DNAT/SNAT mais sans grand succés. Pour un cas comme le miens, voulant entre autre jouer via le vpn -chose dejà possible avec certains jeux avec la configuration actuelle-, la doc d'openvpn.net préconise l'utilisation d'un bridge pour étendre le domain de broadcast. Le soucis c'est que d'aprés ce que j'ai compris, si je fait un bridge entre (B) et (A), les clients (X) doivent avoir un ip dans le range du server ce qui n'est pas possible ici ... Bref, je suis un peu perdu et je pense que j'ai du loupé quelque chose :(

Pour résumé: depuis 213.186.xx.xx ping 10.59.13.251 ne marche pas :(

Je pense que les fichiers de configuration sont les bienvenus pour résoudre ce type de problème donc les voici ...


1) Le server (B)

1-1) Fichier de configuration OpenVPN.conf:
Code:
mode server
port 23
proto tcp
dev tun

# Certificats & Keys
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem

# Server Config
server 10.5.5.0 255.255.255.0
ifconfig-pool-persist ipp.txt

push "redirect-gateway"       # Fera tout passer par le tunnel
client-to-client              # Permet les connection inter-clients
keepalive 100 300
tls-auth ta.key 0
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status /var/log/openvpn-status.log
log /var/log/openvpn.log
log-append /var/log/openvpn.log
verb 3
route 10.59.0.0 255.255.0.0   # Rajoute la route vers le network de l'autre bout du tunnel


1-2) Table de Routage:
Code:
Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
10.5.5.2        *               255.255.255.255 UH    0      0        0 tun0
213.186.45.0    *               255.255.255.0   U     0      0        0 eth0
10.5.5.0        10.5.5.2        255.255.255.0   UG    0      0        0 tun0
10.59.13.0      10.5.5.2        255.255.255.0   UG    0      0        0 tun0   <-----
loopback        *               255.0.0.0       U     0      0        0 lo
default         gateway         0.0.0.0         UG    0      0        0 eth0


1-3) Apercu de ifconfig.
Code:
tun0      Lien encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet adr:10.5.5.1  P-t-P:10.5.5.2  Masque:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:1824791 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1026987 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:100
          RX bytes:2460211688 (2.2 GiB)  TX bytes:48672567 (46.4 MiB)


1-4) Apercu du Firewall:
Code:
#!/bin/bash
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

iptables -t nat -A POSTROUTING -s 10.5.5.0/24 -o eth0 -j MASQUERADE




2) Le server (A)

2-1) Fichier de configuration OpenVPN.conf:
Code:
client
dev tun
proto tcp
remote 213.186.xxx.xxx 23
resolv-retry infinite
user nobody
group nobody
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
tls-auth ta.key 1
comp-lzo
verb 3


2-2) Table de Routage:
Code:
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.5.5.5        *               255.255.255.255 UH    0      0        0 tun0
sunray1         peacemaker      255.255.255.255 UGH   0      0        0 eth0
10.5.5.0        10.5.5.5        255.255.255.0   UG    0      0        0 tun0
10.59.13.0      *               255.255.255.0   U     0      0        0 eth0
link-local      *               255.255.0.0     U     0      0        0 eth0
loopback        *               255.0.0.0       U     0      0        0 lo
default         10.5.5.5        0.0.0.0         UG    0      0        0 tun0


2-3) Apercu de ifconfig.
Code:
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.5.5.6  P-t-P:10.5.5.5  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:242 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:784 (784.0 b)  TX bytes:20328 (19.8 Kb)


2-4) Apercu du Firewall:
Code:
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state INVALID -j REJECT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p icmp -j ACCEPT

# Ouverture des ports
iptables -A INPUT -p tcp -s 10.59.13.xxx --dport 22 --sport 1024: -m mac --mac-source FF:FF:FF:FF:FF:FF -j ACCEPT
(... http, openfire, 50523)

# Partage de la connection
iptables -A FORWARD -p tcp -s 10.59.13.xxx -m mac --mac-source FF:FF:FF:FF:FF:FF -j ACCEPT
(... divers clients ...)

# Forward
iptables -A FORWARD -i tun0 -j ACCEPT




J'éspére avoir fournis toutes les informations nécessaire et que quelqu'un pourra me faire profiter de son savoir! Sur ce je vous laisse cogiter :lol:
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Tue Oct 14, 2008 8:47 am    Post subject: Reply with quote

Savais tu qu'en français on dit serveur ? ;)

Ceci étant maintenant dit, dans ce genre de situation, tcpdump est ton ami, je n'ai pas regardé précisément toutes tes confs, mais ça ne sera probablement pas utile:)

Donc tu lances ton ping, et tu te places à différents endroits pour voir si tu les voies arriver (ou repartir). Il s'agit peut-être d'un simple problème de routage pour le trajet retour? 'fin c'est une idée comme ça, car je n'en sais rien, mais fais ça, cela va grandement t'aider!


tcpdump powa! :)
_________________
The End of the Internet!
Back to top
View user's profile Send private message
Shibo
n00b
n00b


Joined: 18 Sep 2005
Posts: 15

PostPosted: Tue Oct 14, 2008 4:58 pm    Post subject: Reply with quote

Je ne connaisait pas bien tcpdump, j'ai chipotté avec pour essayer de diagnostiquer le problème et sa avance, enfin facon de parler.

J'ai donc lancé un tcpdump icmp -vi tun0 sur le serveUr (avec un U :p) (B) et le client (A).
Sur le serveur je vois bien les ping partir et apparament il utilise la bonne route pour envoyer le ping:
Code:
tcpdump -v icmp -i tun0
tcpdump: WARNING: arptype 65534 not supported by libpcap - falling back to cooked socket
tcpdump: listening on tun0, link-type LINUX_SLL (Linux cooked), capture size 96 bytes
16:23:03.085395 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 84) 10.5.5.1 > 10.59.13.254: ICMP echo request, id 19775, seq 62, length 64


Par contre le client était nettement moins éloquent, il ne recoit rien. J'ai donc désactiver les firewalls des deux coté (ACCEPT pour INPUT/OUTPUT/FORWARD + le masquerade sur le serveur (B)) mais toujours rien. Les pings partent mais disparaissent en cours de chemin.

J'ai alors supprimé la route 10.59.13.0/24 10.5.5.2 pour la remplacer par 10.59.13.0/24 dev tun0 en esperant renvoyer tout le traffic de ce subnet directement sur le tunnel mais sans succés. Mais en y reflechisant bien, tout les packets en 10.59.13.0/24 devrait etre envoyé non pas sur 10.5.5.2, le tunnel, mais sur 10.5.5.6, ip du serveur (A) qui lui est dans le subnet 10.59.13.0/24. Sans grande conviction j'ai donc fait:
Code:
route del -net 10.59.13.0 netmask 255.255.255.0 gw 10.5.5.2
route add -net 10.5.5.6 netmask 255.255.255.255 gw 10.5.5.2 <-- douteux non ?
route add -net 10.59.13.0 netmask 255.255.255.0 gw 10.5.5.6 <-- marche pas evidament


Vu que sa ne marchais pas j'ai retourné le probléme dans un autre sens en me disant, encore, qu'il faudrait peut-être utiliser du DNAT pour rediriger le traffic du subnet 10.59.13.0/24 sur l'ip 10.5.5.6. J'ai donc ajouté une ligne au firewall mais bien evidament, sa ne marche pas :)
Code:
iptables -t nat -A PREROUTING -p tcp -s 10.59.13.0/24 -j DNAT --to-destination 10.5.5.6



Bref, je suis toujours bloqué et j'ai encore moins d'idées qu'avant :(
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Tue Oct 14, 2008 6:19 pm    Post subject: Reply with quote

Resalut! :)

Bon, alors, pour l'instant tu vas oublier tout ce qui est DNAT SNAT et autre trucs tordus... Tu dois résoudre ici un simple problème de routage, ni plus ni moins (en supposant que pour l'instant tout soit ouvert ou niveau de ton firewall, et que le traffic entre interface soit autorisé là où il faut le <i>ip_forward</i> machin...).


l'astuce est justement de trouver là où ça ne passe plus, pour ensuite mettre les mains à la pate :)
_________________
The End of the Internet!
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum