1

У меня OpenVPN работает на pfSense 2.3.2. Прямо сейчас у меня это в основном работает, за исключением одной маленькой вещи: я могу подключиться ко всему в моей локальной сети, кроме самого сервера pfSense.

Некоторые детали:

  • Я настроен на использование 172.16.104.0/21 в качестве диапазона IP-адресов.
  • Брандмауэр находится на 172.16.104.1.
  • Диапазон DHCP для клиентов OpenVPN - 172.16.105.10-50.
  • OpenVPN настраивается с использованием tap, UDP.
  • ovpns1 назначен OPT1, а OPT1 и LAN соединены мостом (bridge0).

Причина, по которой я использую соединения и мосты, заключается в том, что у меня много устройств Apple, и я хочу, чтобы Bonjour и другие многоадресные / широковещательные приложения работали должным образом через VPN.

Все это работает правильно для любого адреса в моей локальной сети, кроме 172.16.104.1 (брандмауэр). Ни один из клиентов не может пропинговать или подключаться к 172.16.104.1, а 172.16.104.1 не может пропинговать или подключаться к любому из клиентов.

Использование tcpdump раскрывает некоторые другие странности:

Если я отправляю эхо-запрос на сервер от клиента с запущенным tcpdump в другом сеансе, кажется, что я получаю ответы, но они не сообщаются с помощью ping?

ping -c2 172.16.104.1
PING 172.16.104.1 (172.16.104.1) 56(84) bytes of data.

--- 172.16.104.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1009ms

Но в сеансе tcpdump на той же машине:

IP 172.16.105.3 > 172.16.104.1: ICMP echo request, id 17069, seq 1, length 64
IP 172.16.104.1 > 172.16.105.3: ICMP echo reply, id 17069, seq 1, length 64
IP 172.16.105.3 > 172.16.104.1: ICMP echo request, id 17069, seq 2, length 64
IP 172.16.104.1 > 172.16.105.3: ICMP echo reply, id 17069, seq 2, length 64

И с сервера pfSense:

tcpdump -n -i ovpns1 -t icmp
tcpdump: WARNING: ovpns1: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ovpns1, link-type EN10MB (Ethernet), capture size 65535 bytes
IP 172.16.105.3 > 172.16.104.1: ICMP echo request, id 17084, seq 1, length 64
IP 172.16.104.1 > 172.16.105.3: ICMP echo reply, id 17084, seq 1, length 64
IP 172.16.105.3 > 172.16.104.1: ICMP echo request, id 17084, seq 2, length 64
IP 172.16.104.1 > 172.16.105.3: ICMP echo reply, id 17084, seq 2, length 64

Это машина с Ubuntu Linux без брандмауэра.

Таким образом, машина pfSense думает, что отправляет ответ, машина Linux думает, что получает ответ, но ping по-прежнему сообщает о 100% потере пакетов?

И если я пингую другой, не серверный адрес, я получаю ответ:

ping -c2 172.16.104.2
PING 172.16.104.2 (172.16.104.2) 56(84) bytes of data.
64 bytes from 172.16.104.2: icmp_seq=1 ttl=64 time=34.6 ms
64 bytes from 172.16.104.2: icmp_seq=2 ttl=64 time=34.1 ms

--- 172.16.104.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 34.165/34.401/34.638/0.300 ms

И в оболочке tcpdump:

IP 172.16.105.3 > 172.16.104.2: ICMP echo request, id 17068, seq 1, length 64
IP 172.16.104.2 > 172.16.105.3: ICMP echo reply, id 17068, seq 1, length 64
IP 172.16.105.3 > 172.16.104.2: ICMP echo request, id 17068, seq 2, length 64
IP 172.16.104.2 > 172.16.105.3: ICMP echo reply, id 17068, seq 2, length 64

Вот мой конфиг сервера OpenVPN, выгруженный из pfSense:

dev ovpns1
verb 1
dev-type tap
dev-node /dev/tap1
writepid /var/run/openvpn_server1.pid
#user nobody
#group nobody
script-security 3
daemon
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
proto udp
cipher AES-256-CBC
auth SHA1
up /usr/local/sbin/ovpn-linkup
down /usr/local/sbin/ovpn-linkdown
local <omitted>
tls-server
server-bridge 172.16.104.1 255.255.248.0 172.16.105.10 172.16.105.50
client-config-dir /var/etc/openvpn-csc/server1
tls-verify "/usr/local/sbin/ovpn_auth_verify tls '<omitted>' 1"
lport 1194
management /var/etc/openvpn/server1.sock unix
push "route 172.16.104.0 255.255.248.0"
client-to-client
duplicate-cn
ca /var/etc/openvpn/server1.ca
cert /var/etc/openvpn/server1.cert
key /var/etc/openvpn/server1.key
dh /etc/dh-parameters.1024
tls-auth /var/etc/openvpn/server1.tls-auth 0
persist-remote-ip
float
mode server

И от клиента:

dev tap
persist-tun
persist-key
cipher AES-256-CBC
auth SHA1
tls-client
client
resolv-retry infinite
remote <omitted> 1194 udp
lport 0
verify-x509-name "<omitted>" name
pkcs12 udp-1194.p12
tls-auth udp-1194-tls.key 1
ns-cert-type server

Что здесь происходит?

0