OpenVPN에서 개인 네트워크와 클라이언트 간 라우팅

OpenVPN에서 개인 네트워크와 클라이언트 간 라우팅

개인 네트워크와 해당 네트워크에 연결된 홈 클라이언트 간에 OpenVPN을 설정하려고 합니다. (클라이언트는 서로 연결될 필요가 없습니다). 네트워크 토폴로지는 약간 흥미롭습니다. 10.7.42.0/24에 공공/대학 네트워크가 있습니다. 해당 네트워크에 일부 IP가 있고 공용 포트를 여기에 전달하지만 해당 IP를 제한하여 192.168.203.0/24의 개인 네트워크에 많은 IP를 배치합니다. 모든 머신에는 최소한 하나의 개인 IP가 있고 일부에는 공용 및 개인 IP가 모두 있습니다(두 개의 어댑터. 모두 가상 머신에서 수행되지만 물리적으로 분리된 두 개의 네트워크를 갖는 것과 같습니다).

OpenVPN 서버는 공용/개인 네트워크 간의 게이트웨이이기도 합니다. 10.7.42.x 주소, 기본 게이트웨이 10.7.42.1(대학 게이트웨이), 모든 대 임의의 가장/IP 전달 및 내부 주소 192.168.203.1을 갖습니다. NAT/게이트웨이에서 성공적으로 작동합니다.

내 개방형 VPN 서버 구성은 다음과 같습니다.

local 10.42.7.226
port 443
proto tcp
dev tun
ca /etc/openvpn/easy-rsa-2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa-2.0/keys/server.crt
key /etc/openvpn/easy-rsa-2.0/keys/server.key  # This file should be kept secret
dh /etc/openvpn/easy-rsa-2.0/keys/dh1024.pem
server 192.168.137.0 255.255.255.0

ifconfig-pool-persist /etc/openvpn/ipp.txt

route 192.168.203.0 255.255.255.0
push "route 192.168.203.0 255.255.255.0"

push "dhcp-option DNS 192.168.203.100"

keepalive 10 120

cipher BF-CBC        # Blowfish (default)


comp-lzo

plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-pam.so login
client-cert-not-required
username-as-common-name

max-clients 201

user nobody
group nobody

persist-key
persist-tun

status /var/log/openvpn-status.log

log-append  /var/log/openvpn.log

ifconfig는 다음과 같습니다.

eth0      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX  
          inet addr:192.168.203.1  Bcast:192.168.203.255  Mask:255.255.255.0
          inet6 addr: fe80::8c2c:6bff:fe5b:5406/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:183488 errors:0 dropped:4 overruns:0 frame:0
          TX packets:198145 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:15024794 (14.3 Mb)  TX bytes:186885934 (178.2 Mb)
          Interrupt:32 Base address:0xa000 

eth1      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX  
          inet addr:10.42.7.226  Bcast:10.42.7.255  Mask:255.255.255.0
          inet6 addr: fe80::a011:59ff:fe3e:c3aa/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:436236 errors:0 dropped:99041 overruns:0 frame:0
          TX packets:202673 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:239838327 (228.7 Mb)  TX bytes:20537299 (19.5 Mb)
          Interrupt:36 Base address:0xe100 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:100 (100.0 b)  TX bytes:100 (100.0 b)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:192.168.137.1  P-t-P:192.168.173.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:631 errors:0 dropped:0 overruns:0 frame:0
          TX packets:88 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:48118 (46.9 Kb)  TX bytes:13725 (13.4 Kb)

내 경로는 다음과 같습니다.

192.168.137.2     *               255.255.255.255 UH    0      0        0 tun0
10.42.7.0       *               255.255.255.0   U     0      0        0 eth1
192.168.203.0   *               255.255.255.0   U     0      0        0 eth0
192.168.137.0     192.168.137.2     255.255.255.0   UG    0      0        0 tun0
link-local      *               255.255.0.0     U     0      0        0 eth0
loopback        *               255.0.0.0       U     0      0        0 lo
default         10.42.7.1       0.0.0.0         UG    0      0        0 eth1

클라이언트는 다음과 같습니다.

dev tun
remote vpn.mydomain.com
ca ca.crt

client
port 443
proto tcp
tls-client
auth-user-pass

comp-lzo

ping 15
verb 9
log-append  /tmp/openvpn.log 

문제는 192.168.137.1에 대한 SSH를 통해서만 OpenVPN 서버에 액세스할 수 있다는 것입니다. 192.168.203.0/24 주소에 연결할 수 없습니다. 경로 추적을 수행하면 한 번의 홉만 통과하고 VPN을 통해 원격 Tun 어댑터에 도달하는 데 30초가 걸립니다.

개인용 컴퓨터는 192.168.203.1(OpenVPN 서버)을 게이트웨이로 사용하므로 적어도 해당 컴퓨터에 대해서는 패킷이 정상적으로 돌아올 것입니다(실제로 나가는 길에 NAT를 통과하므로 두 주소가 모두 있는 컴퓨터에 도달할 수 있어야 합니다). ): 공용 및 개인 어댑터에도 동일하게 적용됩니다)

이전에 이러한 OpenVPN 네트워크를 설정해 본 적이 있으며 이전에도 정확히 이와 같은 문제가 발생했다는 것을 알고 있지만 해결 방법이 기억나지 않습니다.

답변1

이 문제를 발견했습니다. 이것이 내 방화벽입니다. 방화벽을 비활성화하고 iptables를 사용하여 필요한 규칙을 수동으로 입력하면 제대로 작동합니다. (freenode.net의 #openvpn 채팅방에 따르면 사람들이 OpenVPN에서 겪는 가장 큰 문제는 일반적으로 방화벽 기반입니다.) 그런 다음 tun0 트래픽을 허용하도록 방화벽 스크립트를 조정하고 다시 시작했습니다.

관련 정보