Ubuntu Linux에서 VPN을 통한 모든 트래픽 라우팅


13

문제 해결을 위해이 사이트와 다른 사이트에서 잠재적 인 솔루션을 트롤링하는 데 몇 시간을 소비 한 후 더 나은 조언을 구걸하려고 사임합니다. 대학의 Cisco VPN을 통해 Ubuntu 인스턴스의 모든 네트워크 트래픽을 라우팅하려고합니다. 내장 된 네트워크 관리자 또는 vpnc를 사용하여 VPN에 성공적으로 연결하고 VPN을 통해 모든 대학 IP로 트래픽을 성공적으로 라우팅 할 수 있습니다. 그러나 이러한 특정 IP 범위를 제외하고는 VPN을 통해 모든 네트워크 트래픽을 성공적으로 매핑하는 경로를 사용할 수 없습니다.

지금까지 시도했습니다.

경로 추가 -net 0.0.0.0 gw homeportal dev tun0
경로 추가 -net 0.0.0.0 tun0
경로 추가 -net 0.0.0.0 gw 128.122.252.77 dev tun0
경로 추가 -net 0.0.0.0 gw 128.122.252.77 dev eth0
iptables-앞으로 -o tun0 -j 수락
iptables-전진 -i tun0 -j 수락
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

그리고 다른 많은 어리 석고 비 효과적인 것들로, 내가 정확하게 기억하기에 충분히 기억할 수없는 것들.

또한 더 작은 IP 범위와 특정 IP를 사용할 수 없도록 라우팅하려고했습니다. 내가 관찰 할 수 있었던 영향의 정도는 이름 확인 실패와 VPN을 통해 트래픽을 라우팅하지 못하기 때문에 무엇이 잘못되고 있는지 확실하지 않습니다. 내가 여기서 뭘 잘못하고 있니?

편집하다-

다음은 ip route showVPNC와의 VPN 연결을 시작한 후의 출력입니다 .

192.168.1.254 dev eth0 proto static을 통한 기본값 
10.0.0.0/8 dev tun0 범위 링크 
91.230.41.0/24 dev tun0 범위 링크 
128.122.0.0/16 dev tun0 범위 링크 
128.122.252.68 via 192.168.1.254 dev eth0 src 192.168.1.32 
128.122.253.46 dev tun0 범위 링크 
128.122.253.79 dev tun0 범위 링크 
172.16.0.0/12 dev tun0 범위 링크 
192.168.0.0/16 dev tun0 범위 링크 
192.168.1.0/24 dev eth0 프로토 커널 범위 링크 src 192.168.1.32 메트릭 1 
193.175.54.0/24 dev tun0 범위 링크 
193.205.158.0/25 dev tun0 범위 링크 
193.206.104.0/24 dev tun0 범위 링크 
195.113.94.0/24 dev tun0 범위 링크 
203.126.200.0/24 dev tun0 범위 링크 
203.174.165.128/25 dev tun0 범위 링크 
212.219.93.0/24 dev tun0 범위 링크 
216.165.0.0/17 dev tun0 범위 링크

추가 정보-

기본 구성으로 Cisco AnyConnect 클라이언트를 통해 MS Windows에서이 VPN을 통해 임의 트래픽을 성공적으로 라우팅했습니다. 다음은 AnyConnect 클라이언트가 작동 중일 때 라우팅 테이블의 모습입니다 (192.168.1.254에서 동일한 라우터 뒤에있는 다른 컴퓨터).

