나는 현재 정말로 혼란 스럽다. .. 그리고 아니오, 이것은 나를위한 보통의 상태가 아니다 ;-) 나의 문제 : 내가 다른 네트워크의 각 기계에 도달 할 수 있도록 네트워크에 연결시켜주는 한 달 이후의 작업 . 이제 지난 주말 현재 클라이언트 하드웨어 (포고 플러그라고 불리는 장치이지만 데비안 설치로 수정 된 것)와 최신 클라이언트 하드웨어 (zyxel NAS 540)로 교체해야했습니다. 현재까지 NAS는 자신의 펌웨어를 소유하고 있으며 debian 또는 다른 배포판을 사용하여 modelling하는 것은 현재 가능하지 않습니다. 왜냐하면 커널이 64k 페이지 크기로 컴파일되어 ARM arch에 사용 가능한 바이너리가 많이있는 호환성을 깨 버리기 때문입니다. 하지만 일부 커뮤니티 사용자는 필요한 컴파일 설정으로 openvpn을 사용할 수있게되었습니다.
네트워크 설정
네트워크 A
네트워크 A에서 LXC (vmm-h01)를 실행했습니다. openVPN 서버 (IP : 192.168.200.204)가 실행되는 컨테이너 (app-h01)를 생성했습니다. 호스트와 컨테이너 사이의 설정은 veth 인터페이스로 연결되며 컨테이너 IP는 다른 네트워크와 동일한 네트워크에 있습니다. 그것은 하나의 컨테이너 내부에 서비스 브로드 캐스트 / 멀티 캐스트 콘텐츠를 가지고 있기 때문에 동일한 네트워크에 있어야하기 때문에 필요합니다. 네트워크 A는 192.168.200.0/24 네트워크입니다.
라우터 (192.168.200.254)에서 다음 규칙이 설정됩니다.
네트워크 서브넷 마스크 게이트웨이
192.168.201.0 255.255.255.0 192.168.200.204
192.168.254.0 255.255.255.0 192.168.200.204
네트워크 B
네트워크 B에서 openVPN 클라이언트 (IP : 192.168.201.200)는 컨테이너 나 가상화없이 NAS에서 직접 실행됩니다. 네트워크 A는 192.168.201.0/24 네트워크입니다.
라우터 (192.168.201.254)에서 다음 규칙이 설정됩니다.
Network Subnetmask Gateway
192.168.200.0 255.255.255.0 192.168.201.200
192.168.254.0 255.255.255.0 192.168.201.200
문제는 나를 혼란스럽게합니다.
nas에 openvpn을 설치하고 이전 설정을 복사 한 다음 openvpn을 시작합니다. 연결이 직접 설정되었고 모두 정상적으로 보입니다. 네트워크 A에서 핑 (Ping) 네트워크 B의 호스트에서 작동합니다! 네트워크 B의 핑 (Pings) 네트워크 A의 호스트, 작동합니다! 다음은 openVPN 클라이언트가 실행중인 네트워크 B의 호스트로 ssh를 보내려고합니다 ... 실패합니다! 호스트에 ping을 수행 할 수 있지만 ssh를 사용할 수는 없습니다. 그래서 나는 네트워크 B에서 네트워크 내부의 호스트에 ssh와 거기에서 openVPN 클라이언트와 함께 호스트로 ssh를하고 작동 ... 그리고 행동은 같은 (= 반대) 내가 네트워크 B에서 그것을 시도 ...
분석 문제
분석, 뭐가 잘못 됐어, 내가 네트워크 내부의 호스트에서 tracepath : ... 네트워크 B 내부의 호스트에게
leonard:~ # tracepath 192.168.201.254
1?: [LOCALHOST] pmtu 8996
1: vmm-h01.fritz.box 0.776ms pmtu 1500
1: app-v01.fritz.box 0.577ms
2: 192.168.254.2 22.156ms
3: 192.168.201.254 26.285ms reached
Resume: pmtu 1500 hops 3 back 62
... 네트워크 B의 openVPN 클라이언트로 호스트에 연결
leonard:~ # tracepath 192.168.201.200
1?: [LOCALHOST] pmtu 8996
1: vmm-h01.fritz.box 0.753ms pmtu 1500
1: app-v01.fritz.box 0.594ms
2: 192.168.201.200 20.341ms reached
Resume: pmtu 1500 hops 2 back 63
자, app-v01.fritz.box를 호스팅하는 방법이 좋습니다. 차이점은 다음과 같습니다. 첫 번째 tracepath에서 패키지는 192.168.254.2를 통해 "hop"하고, 두 번째 패키지에서는 192.168.201.200으로 직접 이동합니다. 나는 더 이상 생각이 없다는 것을 currenlty, 뭐가 잘못 됐어. OpenVPN 인스턴스에서 서비스에 직접 도달 할 수는 없지만 (라우팅이 잘못되었거나 누락 되었기 때문에) openVPN 인스턴스에서 직접 도달 할 수있는 것은 아닌지 이해할 수 있습니다. 왜 모든 것이 작동하는지 이해할 수 없습니다.
또한 LXC 설정으로 인해 이상한 라우팅 / 브리징 동작을 제외하고 vmm-h01에서 직접 openVPN으로 시도하지만 결과는 동일합니다 ...
현재 활성 iptables가 없거나 hosts.deny가 비어 있습니다.
OpenVPN 서버 버전
OpenVPN 2.3.4 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Dec 1 2014
library versions: OpenSSL 1.0.1k 8 Jan 2015, LZO 2.08
Originally developed by James Yonan
Copyright (C) 2002-2010 OpenVPN Technologies, Inc. <sales@openvpn.net>
Compile time defines: enable_crypto=yes enable_debug=yes enable_def_auth=yes enable_dependency_tracking=no enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown enable_fast_install=yes enable_fragment=yes enable_http_proxy=yes enable_iproute2=yes enable_libtool_lock=yes enable_lzo=yes enable_lzo_stub=no enable_maintainer_mode=no enable_management=yes enable_multi=yes enable_multihome=yes enable_pam_dlopen=no enable_password_save=yes enable_pedantic=no enable_pf=yes enable_pkcs11=yes enable_plugin_auth_pam=yes enable_plugin_down_root=yes enable_plugins=yes enable_port_share=yes enable_selinux=no enable_server=yes enable_shared=yes enable_shared_with_static_runtimes=no enable_small=no enable_socks=yes enable_ssl=yes enable_static=yes enable_strict=no enable_strict_options=no enable_systemd=yes enable_win32_dll=yes enable_x509_alt_username=yes with_crypto_library=openssl with_gnu_ld=yes with_ifconfig_path=/sbin/ifconfig with_iproute_path=/sbin/ip with_mem_check=no with_plugindir='${prefix}/lib/openvpn' with_route_path=/sbin/route with_sysroot=no
git revision: refs/heads/jessie/b35ad09bfc4a26e7
server.conf
daemon
port 8070
dev tun
proto tcp-server
ifconfig 192.168.254.1 192.168.254.2
secret /etc/openvpn/static.key
script-security 2
up /etc/openvpn/server.up
down /etc/openvpn/server.down
status /var/log/openvpn-status.log
log-append /var/log/openvpn.log
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
user nobody
group nogroup
verb 3
server.up
#!/bin/bash
sysctl -w net/ipv4/conf/eth0/proxy_arp=1
sysctl -w net/ipv4/ip_forward=1
route add -net 192.168.254.0/24 dev tun0
route add -net 192.168.201.0/24 dev tun0
exit 0
server.down
#!/bin/bash
route del -net 192.168.201.0/24 dev tun0
route del -net 192.168.254.0/24 dev tun0
exit 0
라우팅 테이블 OpenVPN 서버
Kernel-IP-Routentabelle
Ziel Router Genmask Flags Metric Ref Use Iface
default 192.168.200.254 0.0.0.0 UG 0 0 0 eth0
192.168.200.0 * 255.255.255.0 U 0 0 0 eth0
192.168.201.0 * 255.255.255.0 U 0 0 0 tun0
192.168.254.0 * 255.255.255.0 U 0 0 0 tun0
192.168.254.2 * 255.255.255.255 UH 0 0 0 tun0
OpenVPN 클라이언트 버전
OpenVPN 2.3.6 armv7l-unknown-linux-gnueabi [SSL (OpenSSL)] [LZO] [EPOLL] [MH] [IPv6] built on Apr 1 2015
library versions: OpenSSL 1.0.1j 15 Oct 2014, LZO 2.09
Originally developed by James Yonan
Copyright (C) 2002-2010 OpenVPN Technologies, Inc. <sales@openvpn.net>
Compile time defines: enable_crypto='yes' enable_crypto_ofb_cfb='yes' enable_debug='yes' enable_def_auth='yes' enable_dlopen='unknown' enable_dlopen_self='unknown' enable_dlopen_self_static='unknown' enable_fast_install='yes' enable_fragment='yes' enable_http_proxy='yes' enable_iproute2='no' enable_libtool_lock='yes' enable_lzo='yes' enable_lzo_stub='no' enable_management='yes' enable_multi='yes' enable_multihome='yes' enable_pam_dlopen='no' enable_password_save='no' enable_pedantic='no' enable_pf='yes' enable_pkcs11='no' enable_plugin_auth_pam='yes' enable_plugin_down_root='yes' enable_plugins='yes' enable_port_share='yes' enable_selinux='no' enable_server='yes' enable_shared='yes' enable_shared_with_static_runtimes='no' enable_small='no' enable_socks='yes' enable_ssl='yes' enable_static='yes' enable_strict='no' enable_strict_options='no' enable_systemd='no' enable_win32_dll='yes' enable_x509_alt_username='no' with_crypto_library='openssl' with_gnu_ld='yes' with_mem_check='no' with_plugindir='$(libdir)/openvpn/plugins' with_sysroot='no'
client.conf
remote <...>
dev tun
proto tcp-client
ifconfig 192.168.254.2 192.168.254.1
secret /etc/openvpn/static.key
script-security 2
up /etc/openvpn/client.up
down /etc/openvpn/client.down
status /var/log/openvpn-status.log
log-append /var/log/openvpn.log
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
user nobody
group nogroup
verb 2
client.up
#!/opt/bin/bash
openvpn --mktun --dev tun0
echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp
echo 1 > /proc/sys/net/ipv4/ip_forward
route add -net 192.168.254.0/24 dev tun0
route add -net 192.168.200.0/24 dev tun0
exit 0
client.down
#!/opt/bin/bash
route del -net 192.168.200.0/24 dev tun0
route del -net 192.168.254.0/24 dev tun0
exit 0
라우팅 테이블 OpenVPN 클라이언트
Destination Gateway Genmask Flags Metric Ref Use Iface
default fritz.box 0.0.0.0 UG 5 0 0 egiga0
192.168.200.0 192.168.254.2 255.255.255.0 UG 0 0 0 tun0
192.168.201.0 * 255.255.255.0 U 0 0 0 egiga0
192.168.254.0 * 255.255.255.0 U 0 0 0 tun0
192.168.254.1 * 255.255.255.255 UH 0 0 0 tun0
ping
A에서 B로 또는 그 반대로 ssh
그렇다면 그것은 아마도 당신 때문일 것입니다. ssh config
비 로컬 지역 차단 ssh