![VPN이 시작되면 인터넷이 작동하지 않습니다](https://linux55.com/image/47369/VPN%EC%9D%B4%20%EC%8B%9C%EC%9E%91%EB%90%98%EB%A9%B4%20%EC%9D%B8%ED%84%B0%EB%84%B7%EC%9D%B4%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4.png)
VPN을 통해 모든 트래픽을 리디렉션하고 싶지만 전혀 작동하지 않습니다.
섬기는 사람:RT-N16 [TomatoUSB v1.28.0000 MIPSR2-112 K26 USB AIO]
고객: 우분투 14.04.1
서버 구성:
# 자동으로 생성된 구성 악마 서버 10.8.0.0 255.255.255.0 원시 TCP 서버 포트 9999 tun21 개발 비밀번호AES-256-CBC 비교번호 활동적으로 지내기 15 60 동사 3 "경로 192.168.1.0 255.255.255.0"을 누릅니다. "dhcp -options DNS 192.168.1.1" 푸시 "리디렉션 게이트웨이 def1"을 누르십시오. ca.crt DH-PEM 인증서 서버.crt 키서버.키 상태 버전 2 상태 상태 # 사용자 정의 구성(이 부분이 주요 수정 사항인 것 같습니다): 고객 대 고객 "comp-lzo"를 누르세요. "리디렉션 게이트웨이"를 누르세요.
서버: ( iptables -L -t nat -n
그냥 POSTROUTING 출력 체인)
체인 POSTROUTING(정책 승인) 대상 보호 선택 소스 대상 모두 변장 -- 0.0.0.0/0 0.0.0.0/0 SNAT 모두 -- 192.168.1.0/24 192.168.1.0/24 ~: 192.168.1.1
서버 로그:
2월 4일 21:19:38 r daemon.notice openvpn[1072]: [AF_INET]192.168.1.4:58170과 TCP 연결 설정 중 2월 4일 21:19:39 r daemon.notice openvpn[1072]: 192.168.1.4:58170 TLS: [AF_INET]의 초기 패킷 192.168.1.4:58170, sid=00fe6a02 33820233 2월 4일 21:19:39 r daemon.notice openvpn[1072]: 192.168.1.4:58170 확인 정상: XXXXXXXXXXXXXXXXXX 2월 4일 21:19:39 r daemon.notice openvpn[1072]: 192.168.1.4:58170 확인 정상: XXXXXXXXXXXXXXXXXX 2월 4일 21:19:40 r daemon.notice openvpn[1072]: 192.168.1.4:58170 데이터 채널 암호화: 256비트 키로 초기화된 암호 "AES-256-CBC" 2월 4일 21:19:40 r daemon.notice openvpn[1072]: 192.168.1.4:58170 데이터 채널 암호화: 160비트 메시지 해시 "SHA1"을 사용한 HMAC 인증 2월 4일 21:19:40 r daemon.notice openvpn[1072]: 192.168.1.4:58170 데이터 채널 복호화: 256비트 키를 사용하여 비밀번호 "AES-256-CBC" 초기화 2월 4일 21:19:40 r daemon.notice openvpn[1072]: 192.168.1.4:58170 데이터 채널 복호화: 160비트 메시지 해시 "SHA1"을 사용한 HMAC 인증 2월 4일 21:19:40 r daemon.notice openvpn[1072]: 192.168.1.4:58170 제어 채널: TLSv1, 비밀번호 TLSv1/SSLv3 DHE-RSA-AES256-SHA, 2048비트 RSA 2월 4일 21:19:40 r daemon.notice openvpn[1072]: 192.168.1.4:58170 [클라이언트] [AF_INET] 192.168.1.4:58170을 사용하여 피어 연결 시작 2월 4일 21:19:40 r daemon.notice openvpn[1072]: client/192.168.1.4:58170 MULTI_sva: 풀에서 IPv4=10.8.0.6, IPv6=(활성화되지 않음)을 반환했습니다. 2월 4일 21:19:40 r daemon.notice openvpn[1072]: client/192.168.1.4:58170 MULTI: 학습: 10.8.0.6 -> client/192.168.1.4:58170 2월 4일 21:19:40 r daemon.notice openvpn[1072]: client/192.168.1.4:58170 MULTI: client/192.168.1.4:58170: 기본 가상 IP 10.8.0.6 2월 4일 21:19:43 r daemon.notice openvpn[1072]: client/192.168.1.4:58170 PUSH: 수신된 제어 메시지: 'PUSH_REQUEST' 2월 4일 21:19:43 r daemon.notice openvpn[1072]: client/192.168.1.4:58170 send_push_reply(): safe_cap=940 2월 4일 21:19:43 r daemon.notice openvpn[1072]: client/192.168.1.4:58170 SENT CONTROL [클라이언트]: 'PUSH_REPLY,route 192.168.1.0 255.255.255.0,dhcp-option DNS 192.168.1.1, 리디렉션- 게이트웨이 def1, 경로 10.8.0.1, 토폴로지 net30, ping 15, ping-restart 60, ifconfig 10.8.0.6 10.8.0.5'(상태 = 1)
클라이언트 구성:
고객 원격 192.168.1.1 9999 ca.crt 인증서 클라이언트.crt 키클라이언트.키 비밀번호AES-256-CBC 카파툰 원시TCP 노바인더 인증 노캐시 스크립트 보안 2 영구 키 주장하다 사용자 없음 그룹 그룹 없음
클라이언트: ( netstat -nr
VPN 활성화됨):
커널 IP 라우팅 테이블 대상 게이트웨이 Genmask 플래그 MSS 창 irtt Iface 0.0.0.0 10.8.0.5 128.0.0.0 UG 0 0 0 tun0 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 wlan0 10.8.0.1 10.8.0.5 255.255.255.255 윽 0 0 0 tun0 10.8.0.5 0.0.0.0 255.255.255.255 어 0 0 0 tun0 128.0.0.0 10.8.0.5 128.0.0.0UG 0 0 0 tun0 192.168.1.0 10.8.0.5 255.255.255.0 UG 0 0 0 tun0 192.168.1.0 0.0.0.0 255.255.255.0 유 0 0 0 wlan0 192.168.1.1 192.168.1.1 255.255.255.255 윽 0 0 0 wlan0
클라이언트 로그:
Wed Feb 4 21:32:24 2015 OpenVPN 2.3.2 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [eurephia] [MH] [IPv6] 2014년 12월 1일 구축 2015년 2월 4일 수요일 21:32:24 경고: 서버 인증서 확인 방법이 활성화되지 않았습니다. 자세한 내용은 http://openvpn.net/howto.html#mitm을 참조하세요. 2015년 2월 4일 수요일 21:32:24 참고: UID/GID 다운그레이드는 --client, --pull 또는 --up-delay에 의해 지연됩니다. 2015년 2월 4일 수요일 21:32:24 [AF_INET]192.168.1.1:9999 [nonblock]과 TCP 연결 설정을 시도했습니다. 2015년 2월 4일 수요일 21:32:25에 [AF_INET]192.168.1.1:9999와 TCP 연결을 설정했습니다. 2월 4일 수요일 21:32:25 2015 TCPv4_CLIENT 로컬 링크: [undef] 2015년 2월 4일 수요일 21:32:25 TCPv4_CLIENT 링크 원격: [AF_INET]192.168.1.1:9999 Wed Feb 4 21:32:26 2015 [zais.dnsd.me] [AF_INET]192.168.1.1:9999를 사용하여 피어 연결 시작 2015년 2월 4일 수요일 21:32:29 TUN/TAP 장치 tun0이 열렸습니다. 2월 4일 수요일 21:32:29 2015 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0 2015년 2월 4일 수요일 21:32:29 /sbin/ip 링크 설정 dev tun0 up mtu 1500 2월 4일 수요일 21:32:29 2015 /sbin/ip 주소 추가 dev tun0 로컬 10.8.0.6 피어 10.8.0.5 2월 4일 수요일 21:32:29 2015 GID가 그룹 없음으로 설정됨 2015년 2월 4일 수요일 21:32:29 UID가 없음으로 설정됨 2015년 2월 4일 수요일 21:32:29 초기화 시퀀스 완료 2015년 2월 4일 수요일 21:32:43 TUN/TAP 쓰기: 잘못된 매개변수(코드=22) 2015년 2월 4일 수요일 21:32:58 TUN/TAP 쓰기: 잘못된 매개변수(코드=22) 2015년 2월 4일 수요일 21:33:13 TUN/TAP 쓰기: 잘못된 매개변수(코드=22) 2015년 2월 4일 수요일 21:33:28 TUN/TAP 쓰기: 잘못된 매개변수(코드=22)
고쳐 쓰다:도와 주셔서 감사합니다. VPN이 현재 작동 중입니다(어떻게 작동하는지 확실하지 않지만 실제로 작동하려면 연결 후 약 5분 정도 기다려야 합니다. CPU/MEM이 충분하지 않은 등 라우터의 제한 때문일 수 있습니다).
답변1
어떤 이유로 터널이 열려 있는 동안 클라이언트는 현재 기본 경로를 삭제할 수 없으므로 라우팅 테이블에 두 개의 기본 경로가 생성됩니다.
터널이 나타나기 전에 현재 경로에 대해 더 낮은 메트릭(더 높은 숫자)을 지정하기만 하면 됩니다. Route -n 명령을 사용하여 측정항목을 볼 수 있습니다.
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.4.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.3.0 10.8.1.2 255.255.255.0 UG 0 0 0 tun0
9.15.64.0 0.0.0.0 255.255.252.0 U 0 0 0 eth0
0.0.0.0 9.15.64.1 0.0.0.0 UG 0 0 0 eth0
예를 들어, WLAN 인터페이스의 메트릭은 20이고 터널 경로의 메트릭은 0입니다. 귀하의 교통은 모두 터널을 따라 라우팅됩니다.
인터페이스에서 메트릭을 구성하려면 /etc/sysconfig/network-scripts 디렉터리에서 wlan 인터페이스 파일을 열고 METRIC=20이라는 매개변수를 추가하면 됩니다.
이 작업이 가능해야 합니다. 나중에 Route -n 명령을 사용하여 확인하십시오.
고쳐 쓰다:
이제 올바른 기본 경로가 있으므로 tcpdump 및 ping을 사용하여 문제를 해결할 차례입니다. 예를 들어, 다음 명령을 시도하고 원격 네트워크에 대해 몇 가지 ping을 수행해 보십시오.
# tcpdump -i tun0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 65535 bytes
09:59:13.591764 IP 192.168.4.190 > 192.168.3.1: ICMP echo request, id 3154, seq 4, length 64
09:59:13.681290 IP 192.168.3.1 > 192.168.4.190: ICMP echo reply, id 3154, seq 4, length 64
09:59:14.592829 IP 192.168.4.190 > 192.168.3.1: ICMP echo request, id 3154, seq 5, length 64
09:59:14.680878 IP 192.168.3.1 > 192.168.4.190: ICMP echo reply, id 3154, seq 5, length 64
내 생각엔 에코 요청은 볼 수 있지만 에코 응답은 볼 수 없을 것 같습니다. 이는 원격 끝점이 패킷을 다시 라우팅하지 않음을 의미합니다. 또한 서버 구성 파일에서 라우팅을 수정해야 합니다.
업데이트 2
클라이언트가 터널을 통해 패킷을 라우팅하고 있다는 것이 tcpdump에서 분명하므로 문제는 패킷을 다시 라우팅하지 않는 원격 측에 있습니다.
listening on tun0, link-type RAW (Raw IP), capture size 65535 bytes
09:19:28.964361 IP 10.8.0.6.57394 > 192.168.1.1.domain: 60317+ A? daisy.ubuntu.com.localdomain. (46)
09:19:28.964382 IP 10.8.0.6.57394 > 8.8.8.8.domain: 60317+ A? daisy.ubuntu.com.localdomain. (46)
09:19:28.964398 IP 10.8.0.6.57394 > 8.8.4.4.domain: 60317+ A? daisy.ubuntu.com.localdomain. (46)
라우팅 테이블에 무슨 일이 일어나고 있는지 확인하려면 각 홉을 확인해야 합니다. 192.168.1.1부터 시작됩니다. 10.8.0.6으로 전송된 패킷을 어디로 라우팅할지 알고 있습니까?