IPv4 라우팅 테이블
===================================================== ==========================
활성 경로 :
네트워크 대상 넷 마스크 게이트웨이 인터페이스 메트릭
          0.0.0.0 0.0.0.0 192.168.1.254 192.168.1.13 30
         10.0.0.0 255.0.0.0 192.168.128.1 192.168.128.197 2
      91.230.41.0 255.255.255.0 192.168.128.1 192.168.128.197 2
        127.0.0.0 255.0.0.0 온 링크 127.0.0.1 306
        127.0.0.1 255.255.255.255 온 링크 127.0.0.1 306
  127.255.255.255 255.255.255.255 온 링크 127.0.0.1 306
      128.122.0.0 255.255.0.0 192.168.128.1 192.168.128.197 2
   128.122.252.68 255.255.255.255 192.168.1.254 192.168.1.13 31
       172.16.0.0 255.240.0.0 192.168.128.1 192.168.128.197 2
      192.168.0.0 255.255.0.0 192.168.128.1 192.168.128.197 2
      192.168.1.0 255.255.255.0 온 링크 192.168.1.13 286
     192.168.1.13 255.255.255.255 온 링크 192.168.1.13 286
    192.168.1.254 255.255.255.255 온 링크 192.168.1.13 31
    192.168.1.255 255.255.255.255 온 링크 192.168.1.13 286
     192.168.31.0 255.255.255.0 온 링크 192.168.31.1 276
     192.168.31.1 255.255.255.255 온 링크 192.168.31.1 276
   192.168.31.255 255.255.255.255 온 링크 192.168.31.1 276
    192.168.128.0 255.255.255.0 온 링크 192.168.128.197 257
  192.168.128.197 255.255.255.255 온 링크 192.168.128.197 257
  192.168.128.255 255.255.255.255 온 링크 192.168.128.197 257
    192.168.203.0 255.255.255.0 온 링크 192.168.203.1 276
    192.168.203.1 255.255.255.255 온 링크 192.168.203.1 276
  192.168.203.255 255.255.255.255 온 링크 192.168.203.1 276
     193.175.54.0 255.255.255.0 192.168.128.1 192.168.128.197 2
    193.205.158.0 255.255.255.128 192.168.128.1 192.168.128.197 2
    193.206.104.0 255.255.255.0 192.168.128.1 192.168.128.197 2
     195.113.94.0 255.255.255.0 192.168.128.1 192.168.128.197 2
    203.126.200.0 255.255.255.0 192.168.128.1 192.168.128.197 2
  203.174.165.128 255.255.255.128 192.168.128.1 192.168.128.197 2
     212.219.93.0 255.255.255.0 192.168.128.1 192.168.128.197 2
      216.165.0.0 255.255.128.0 192.168.128.1 192.168.128.197 2
        224.0.0.0 240.0.0.0 온 링크 127.0.0.1 306
        224.0.0.0 240.0.0.0 온 링크 192.168.1.13 286
        224.0.0.0 240.0.0.0 온 링크 192.168.203.1 276
        224.0.0.0 240.0.0.0 온 링크 192.168.31.1 276
        224.0.0.0 240.0.0.0 온 링크 192.168.128.197 10000
  255.255.255.255 255.255.255.255 온 링크 127.0.0.1 306
  255.255.255.255 255.255.255.255 온 링크 192.168.1.13 286
  255.255.255.255 255.255.255.255 온 링크 192.168.203.1 276
  255.255.255.255 255.255.255.255 온 링크 192.168.31.1 276
  255.255.255.255 255.255.255.255 온 링크 192.168.128.197 10000
===================================================== ==========================

나는 네트워크 라우팅이 나에게 새로운 것이 분명 할 것이라고 생각한다. 그래서 나는 대답에서 상당히 높은 수준의 자세한 정보에 감사 할 것이다.
deftfyodor

1
클라이언트 (anyconnect?)를 사용 중인지 여부를 설명하고 라우팅 테이블을 게시 할 수 있으면 도움이 될 것입니다.
MariusMatutiae

그런데을 사용하여 그렇게 ip route하십시오.
user1686

2
예, 더 이상 사용되지 않는 라우팅 명령을 사용하지 마십시오 . 라우팅 테이블에 ip route show 를 사용 하십시오. 더 이상 사용되지 않는 명령은 VLAN뿐만 아니라 VPN에서도 가능하고 유용한 일부 복잡성을 숨 깁니다.
MariusMatutiae

@grawity, @MariusMatutiae-물론, 명령 출력으로 질문을 편집했습니다. ip route명령 을 언급 해 주셔서 감사합니다 . 전에는 실행하지 않았습니다.
deftfyodor

답변:


3

라우팅 테이블에 다음 줄이 표시된대로 로컬 네트워크는 192.168.1.0/24입니다.

 192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.32  metric 1

이 줄에 표시된 것처럼 VPN 네트워크는 10.0.0.0/8입니다.

 10.0.0.0/8 dev tun0  scope link 

현재 기본 라우터는 다음과 같습니다.

 default via 192.168.1.254 dev eth0  proto static 

물론 로컬 LAN에 속하기 때문에 원하지 않는 것입니다. 따라서 VPN이 존재하지 않는 것처럼 모든 항목이 로컬 게이트웨이를 통해 라우팅됩니다.

 You do have however, the all-important statement

 128.122.252.68 via 192.168.1.254 dev eth0  src 192.168.1.32  

VPN 제공 업체로 연결되는 경로입니다.

편집하다:

라우팅 테이블이 사용자 개입없이 VPN에서 얻은 것임을 알지 못했습니다. 이는 서비스 제공 업체가 인터페이스 tun0을 통해 테이블에 명시 적으로 허용 된 트래픽 만 전달할 의사가 있음을 간접적으로 나타낼 수 있으며 다른 모든 트래픽을 차단하기 위해 추가 단계를 수행했을 수 있습니다.

그러나 서비스 제공 업체가 모든 트래픽을 기꺼이 전달한다고 가정하면 다음을 수행해야합니다.

먼저 IP 주소가 필요하기 때문에 상대방의 연결을 기꺼이 수락 할 게이트웨이가 있는지 확인해야합니다. 이 작업을 수행하는 네 가지 방법을 알려 드리겠습니다.

1) PC가 VPN에 연결된 상태에서 다음 명령을 시도하십시오.

   sudo dhclient -v tun0

