VPS의 VPN 터널 반대편에 있는 클라이언트에 VPS의 고정 경로를 추가하고 해당 트래픽을 터널을 통해 전달하려고 합니다.
경로를 추가할 목적지에 대한 설정입니다. Raspi는 라우터 역할을 하며 자체적으로 AP에 연결되고 NAS는 Raspi에 연결되어 VPN 터널을 통해 트래픽을 리디렉션합니다.
+--------------------------------+
| Raspi |
(192.168.0.101/24)| |(192.168.1.1/24)
(192.168.0.1/24) AP<>=================={wlan0 eth0}================<>NAS (192.168.1.102/24)
| \ / |
| +----------------------+ |
| | iptables and | |
| | routing engine | |
| +-----------+----------+ |
| | |
| {tun0} |
| 10.8.0.6 |
+--------------------------------+
route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.8.0.6
Raspi 뒤에 있는 NAS와 통신하기 위해 이 작업을 수행하려고 하는데 SIOCADDRT: Network is unreachable
.
서버 측 정보는 다음과 같습니다.
$ifconfig-a
eth0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
inet addr:217.B.C.D Bcast:217.B.C.D Mask:255.255.255.255
inet6 addr: XXXX::XXX:XXXX:XXXX:XXXX/XX Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1598 errors:0 dropped:0 overruns:0 frame:0
TX packets:1453 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:176137 (176.1 KB) TX bytes:165179 (165.1 KB)
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:65536 Metric:1
RX packets:9 errors:0 dropped:0 overruns:0 frame:0
TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:460 (460.0 B) TX bytes:460 (460.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:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:169 errors:0 dropped:0 overruns:0 frame:0
TX packets:183 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:14825 (14.8 KB) TX bytes:15071 (15.0 KB)
$ netstat -anr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.255.255.1 0.0.0.0 UG 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 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
10.255.255.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
$ip 경로 목록
default via 10.255.255.1 dev eth0
10.8.0.0/24 via 10.8.0.2 dev tun0
10.8.0.2 dev tun0 proto kernel scope link src 10.8.0.1
10.255.255.1 dev eth0 scope link
추가 정보:
인터페이스 간 트래픽 리디렉션을 구현하는 방법이 궁금하다면 여기에서 iptables를 사용하여 지금까지 모든 것을 관리한 방법을 설명하는 게시물을 확인하세요.
iptables를 사용하여 포트 전달을 통해 보조 네트워크 인터페이스 트래픽을 tun0(OpenVPN)으로 리디렉션
클라이언트 네트워크 차단(만약지점 간 토폴로지):
10.8.0.4 : Network address
10.8.0.5 : Virtual remote endpoint; Non pingable; Only used for routing
10.8.0.6 : Client IP address
10.8.0.7 : Network broadcast address
업데이트 1:
VPN 서버 구성을 VPN 클라이언트의 해당 파일에 있는 구성으로 변경하여 topology subnet
VPN 서버와 클라이언트가 경로를 추가하는 대신 서브넷으로 이동되도록 했습니다. 이번에는 오류가 반환되지 않았지만 여전히 아무 것도 반환되지 않았습니다. 하지만 뭔가 달라졌다(의 경우).ifconfig-push 10.8.0.6 255.255.255.0
ccd
/24
/32
route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.8.0.6
route add -net 192.168.1.0 netmask 255.255.255.0 dev tun0
ping 192.168.1.102
netstat -anr
route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.8.0.6
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.255.255.1 0.0.0.0 UG 0 0 0 eth0
10.8.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
10.255.255.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
192.168.1.0 10.8.0.6 255.255.255.0 UG 0 0 0 tun0
답변1
다음 지침을 읽었습니다.
https://openvpn.net/index.php/open-source/documentation/howto.html#scope
내 VPS와 클라이언트 측의 해당 파일 route 192.168.1.0 255.255.255.0
에 추가했습니다 . 그런 다음 명령을 사용하면 그게 전부입니다! VPS에서 OpenVPN 클라이언트 뒤의 클라이언트에 핑을 보낼 수 있습니다 . :Dserver.conf
iroute 192.168.1.0 255.255.255.0
ccd
route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.8.0.6
192.168.1.102
추신: 저는 아직 subnet topology
모드에 있습니다. 일반적인 상황에서는 시도하지 않았지만 p2p topology
정상적으로 작동할 것이라고 생각합니다.
답변2
명확히 하자면, 이것은 제가 이해하기 매우 어렵습니다.
- OpenVPN 클라이언트 소프트웨어를 실행하는 컴퓨터에서 OpenVPN은
route
구성 파일의 ("i" 제외) 지시문에 대한 응답으로 경로를 생성해야 합니다. 이는 트래픽이tunX
가상 장치를 통해 라우팅되고 OpenVPN이 이를 인식하는지 확인하기 위한 것입니다. OpenVPN이 연결된 로컬 서브넷의 라우터 역할을 하는 경우 "게이트웨이로 전송된" 들어오는 트래픽을 "캡처"하고 이를 OpenVPN에 제출하여 전달하기 위해 라우팅이 필요합니다.(운영 체제가 해당 가상 장치를 통해 라우팅하지 않으면 OpenVPN은 이를 볼 수 없습니다.) - 대상 주소가 OpenVPN이 이미 알고 있는 주소가 아닌 경우... 양쪽의 로컬 주소가 아닌 원격 서브넷입니다.
iroute
OpenVPN에 서브넷이 존재한다는 사실을 ("i" 사용) 알려야 합니다. 어떤 리모컨으로 보낼 것인지 트래픽을 지정합니다. (그렇지 않은 경우 결과적으로 패킷이 삭제된 OpenVPN 로그를 볼 수 있습니다.) - 모든 트래픽은 "TCP/IP 라우터와 마찬가지로" 라우팅되어야 합니다. 모든 "점프"는 올바르게 수행되어야 합니다. ( 은(
traceroute
는) 친구입니다.) 또한 트래픽은 다음에서 발생합니다.존재하다OpenVPN 클라이언트를 실행하는 시스템은 일반적으로 OpenVPN에서 이 목적으로 할당한 IP 주소를 갖는 것으로 간주되므로10.8.0.x
이 주소 범위를 올바르게 라우팅해야 합니다.(어디에나...)게다가. 터널이 성공적으로 연결되었지만 통신할 수 없다면 다른 유형의 라우터 장치와 마찬가지로 "TCP/IP 라우팅 문제가 있는 것"입니다.
이러한 추가 의견이 귀하에게 도움이 되기를 바랍니다.