여러 AWS VPC 서브넷을 사용한 OpenVPN 설정

여러 AWS VPC 서브넷을 사용한 OpenVPN 설정

3개의 서브넷이 있는 AWS VPC의 Ubuntu 12.04에서 실행되는 OpenVPN 서버가 있습니다. 내 클라이언트를 연결할 수 있고 문제 없이 서버(10.8.0.1)를 ping할 수 있지만 내 클라이언트에서 VPC에 있는 다른 시스템에 연결할 수 없습니다.

일부 배경 정보:

서버 자체에서 ping을 보낼 수 있습니다.

클라이언트에서 서버에 ping을 보낼 수 있습니다.

서버에서 클라이언트를 핑할 수 없습니다.

서버에서 VPC의 머신에 ping을 보낼 수 있습니다.

내 클라이언트에서 VPC(서버 이외)의 시스템을 핑할 수 없습니다.

서버에서 IPV4 전달을 활성화했습니다.

소스/대상 확인을 비활성화했습니다.

10.8.0.0/16 트래픽을 OpenVPN 인스턴스로 라우팅하기 위해 VPC에 라우팅 테이블을 설정했습니다.

VPC 서브넷:

10.0.0.0/24
10.0.1.0/24
10.0.2.0/24

OpenVPN 서버는 10.0.2.0/24에서 실행되고 있으며 다른 서브넷에 있는 모든 서버를 핑할 수 있습니다. 해당 클라이언트는 서브넷의 아무 것도 연결할 수 없습니다.

서버 회의:

port 80
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key  # This file should be kept secret
dh dh1024.pem
server 10.8.0.0 255.255.0.0
ifconfig-pool-persist ipp.txt
push "route 10.0.0.0 255.0.0.0"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
tls-auth ta.key 0 # This file is secret
comp-lzo
max-clients 100
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log         openvpn.log
verb 6
mute 20

클라이언트 구성:

client
dev tun
proto tcp
remote xx.xx.xxx.xxx 80
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert olo-imac.crt
key olo-imac.key
tls-auth ta.key 1
comp-lzo
verb 3

서버 경로:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.0.2.1        0.0.0.0         UG    100    0        0 eth0
10.0.2.0        *               255.255.255.0   U     0      0        0 eth0
10.8.0.0        10.8.0.2        255.255.0.0     UG    0      0        0 tun0
10.8.0.2        *               255.255.255.255 UH    0      0        0 tun0

클라이언트 경로:

Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0     192.168.36.1   192.168.36.120     10
         10.0.0.0        255.0.0.0         10.8.0.5         10.8.0.6     30
         10.8.0.1  255.255.255.255         10.8.0.5         10.8.0.6     30
         10.8.0.4  255.255.255.252         On-link          10.8.0.6    286
         10.8.0.6  255.255.255.255         On-link          10.8.0.6    286
         10.8.0.7  255.255.255.255         On-link          10.8.0.6    286
        127.0.0.0        255.0.0.0         On-link         127.0.0.1    306
        127.0.0.1  255.255.255.255         On-link         127.0.0.1    306
  127.255.255.255  255.255.255.255         On-link         127.0.0.1    306
     192.168.36.0    255.255.255.0         On-link    192.168.36.120    266
   192.168.36.120  255.255.255.255         On-link    192.168.36.120    266
   192.168.36.255  255.255.255.255         On-link    192.168.36.120    266
        224.0.0.0        240.0.0.0         On-link         127.0.0.1    306
        224.0.0.0        240.0.0.0         On-link    192.168.36.120    266
        224.0.0.0        240.0.0.0         On-link          10.8.0.6    286
  255.255.255.255  255.255.255.255         On-link         127.0.0.1    306
  255.255.255.255  255.255.255.255         On-link    192.168.36.120    266
  255.255.255.255  255.255.255.255         On-link          10.8.0.6    286

답변1

위의 CIGuy 의견에 대한 답변입니다.

OpenVPN 서버에서 tcpdump를 실행하세요. 패킷이 실제로 서버에서 원격 네트워크의 다른 호스트로 전달되고 있는지 확인할 수 있어야 합니다.

다음과 같은 것 :

tcpdump -i any -v host <ip> 

핑하려는 IP는 어디에 있습니까? 추가하여 Wireshark에서 나중에 분석하기 위해 패킷 캡처를 파일에 쓸 수도 있습니다.

-s0 -w somefile.pcap

tcpdump의 일부 버전은 자체적으로 chroot를 수행하므로 somefile.pcap이 예상한 위치를 표시하지 않으면 /var/lib/tcpdump/를 확인하십시오.

관련 정보