모든 것이 잘 진행되면 다음 줄이 포함 된 회신이 표시됩니다.

 DHCPOFFER of a.b.c.d from x.y.w.z

xywz는 로컬 게이트웨이의 IP 주소입니다. 이 테스트 후 VPN을 종료해야 할 수도 있고 PC를 재부팅해야 할 수도 있습니다. 라우팅 테이블을 매우 엉망으로 만들었 기 때문입니다.

2) 또는 허용 된 사이트 중 하나 ( tun0 인터페이스를 통해 라우팅 테이블에 나타나는 사이트)로 이동 한 후 다음 명령을 실행할 수 있습니다 .

  ip neigh show

MAC 및 IP 주소와 함께 ARP 프로토콜을 통해 연결된 PC 목록을 가져와야합니다. 대부분 0 개 또는 1 개의 회신을받습니다. 답장을 받으면 이것이 라우터입니다.

3) 당신이 그런 대답을 얻지 못하면, 당신은 시도 할 수 있습니다

  sudo nmap -sn 10.0.0.0/8

(매우 느려질 것입니다). 게이트웨이는 나열된 PC 중 하나 이며, 주소가 .1 또는 .254로 끝나는 경우가 많습니다.

4) tcpdump 명령을 사용하십시오 :

  sudo tcpdump -n -i tun0

명령에 의해 분출 된 IP 주소를 참조하십시오.

이 테스트에 대한 적절한 응답을 얻지 못하면 누군가가 네트워크의 나사를 실제로 조였다는 의미입니다.

그러나 낙관적이며 원격 라우터에 대한 후보 IP 주소 xwyz가 있다고 가정합니다. 기본 게이트웨이를 삭제해야합니다 (sudo!).

  ip route del default via 192.168.1.254

새로운 것을 추가하십시오 :

  ip route add default via x.w.y.z 

탐색을 시도하십시오.

반복하겠습니다 : 서비스 제공 업체가 VPN을 통해 선택된 일부 IP 주소로만 트래픽을 허용했기 때문에 스마트 사용자가 VPN을 통해 일반 트래픽을 강제로 막지 않도록 추가 조치 (방화벽)를 취할 수 있습니다. 이 경우 수행 할 수있는 작업이 없습니다. 그러나 그렇지 않은 경우 위의 단계는 솔루션을 찾는 데 도움이됩니다.


매우 정교하게 답변 해 주셔서 감사합니다. 그러나 하반기에 들어 서면 약간의 흥미가 있습니다. 피어 주소가없는 ip addr show dev tun0reads 의 출력 10: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1412 qdisc pfifo_fast state UNKNOWN group default qlen 500 link/none inet 192.168.128.193/24 brd 192.168.128.255 scope global tun0 valid_lft forever preferred_lft forever또한 이전에 게시 한 라우팅 테이블은 전혀 수정되지 않았습니다. 전적으로 VPN 클라이언트에 의해 생성되었습니다.
deftfyodor

@deftfyodor 내 편집 내용을 참조하십시오.
MariusMatutiae

tcpdump 명령을 사용하여 실제로 게이트웨이를 식별하고 기본 트래픽을 게이트웨이로 라우팅 할 수있었습니다. 안타깝게도 여전히 프로비저닝 된 IP 범위에서만 작동합니다. 필자는 AnyConnect 클라이언트를 사용하여 MS Windows에서 동일한 VPN을 통해 임의의 트래픽을 라우팅하는 데 아무런 문제가 없으므로 분명히 더 많은 이야기가 있어야합니다.
deftfyodor 2009 년

@deftfyodor Windos의 라우팅 테이블이 Linux의 라우팅 테이블과 다른지 확인할 수 있습니까?
MariusMatutiae

VPN과 게이트웨이를 인터페이스로 유지하면서 0.0.0.0이 내 네트워크 라우터를 통해 게이트웨이로 라우팅되도록 설정되어 있지만 일반적으로 비슷합니다. Windows 라우팅 테이블을 표시하도록 질문을 편집했습니다.
deftfyodor

3

모든 route명령에 넷 마스크가 없으므로 0.0.0.0전체 인터넷이 아닌 특정 주소 와 만 일치합니다 . 그래서 대신 0.0.0.00.0.0.0/0당신이 시도한 첫 번째 명령에서 :

ip route add -net 0.0.0.0/0 gw homeportal dev tun0

VPN 클라이언트가 자체적으로 해결하는지 확실하지 않은 한 가지 경고가있을 수 있습니다. 터널 끝점은 VPN을 통해 라우팅되는 것을 제외해야하며 eth0인터페이스 를 통해 라우팅되어야합니다 . 따라서이 기본 경로를 추가하면 VPN이 중단되면 VPN 끝점에 대한 특정 경로를 추가하십시오.

ip route add <ENDPOINT>/32 dev eth0


2
나는 두 번째가되어야한다고 생각한다 ip route. 또한 넷 마스크를 추가하는 것이 항상 좋은 생각 route
이지만
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.