배경: VPN 제공업체의 다양한 서버의 속도를 확인하고 싶어서 iperf3
각 서버에 대해 실행되는 스크립트를 작성했습니다. 이 스크립트는 어떤 방식으로든 네트워크 설정을 수정하지 않습니다.
질문: 간단한 openvpn
명령은 기능적 터널링을 가져오지만 스크립트를 추가하면 통신이 중단됩니다.
내 것도 확인해 보세요.편집하다질문이 끝나면 이것이 무슨 일이 일어나고 있는지 나타낼 수 있습니다. 이런 이유로 질문 제목도 변경했습니다.
사례 0: 아니요 openvpn
- 네트워크 정상
라우팅 테이블은
default via 10.0.3.1 dev eth0
10.0.3.0/24 dev eth0 proto kernel scope link src 10.0.3.46
상황 1: 정상 openvpn
- 정상적인 네트워크 연결
주문하다
# openvpn --config at3.nordvpn.com.tcp443.ovpn --auth-user-pass auth.txt
(...)
Sat Mar 5 19:06:17 2016 /sbin/ip link set dev tun0 up mtu 1500
Sat Mar 5 19:06:17 2016 /sbin/ip addr add dev tun0 local 10.7.7.210 peer 10.7.7.209
Sat Mar 5 19:06:17 2016 /sbin/ip route add 37.252.190.165/32 via 10.0.3.1
Sat Mar 5 19:06:17 2016 /sbin/ip route add 0.0.0.0/1 via 10.7.7.209
Sat Mar 5 19:06:17 2016 /sbin/ip route add 128.0.0.0/1 via 10.7.7.209
Sat Mar 5 19:06:17 2016 /sbin/ip route add 10.7.7.1/32 via 10.7.7.209
Sat Mar 5 19:06:17 2016 Initialization Sequence Completed
연결된 경로가 있는 터널을 소개합니다.
0.0.0.0/1 via 10.7.7.209 dev tun0
default via 10.0.3.1 dev eth0
10.0.3.0/24 dev eth0 proto kernel scope link src 10.0.3.46
10.7.7.1 via 10.7.7.209 dev tun0
10.7.7.209 dev tun0 proto kernel scope link src 10.7.7.210
37.252.190.165 via 10.0.3.1 dev eth0
128.0.0.0/1 via 10.7.7.209 dev tun0
Traceroute www.google.com
는 괜찮습니다
# traceroute 66.102.1.103
traceroute to 66.102.1.103 (66.102.1.103), 30 hops max, 60 byte packets
1 10.7.7.1 (10.7.7.1) 32.933 ms 65.328 ms 65.332 ms
2 37-252-190-129.rev.ipax.at (37.252.190.129) 65.341 ms 65.337 ms 65.335 ms
(...)
사례 2: openvpn
스크립트 사용 - 네트워크 오류
OpenVPN은 다음으로 시작됩니다
# openvpn --config at3.nordvpn.com.tcp443.ovpn --auth-user-pass auth.txt --script-security 2 --route-delay 5 --route-up "./testlink.sh at3.nordvpn.com.tcp443.ovpn"
(...)
Sat Mar 5 19:11:20 2016 /sbin/ip link set dev tun0 up mtu 1500
Sat Mar 5 19:11:20 2016 /sbin/ip addr add dev tun0 local 10.7.7.210 peer 10.7.7.209
Sat Mar 5 19:11:25 2016 /sbin/ip route add 37.252.190.165/32 via 10.0.3.1
Sat Mar 5 19:11:25 2016 /sbin/ip route add 0.0.0.0/1 via 10.7.7.209
Sat Mar 5 19:11:25 2016 /sbin/ip route add 128.0.0.0/1 via 10.7.7.209
Sat Mar 5 19:11:25 2016 /sbin/ip route add 10.7.7.1/32 via 10.7.7.209
+ server=at3.nordvpn.com.tcp443.ovpn
+ iperf3 -J -c ping.online.net
마지막 두 줄은 내 스크립트의 시작 부분입니다. iperf3
서버에 연결할 수 없기 때문에 iperf3
중단됩니다 .
라우팅 테이블은 좋아 보입니다(= 이전의 일반 라우팅 테이블과 동일하며 openvpn
출력도 확인했습니다 diff
).
0.0.0.0/1 via 10.7.7.209 dev tun0
default via 10.0.3.1 dev eth0
10.0.3.0/24 dev eth0 proto kernel scope link src 10.0.3.46
10.7.7.1 via 10.7.7.209 dev tun0
10.7.7.209 dev tun0 proto kernel scope link src 10.7.7.210
37.252.190.165 via 10.0.3.1 dev eth0
128.0.0.0/1 via 10.7.7.209 dev tun0
그러나 동일한 추적 경로가 www.google.com
실패합니다.
# traceroute 66.102.1.103
traceroute to 66.102.1.103 (66.102.1.103), 30 hops max, 60 byte packets
1 * * *
2 * * *
(...)
왜?
편집하다
나는 또 다른 테스트를 했습니다. "hello"를 에코하고 종료하는 간단한 비차단 스크립트가 있습니다.
놀랍게도 라인을 녹음한 후 traceroute
이제 작동합니다.Initialization Sequence Completed
스크립트 시작과 이 로그 항목 사이에 추가 초기화 단계가 수행되는 것 같습니다.이 상황에서 차단 스크립트를 어떻게 실행합니까?(차단이란 네트워크 시작에 따라 일부 작업을 수행한다는 의미입니다), 즉 초기화가 완료된 후?
답변1
--route-up
터널이 나올 때 경로를 추가하는 것이므로 사용하지 마십시오 .
를 사용해 볼 수 있습니다 --up
. 터널이 완전히 설정된 후 실행되는 스크립트에 대해 작동합니다. 여전히 멈춘다면 하위 프로세스 &
스타일을 시작해야 합니다.