Назад | Перейти на главную страницу

openvpn: не удается контролировать соединения клиент-клиент с помощью iptables

Я пробовал эту статью: http://backreference.org/2010/05/02/controlling-client-to-client-connections-in-openvpn/ но не повезло.

Я новичок в iptables. Не могли бы вы взглянуть на мою конфигурацию?

Контейнер Docker (я использую этот: https://github.com/kylemanna/docker-openvpn) запускается в хозяин сетевой режим

Я использую Centos7 с firewalld инвалиды и iptables установлен и включен.

ip_forward включен.

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

redirect-gateway def1 отключен, так как мне не нужно маршрутизировать интернет-трафик через сервер vpn.

Вот начальные правила 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

У каждого клиента есть файл конфигурации в ccd каталог со статическим IP. Вот как я это делаю для одного из клиентов ifconfig-push 10.8.0.102 10.8.0.1

В моем openvpn.conf у меня есть client-to-client директива отключена.

у меня есть tun0 iface и 10.8.0.0/24 сеть.

Во-первых, разрешаю уже установленные соединения: iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Затем я устанавливаю правила пересылки, чтобы 2 клиента могли связаться друг с другом:

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

В конце концов, это не работает. Когда я выполняю ping 10.8.0.102 с моего MAC (у которого есть ip 10.8.0.10) я получаю:

➜  ~ 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 - это мой адрес в локальной сети

Вот моя таблица маршрутов на 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

И моя таблица маршрутов на сервере:

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

Что мне не хватает?

Заранее спасибо!

Наконец-то я заработал!

Все, что мне нужно было сделать, это добавить push "route 10.8.0.0 255.255.255.0" в конфиг сервера.

После этого я могу создать произвольные правила пересылки iptables (как я сделал в сообщении выше), а затем добавить

iptables -A FORWARD -j DROP
to deny everything else.