내 OpenVPN 트래픽을 차단하는 요소를 찾는 방법

내 OpenVPN 트래픽을 차단하는 요소를 찾는 방법

OpenVPN을 사용하여 경로를 푸시하는 데 문제가 있습니다.

내 설정은 다음과 같습니다

회로망

  • 국토: 10.0.0.0/24
  • 개방형 VPN: 10.8.0.0/24
  • 인터넷상의 VPS

서버(모두 Linux)

  • 서버 1: 10.0.0.13 + 10.8.0.1(OpenVPN 서버)
  • 서버 2: 10.0.0.11(DHCP+DNS)
  • VPS: 인터넷 IP + 10.8.0.X(OpenVPN의 임의 IP)

OpenVPN 서버 구성

..snip..
push "route 10.0.0.0 255.255.255.0"
push "dhcp-option DNS 10.0.0.11"
..snip..

IP 전달이 활성화되었습니다

cat /proc/sys/net/ipv4/ip_forward
1

라우팅된 VPS

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         www.xxx.yyy.1    0.0.0.0         UG    0      0        0 eth0
10.0.0.0        10.8.0.5        255.255.255.0   UG    0      0        0 tun0
10.8.0.0        10.8.0.5        255.255.255.0   UG    0      0        0 tun0
10.8.0.5        *               255.255.255.255 UH    0      0        0 tun0
www.xxx.yyy.1    *               255.255.255.255 UH    0      0        0 eth0

라우팅 서버 1

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.0.0.1      0.0.0.0         UG    0      0        0 eth0
10.0.0.0        *               255.255.255.0   U     0      0        0 eth0
10.8.0.0        10.8.0.2        255.255.255.0   UG    0      0        0 tun0
10.8.0.2        *               255.255.255.255 UH    0      0        0 tun0

VPS에서 openvpn-server(10.8.0.1)를 ping해 보세요.

ping 10.0.0.13
ping 10.0.0.13 -I tun0;#gives same result

VPS용 tcpdump

tcpdump -i tun0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 262144 bytes
19:05:22.049141 IP 10.8.0.6 > 10.8.0.1: ICMP echo request, id 17966, seq 1, length 64
19:05:22.101397 IP 10.8.0.1 > 10.8.0.6: ICMP echo reply, id 17966, seq 1, length 64

TCP 덤프 서버 1

tcpdump -i tun0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 262144 bytes
18:05:22.064139 IP 10.8.0.6 > 10.8.0.1: ICMP echo request, id 17966, seq 1, length 64
18:05:22.064399 IP 10.8.0.1 > 10.8.0.6: ICMP echo reply, id 17966, seq 1, length 64
18:05:23.065687 IP 10.8.0.6 > 10.8.0.1: ICMP echo request, id 17966, seq 2, length 64
18:05:23.065886 IP 10.8.0.1 > 10.8.0.6: ICMP echo reply, id 17966, seq 2, length 64

작동하지 않는 것은 VPS에서 서버 1의 내부 IP로의 연결입니다.

VPS에서 openvpn-server(10.0.0.13)를 ping해 보세요.

VPS용 tcpdump

19:12:24.847216 IP vps.hoster.tld > 10.0.0.13: ICMP echo request, id 18136, seq 1, length 64 
19:12:25.876441 IP vps.hoster.tld > 10.0.0.13: ICMP echo request, id 18136, seq 2, length 64 
19:12:26.900408 IP vps.hoster.tld > 10.0.0.13: ICMP echo request, id 18136, seq 3, length 64 
19:12:27.924476 IP vps.hoster.tld > 10.0.0.13: ICMP echo request, id 18136, seq 4, length 64 
19:12:39.964724 IP vps.hoster.tld > 10.0.0.13: ICMP echo request, id 18137, seq 1, length 64 
19:12:40.980446 IP vps.hoster.tld > 10.0.0.13: ICMP echo request, id 18137, seq 2, length 64 

Server1의 tcpdump

#stays empty

그래서 저는 여기서 무엇이 잘못되고 있는지 정말로 알고 싶습니다. 내 VPS에서 내부 IP 10.0.0.0/24로의 트래픽을 차단하는 것이 무엇인지 알아내기 위한 다음 단계는 무엇입니까? 어쩌면 집에 있는 방화벽이 트래픽을 차단하고 있는 것일까요? 알아내는 방법?

답변1

내부 인터페이스에 도달 중, 경로 없음
기본적으로 Linux는 모든 인터페이스의 모든 IP에 응답하며 "잘못된" 인터페이스의 ARP 요청에도 응답합니다. 이는 매우 안전하지 않으므로 대부분의 방화벽은 이 동작을 방지하기 위해 iptables 및 proc/arp_filter를 사용합니다.

라우팅을 차단하는 방화벽 규칙이 있을 수 있습니다.
server1> iptables -L -n -v
server1> iptables -t nat -L -n -v

server1> iptables -A FORWARD -j LOGserver1을 통해 10.8과 10.0 사이에 라우팅된 모든 패킷이 기록됩니다(dmesg). 그것은 당신에게 몇 가지 정보를 줄 수도 있습니다.
$server1> iptables -D FORWARD -j LOG규칙을 삭제합니다.

다음은 방화벽 규칙 앞에 라우팅 규칙을 삽입합니다.
server1> echo 1 > /proc/sys/net/ipv4/ip_forward
server1> iptables -I FORWARD 1 --in-interface tun0 --source 10.8.0.0/24 -j ACCEPT
server1> iptables -I FORWARD 1 --in-interface eth0 --source 10.0.0.0/24 -j ACCEPT

나는 그것이 작동할 것이라고 기대하지 않지만 VPS> ping 10.0.0.11만약 그렇다면 문제는 거의 확실하게 server1의 iptables에 있습니다.

server1 지점 간 라우팅을 수행하므로 ARP를 수행해서는 안 되지만 둘 중 하나가 1로 설정된 경우 아마도 방화벽 스크립트에 의해 수행되고 문제는 server1의 iptables에 있을 것입니다.
server1> cat /proc/sys/net/ipv4/conf/all/arp_filter
server1> cat /proc/sys/net/ipv4/conf/tun0/arp_filter

노선
경로는 괜찮아 보이지만 이 설정을 사용하면 10.8.0.0/24 경로가 필요하지 않습니다. 10.8.0.1 ~ 10.8.0.5는 지점 간입니다.

default gwVPS에는 , 10.8.0.1 via tun0및 가 있어야 합니다 10.0.0.0/24 via gw 10.8.0.1. server1에는 및 , 및 가
있어야 합니다 .default gw10.8.0.5 via tun010.0.0.0/24 via eth0

관련 정보