openvpn: não consegue controlar as conexões cliente-cliente com iptables

1

Eu tentei este artigo: link mas tinha sem sorte.

Eu sou novo no iptables. Você pode por favor dar uma olhada na minha configuração?

Contêiner do Docker (estou usando este: link ) é executado no host modo de rede

Estou usando o Centos7 com firewalld desativado e iptables instalado e ativado.

ip_forward está ativado.

# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

redirect-gateway def1 está desativado, pois não preciso rotear o tráfego da Internet por meio do servidor vpn.

Aqui estão as regras iniciais do iptables.

[root]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
DOCKER-USER  all  --  anywhere             anywhere
DOCKER-ISOLATION  all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain DOCKER (2 references)
target     prot opt source               destination

Chain DOCKER-ISOLATION (1 references)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere
DROP       all  --  anywhere             anywhere
RETURN     all  --  anywhere             anywhere

Chain DOCKER-USER (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

Todo cliente tem um arquivo de configuração no diretório ccd com um IP estático. Aqui está como eu faço isso para um dos clientes ifconfig-push 10.8.0.102 10.8.0.1

Na minha openvpn.conf , tenho a diretiva client-to-client desativada.

Eu tenho tun0 iface e 10.8.0.0/24 network.

Primeiro, eu permito conexões já estabelecidas: iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Então, eu estabeleço regras para que dois clientes possam se comunicar:

iptables -A FORWARD -s 10.8.0.10 -d 10.8.0.102 -j ACCEPT
iptables -A FORWARD -s 10.8.0.102 -d 10.8.0.10 -j ACCEPT

Afinal, não funciona. Quando eu executo ping 10.8.0.102 do meu MAC (que tem ip 10.8.0.10) eu recebo:

➜  ~ ping 10.8.0.102
PING 10.8.0.102 (10.8.0.102): 56 data bytes
36 bytes from gwr-vl-201.**** (***.**.**.133): Communication prohibited by filter
Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
 4  5  00 5400 29e3   0 0000  3d  01 8749 192.168.1.103  10.8.0.102

192.168.1.103 - é o meu endereço de LAN

Aqui está minha tabela de rotas em um mac:

➜  ~ netstat -nr
Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.1.1        UGSc           65        0     en0
10.8.0.1           10.8.0.10          UH              0        0   utun1
46.101.242.41/32   192.168.1.1        UGSc            0        0     en0
127                127.0.0.1          UCS             0        0     lo0
127.0.0.1          127.0.0.1          UH             24     2286     lo0
169.254            link#4             UCS             0        0     en0
192.168.1          link#4             UCS             0        0     en0
192.168.1.1/32     link#4             UCS             2        0     en0
192.168.1.1        84:16:f9:c5:c4:da  UHLWIir        63       26     en0   1043
192.168.1.103/32   link#4             UCS             0        0     en0
224.0.0/4          link#4             UmCS            1        0     en0
224.0.0.251        1:0:5e:0:0:fb      UHmLWI          0        0     en0
255.255.255.255/32 link#4             UCS             0        0     en0

E minha tabela de rotas no servidor:

[]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         217.182.88.1    0.0.0.0         UG    100    0        0 eth0
10.8.0.0        10.8.0.2        255.255.255.0   UG    0      0        0 tun0
10.8.0.2        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.19.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-44c0269fbf91
217.**.**.1    0.0.0.0         255.255.255.255 UH    100    0        0 eth0
217.**.**.**1  0.0.0.0         255.255.255.255 UH    100    0        0 eth0

O que estou perdendo?

Obrigado antecipadamente!

    
por Alex 14.09.2017 / 12:31

1 resposta

1

Eu finalmente consegui que funcionasse!

Tudo o que tenho de fazer é adicionar push "route 10.8.0.0 255.255.255.0" à configuração do servidor.

Depois disso eu posso criar regras de iptables arbitrárias (como eu fiz no post acima) e então adicionar

iptables -A FORWARD -j DROP
para negar todo o resto.     
por 14.09.2017 / 13:37