У меня есть небольшая сеть, подобная этой:
У меня есть Pfsense для подключения моих серверов к WAN, они используют NAT из LAN -> WAN.
У меня есть сервер OpenVPN, использующий TAP, чтобы удаленные работники могли быть подключены к той же локальной сети, что и серверы.
В настоящее время, когда я подключаюсь, все маршруты кажутся нормальными на стороне клиента:
Destination Gateway Genmask Flags Metric Ref Use Iface
300.300.300.300 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.25.0.0 10.25.255.254 255.255.0.0 UG 0 0 0 tap0
10.25.0.0 0.0.0.0 255.255.0.0 U 0 0 0 tap0
0.0.0.0 300.300.300.300 0.0.0.0 UG 0 0 0 eth0
Я могу пропинговать интерфейс LAN:
root@server:# ping 10.25.255.254
PING 10.25.255.254 (10.25.255.254) 56(84) bytes of data.
64 bytes from 10.25.255.254: icmp_req=1 ttl=64 time=7.65 ms
64 bytes from 10.25.255.254: icmp_req=2 ttl=64 time=7.49 ms
64 bytes from 10.25.255.254: icmp_req=3 ttl=64 time=7.69 ms
64 bytes from 10.25.255.254: icmp_req=4 ttl=64 time=7.31 ms
64 bytes from 10.25.255.254: icmp_req=5 ttl=64 time=7.52 ms
64 bytes from 10.25.255.254: icmp_req=6 ttl=64 time=7.42 ms
Но я не могу пропинговать интерфейс LAN:
root@server:# ping 10.25.255.1
PING 10.25.255.1 (10.25.255.1) 56(84) bytes of data.
From 10.25.255.254: icmp_seq=1 Redirect Host(New nexthop: 10.25.255.1)
From 10.25.255.254: icmp_seq=2 Redirect Host(New nexthop: 10.25.255.1)
Я запустил tcpdump на своем интерфейсе em1 (интерфейс LAN с IP-адресом 10.25.255.254)
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on em1, link-type EN10MB (Ethernet), capture size 96 bytes
08:21:13.449222 IP 10.25.24.1 > 10.25.255.1: ICMP echo request, id 23623, seq 10, length 64
08:21:13.458211 ARP, Request who-has 10.25.255.1 tell 10.25.24.1, length 28
08:21:14.450541 IP 10.25.24.1 > 10.25.255.1: ICMP echo request, id 23623, seq 11, length 64
08:21:14.458431 ARP, Request who-has 10.25.255.1 tell 10.25.24.1, length 28
08:21:15.451794 IP 10.25.24.1 > 10.25.255.1: ICMP echo request, id 23623, seq 12, length 64
08:21:15.458530 ARP, Request who-has 10.25.255.1 tell 10.25.24.1, length 28
08:21:16.453203 IP 10.25.24.1 > 10.25.255.1: ICMP echo request, id 23623, seq 13, length 64
Таким образом, трафик достигает интерфейса LAN, он также передается хосту, и хост отвечает. Но трафик на интерфейс LAN не ставится.
Проблема была не в openvpn или устройстве pfsense, а скорее в VMWare vSwitch. Если вы запускаете pfsense в VMWare, вам следует изменить «Промискусный режим» vSwitch, связанный с вашими сетями pfsense, с reject на accept. Если вы этого не сделаете, то единственный хост, который увидит мостовой клиент OpenVPN, - это сам сервер pfsense.
Также существует неявное правило для брандмауэра, которое не отображается в пользовательском интерфейсе. Вам необходимо внимательно изучить журнал PF и вручную отключить правило.