OpenVPN - konfiguracja maszyny wirtualnej za pomocą MacVTap, echo ICMP działa, TCP/UDP nie



Krótkie podsumowanie
>
Żadnych błędów, żadnych porzuconych pakietów, pingi docierają do klientów, tcpdump pokazuje, że pakiety są przenoszone, wszystko inne nigdy nie dociera do hostów LAN (lub klientów OpenVPN).

edytować
>
Po próbie wyeliminowania wszystkich możliwych czynników zakłócających, ponownie skonfigurowałem moją maszynę wirtualną, aby zamiast niej korzystała z mostów

MacVTap
... Dostęp do klientów sieci LAN działa teraz zgodnie z oczekiwaniami. Mam nadzieję, że nie jest to ostateczna odpowiedź (chciałbym zachować MacVTap).
Kiedyś robiłem trochę maszyn wirtualnych i sieci, ale to zachowanie, opisane poniżej, jest dla mnie zupełnie nowe.

Edytować:

Najbardziej uderza mnie to, że odpowiedzi (takie jak zapytanie DNS) są odsyłane z powrotem do klienta (dodałem do niego tcpdump), ale kopanie nadal przekroczyło limit czasu.
Zastanawiam się nad tym od kilku dni i nie mogę znaleźć niczego w interwebz (być może słabe wyszukiwanie foo), więc pomyślałem, że nadszedł czas na was ServerFaulters.

Zadanie

(w zasadzie proste): skonfiguruj serwer OpenVPN, przekieruj ruch do sieci lokalnej za nim.

Problem
: Ping się powiódł, „wszystko inne” nie. Na hoście działa serwer DNS oraz serwer OpenSSH, z których oba są niedostępne.
Myślałem, że może

maskowanie/NAT

ale to wcale nie jest do winy.
Właściwie myślę, że jestem teraz zbyt głupi.

Więc proszę, pomóż zdesperowanemu facetowi

(i nie wahaj się zapytać o jeszcze więcej szczegółów).

Melodia
>Serwer VPN

i

Gospodarz

maszyny wirtualne działają na maszynie

Klient VPN

bezpośrednio związane z. Obie maszyny wirtualne mogą się widzieć, zasady iptables są ustawione na AKCEPTUJ na wszystkich hostach.

Serwer OpenVPN
>
eth0    10.0.0.3
tun0:1 172.16.0.3
tun0 10.8.0.1# cat/proc/sys/net/ipv4/ip_forward
1# lsmod
xt_conntrack 12681 3
iptable_filter 12536 1
ipt_MASQUERADE 12594 3
iptable_nat 12646 1
nf_conntrack_ipv4 18499 4
nf_defrag_ipv4 12483 1 nf_conntrack_ipv4
nf_nat_ipv4 12912 1 iptable_nat
nf_nat 22379 3 ipt_MASQUERADE,nf_nat_ipv4,iptable_nat
nf_conntrack 70753 6 ipt_MASQUERADE,nf_nat,nf_nat_ipv4,xt_conntrack,iptable_nat,nf_conntrack_ipv4
ip_tables 21914 2 iptable_filter,iptable_nat
x_tables 23015 4 ip_tables,ipt_MASQUERADE,xt_conntrack,iptable_filter
[…]


/etc/openvpn/server.conf

port 1194
proto udp
dev tun
server 10.8.0.0 255.255.255.0
push "route 10.0.0.0 255.255.255.0"
topology subnet # is this actually needed?


Klient VPN
>
eth0 172.16.0.100
tun0 10.8.0.4$ ip route
10.0.0.0/24 via 10.8.0.1 dev tun0
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.4
172.16.0.0/24 dev eth0 proto kernel scope link src 172.16.0.100


Połączenie OpenVPN (fragmenty)

$ sudo openvpn --config vpn.ovpn

UDPv4 link remote: [AF_INET]172.16.0.3:1194
TLS: Initial packet from [AF_INET]172.16.0.3:1194, sid=b636ac88 2ef4c575
[…] Peer Connection Initiated with [AF_INET]172.16.0.3:1194
SENT CONTROL […]: 'PUSH_REQUEST' (status=1)
PUSH: Received control message: 'PUSH_REPLY,route 10.0.0.0 255.255.255.0,route-gateway 10.8.0.1,topology subnet,ping 10,ping-restart 120,ifconfig 10.8.0.4 255.255.255.0'
/sbin/ip link set dev tun0 up mtu 1500
/sbin/ip addr add dev tun0 10.8.0.4/24 broadcast 10.8.0.255
/sbin/ip route add 10.0.0.0/24 via 10.8.0.1


Gospodarz
>
eth0 10.0.0.2$ ip route
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.2
10.8.0.0/24 via 10.0.0.3 dev eth0


Echo ICMP
>
Jak widać poniżej, udany ping z klienta VPN do hosta. (Pingi z hosta do klienta VPN działają równie dobrze, ale przegapiłem je tutaj)
Zrobiono to bez żadnych reguł iptables.

Klient VPN
>
$ ping -c1 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=63 time=1.30 ms--- 10.0.0.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.303/1.303/1.303/0.000 ms


Serwer OpenVPN
>
tcpdump -i tun0
11:01:25.787428 IP 10.8.0.4 > 10.0.0.2: ICMP echo request, id 4209, seq 1, length 64
11:01:25.787899 IP 10.0.0.2 > 10.8.0.4: ICMP echo reply, id 4209, seq 1, length 64


Gospodarz
>
# tcpdump net 10.8.0.0/24
11:01:25.797640 IP 10.8.0.4 > 10.0.0.2: ICMP echo request, id 4209, seq 1, length 64
11:01:25.797682 IP 10.0.0.2 > 10.8.0.4: ICMP echo reply, id 4209, seq 1, length 64


Zapytanie DNS
>
Ponownie, nie ma reguł iptables.

Klient VPN
>
$ dig @10.0.0.2 serverfault.com; <<>> DiG 9.9.3-rpz2+rl.13214.22-P2-Debian-1:9.9.3.dfsg.P2-4 <<>> @10.0.0.2 serverfault.com
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached


edytować
: Przekroczono limit czasu połączenia, ale istnieje odpowiedź, którą można zobaczyć w tcpdump:
# tcpdump -i tun0
14:26:26.609399 IP vpnclient.56553 > 10.0.0.2.domain: 44738+ [1au] A? serverfault.com. (44)
14:26:26.738504 IP 10.0.0.2.domain > vpnclient.56553: 44738$ 1/0/0 A 198.252.206.16 (49)


Serwer OpenVPN
>
# tcpdump -i tun0
10:03:52.077784 IP 10.8.0.4.58792 > 10.0.0.2.domain: 61705+ [1au] A? serverfault.com. (44)
10:03:52.092420 IP 10.0.0.2.domain > 10.8.0.4.58792: 61705$ 1/0/0 A 198.252.206.16 (49)


Gospodarz
>
# tcpdump net 10.8.0.0/24
10:03:57.061048 IP 10.8.0.4.58792 > 10.0.0.2.domain: 61705+ [1au] A? serverfault.com. (44)
10:03:57.075223 IP 10.0.0.2.domain > 10.8.0.4.58792: 61705$ 1/0/0 A 198.252.206.16 (49)

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Spróbuj zacząć od tych reguł w swojej zaporze:
iptables -A FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -s 10.0.0.0/24 -j ACCEPT

Musi zapewniać pełną łączność między klientami sieci LAN i VPN.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się