Como acessar máquinas de lan remotas através de um vpn ipsec / xl2ptd (talvez relacionado ao iptables)

1

Estou tentando fazer a configuração de uma VPN IPSEC / XL2TPD para nosso escritório, e estou com alguns problemas para acessar as máquinas locais remotas depois de se conectar à VPN.

Posso conectar-me e navegar em sites da Internet por meio da VPN, mas, como dito, não consigo conectar nem mesmo fazer ping em sites locais.

Minha configuração de rede é algo assim:

INTERNET > eth0 > ROUTER / VPN > eth2 > LAN

Estes são alguns traceroutes por trás da VPN:

traceroute to google.com (173.194.78.94), 64 hops max, 52 byte packets
 1  192.168.1.80 (192.168.1.80)  74.738 ms  71.476 ms  70.123 ms
 2  10.35.192.1 (10.35.192.1)  77.832 ms  77.578 ms  77.865 ms
 3  10.47.243.137 (10.47.243.137)  78.837 ms  85.409 ms  76.032 ms
 4  10.47.242.129 (10.47.242.129)  78.069 ms  80.054 ms  77.778 ms
 5  10.254.4.2 (10.254.4.2)  86.174 ms
    10.254.4.6 (10.254.4.6)  85.687 ms
    10.254.4.2 (10.254.4.2)  85.664 ms

traceroute to 192.168.1.3 (192.168.1.3), 64 hops max, 52 byte packets
 1  * * *
 2  *traceroute: sendto: No route to host
traceroute: wrote 192.168.1.3 52 chars, ret=-1
 *traceroute: sendto: Host is down
traceroute: wrote 192.168.1.3 52 chars, ret=-1
 *
traceroute: sendto: Host is down
 3 traceroute: wrote 192.168.1.3 52 chars, ret=-1
 *traceroute: sendto: Host is down
traceroute: wrote 192.168.1.3 52 chars, ret=-1

Estas são as regras do meu iptables:

iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# allow lan to router traffic
iptables -A INPUT -s 192.168.1.0/24 -i eth2 -j ACCEPT

# ssh
iptables -A INPUT -p tcp --dport ssh -j ACCEPT

# vpn
iptables -A INPUT -p 50 -j ACCEPT
iptables -A INPUT -p ah -j ACCEPT
iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
iptables -A INPUT -p udp --dport 1701 -j ACCEPT

# dns
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p udp --dport 53 -j ACCEPT

iptables -t nat -A POSTROUTING -j MASQUERADE

# logging
iptables -I INPUT 5 -m limit --limit 1/min -j LOG --log-prefix "iptables denied: " --log-level 7

# block all other traffic
iptables -A INPUT -j DROP

E aqui estão algumas linhas de log do firewall:

Dec  6 11:11:57 router kernel: [8725820.003323] iptables denied: IN=ppp0 OUT= MAC= SRC=192.168.1.81 DST=192.168.1.3 LEN=60 TOS=0x00 PREC=0x00 TTL=255 ID=62174 PROTO=UDP SPT=61910 DPT=53 LEN=40 
Dec  6 11:12:29 router kernel: [8725852.035826] iptables denied: IN=ppp0 OUT= MAC= SRC=192.168.1.81 DST=224.0.0.1 LEN=44 TOS=0x00 PREC=0x00 TTL=1 ID=15344 PROTO=UDP SPT=56329 DPT=8612 LEN=24 
Dec  6 11:12:36 router kernel: [8725859.121606] iptables denied: IN=ppp0 OUT= MAC= SRC=192.168.1.81 DST=224.0.0.1 LEN=44 TOS=0x00 PREC=0x00 TTL=1 ID=11767 PROTO=UDP SPT=63962 DPT=8612 LEN=24 
Dec  6 11:12:44 router kernel: [8725866.203656] iptables denied: IN=ppp0 OUT= MAC= SRC=192.168.1.81 DST=224.0.0.1 LEN=44 TOS=0x00 PREC=0x00 TTL=1 ID=11679 PROTO=UDP SPT=57101 DPT=8612 LEN=24 
Dec  6 11:12:51 router kernel: [8725873.285979] iptables denied: IN=ppp0 OUT= MAC= SRC=192.168.1.81 DST=224.0.0.1 LEN=44 TOS=0x00 PREC=0x00 TTL=1 ID=39165 PROTO=UDP SPT=62625 DPT=8612 LEN=24 

Tenho certeza de que o problema deve estar relacionado com o iptables, mas depois de experimentar vários confs diferentes, não consegui encontrar o correto.

Qualquer ajuda será muito apreciada;). Atenciosamente, Simon.

EDITAR:

Esta é minha tabela de rotas:

default         62.43.193.33.st 0.0.0.0         UG    100    0        0 eth0
62.43.193.32    *               255.255.255.224 U     0      0        0 eth0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth2
192.168.1.81    *               255.255.255.255 UH    0      0        0 ppp0
    
por Simon 06.12.2012 / 12:51

2 respostas

0

Você provavelmente terá o mesmo problema que esta postagem

Sua situação é a seguinte:

O cliente VPN pode acessar o servidor VPN e encapsular através da VPN para a Internet, mas não pode acessar a LAN do servidor nem qualquer outro cliente VPN ip.

O tunelamento para a Internet funciona porque você tem a regra NAT do iptables. O resto você precisa aplicar o seguinte NO SERVIDOR VPN :

Ativar o encaminhamento de tcp / ip

A pilha TCP / IP do Linux, por padrão, não encaminha pacotes (entre interfaces ou reencaminhando-os entre a rede IP). Tem que estar habilitado

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

Sem isso, o servidor VPN aceitará o pacote do cliente VPN localmente e roteará o pacote do cliente de acordo com a regra NAT, mas não roteará o tráfego para a rede local.

Iptables

Iptables bloqueiam todo o tráfego por padrão. Você precisa de regras para permitir que o tráfego passe (para frente).

$IPTABLES -A FORWARD -s 192.168.1.0/24 -d 192.168.1.0/24 -j ACCEPT

PS: Cada conexão vpn é uma interface (virtual) individual (nic), para permitir que o pacote flua / passe entre elas, você precisa FORWARD no iptables.

/etc/l2tpd.conf

Quando o cliente vpn precisa falar com cada um junto, o servidor vpn está agindo como um ponto de roteamento e precisa estar no mesmo netowrk.

local ip 192.168.1.1
ip range 192.168.1.2 - 192.168.1.254

Modifique o acima de acordo com sua configuração de rede. Se o seu servidor vpn tiver um ip 192.168.1.x, use-o para o "ip local".

Script Iptables modificado

Tenha muito cuidado se você não tiver acesso físico ao servidor vpn.

(Este script vai precisar de anti-spoofing na interface wan, mas vamos nos concentrar em obter tráfego de vpn para lan primeiro.)

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

# Enable IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

# NAT
# -- iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
#
# Updated NAT rule
#   External interface  = eth0
#   External IP     = 123.123.123.123
#   Internal LAN        = 192.168.1.0/24
#   To support dynamic interface : "-j SNAT" replace "-j MASQUERADE" 
#   NO NAT if destination is LAN 
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j SNAT --to-source 123.123.123.123

# New(1) - lo
# -- iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i lo   -m state --state NEW  -j ACCEPT
iptables -A OUTPUT -o lo   -m state --state NEW  -j ACCEPT

# -- iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# New(2) Allow inter-192.168.1.x routing
iptables -A INPUT  -s 192.168.1.0/24   -m state --state NEW  -j ACCEPT
iptables -A OUTPUT  -s 192.168.1.0/24   -m state --state NEW  -j ACCEPT
iptables -A FORWARD  -s 192.168.1.0/24   -m state --state NEW  -j ACCEPT

# -- allow lan to router traffic - Shadowed by New(2)
# -- This rule maybe your source of trouble too, it only accept 192.168.1.x from eth2
# -- iptables -A INPUT -s 192.168.1.0/24 -i eth2 -j ACCEPT

# ssh
iptables -A INPUT -p tcp --dport ssh -j ACCEPT

# vpn
iptables -A INPUT -p 50 -j ACCEPT
iptables -A INPUT -p ah -j ACCEPT
iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
iptables -A INPUT -p udp --dport 1701 -j ACCEPT

# dns - Shadowed by New(2)
# -- iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 53 -j ACCEPT
# -- iptables -A INPUT -s 192.168.1.0/24 -p udp --dport 53 -j ACCEPT

# logging
iptables -I INPUT 5 -m limit --limit 1/min -j LOG --log-prefix "iptables denied: " --log-level 7

# block all other traffic
iptables -A INPUT -j DROP
    
por 11.12.2012 / 05:03
0

Umm, uma resposta parcial parece ser: iptables -A SAÍDA -p tcp --dport dns -j ACCEPT

... declarações semelhantes para espelhar '-A INPUT' em sua descrição

Ok, eu deveria ter percebido isso primeiro: você está usando o NAT ...

iptables -A FORWARD -i eth1 -o ppp0 -j ACCEPT
iptables -A FORWARD -o eth1 -i ppp0 -j ACCEPT
sysctl -w net.ipv4.ip_forward = 1
iptables -A FORWARD -i ppp0 -o eth1 -p tcp --dportar 80 -d x.x.x.x -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth1 -p tcp --dportar 53 -d y.y.y.y -j ACCEPT
iptables -t filter -P FORWARD DROP

    
por 09.12.2012 / 03:48