Định tuyến tất cả lưu lượng truy cập qua VPN trên Ubuntu Linux


11

Sau khi đã dành hàng giờ để khắc phục sự cố, truy tìm các giải pháp tiềm năng trên trang web này và các trang web khác, và tôi xin nghỉ việc để xin lời khuyên của người dùng. Tôi đang làm việc để định tuyến tất cả lưu lượng truy cập mạng trên một phiên bản Ubuntu qua Cisco VPN tại một trường đại học. Sử dụng trình quản lý mạng tích hợp hoặc vpnc, tôi có thể thiết lập thành công kết nối với VPN và có thể định tuyến thành công lưu lượng truy cập đến bất kỳ IP trường đại học nào qua VPN. Tuy nhiên, ngoài các phạm vi IP cụ thể đó, tôi dường như không thể gợi ra bất kỳ tuyến đường nào sẽ ánh xạ thành công tất cả lưu lượng truy cập mạng qua VPN.

Cho đến nay, tôi đã cố gắng:

tuyến đường thêm -net 0.0.0.0 gw homeportal dev tun0
tuyến đường thêm -net 0.0.0.0 tun0
tuyến đường thêm -net 0.0.0.0 gw 128.122.252.77 dev tun0
tuyến đường thêm -net 0.0.0.0 gw 128.122.252.77 dev eth0
iptables -A FORWARD -o tun0 -j CHẤP NHẬN
iptables -A FORWARD -i tun0 -j CHẤP NHẬN
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

Và nhiều điều ngớ ngẩn khác, không hiệu quả, những điều mà tôi không thể nhớ đủ để phiên âm chính xác.

Ngoài ra, tôi đã thử định tuyến các dải IP nhỏ hơn và các IP cụ thể, từng IP đều không có kết quả. Tôi không thực sự chắc chắn điều gì đang xảy ra, vì mức độ ảnh hưởng mà tôi có thể quan sát được là sự thất bại của độ phân giải tên và lỗi định tuyến lưu lượng truy cập qua VPN. Tôi làm gì sai ở đây?

Chỉnh sửa-

Đây là đầu ra của ip route showsau khi bắt đầu kết nối VPN với VPNC:

mặc định thông qua 192.168.1.254 dev eth0 proto tĩnh 
Liên kết phạm vi 10.0.0.0/8 dev tun0 
Liên kết phạm vi 91.230.41.0/24 dev tun0 
128.122.0.0/16 dev tun0 phạm vi liên kết 
128.122.252,68 qua 192.168.1.254 dev eth0 src 192.168.1.32 
128.122.253.46 dev tun0 phạm vi liên kết 
128.122.253.79 dev liên kết phạm vi dev0 
172.16.0.0/12 dev tun0 phạm vi liên kết 
Liên kết phạm vi 192.168.0.0/16 dev tun0 
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.32 metric 1 
193.175.54.0/24 dev tun0 phạm vi liên kết 
193.205.158.0/25 dev tun0 phạm vi liên kết 
193.206.104.0/24 dev tun0 phạm vi liên kết 
195.113.94.0/24 dev tun0 phạm vi liên kết 
203.126.200.0/24 dev tun0 phạm vi liên kết 
203.174.165.128/25 dev tun0 phạm vi liên kết 
Liên kết phạm vi 212.219.93.0/24 dev tun0 
216.165.0.0/17 dev tun0 phạm vi liên kết

Thêm thông tin-

Tôi đã định tuyến thành công lưu lượng tùy ý qua VPN này trong MS Windows thông qua ứng dụng khách Cisco AnyConnect với cấu hình mặc định. Đây là bảng định tuyến trông như thế nào khi máy khách AnyConnect đang hoạt động (đây là một máy tính khác phía sau cùng một bộ định tuyến ở 192.168.1.254).

Bảng định tuyến IPv4
================================================== =========================
Các tuyến hoạt động:
Số liệu giao diện mạng Netmask Gateway
          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 Liên kết 127.0.0.1 306
        127.0.0.1 255.255.255.255 On-link 127.0.0.1 306
  127.255.255.255 255.255.255.255 Liên kết 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 Liên kết 192.168.1.13 286
     192.168.1.13 255.255.255.255 Liên kết 192.168.1.13 286
    192.168.1.254 255.255.255.255 Liên kết 192.168.1.13 31
    192.168.1.255 255.255.255.255 Liên kết 192.168.1.13 286
     192.168.31.0 255.255.255.0 Liên kết 192.168.31.1 276
     192.168.31.1 255.255.255.255 Liên kết 192.168.31.1 276
   192.168.31.255 255.255.255.255 Liên kết 192.168.31.1 276
    192.168.128.0 255.255.255.0 Liên kết 192.168.128.197 257
  192.168.128.197 255.255.255.255 Liên kết 192.168.128.197 257
  192.168.128.255 255.255.255.255 Liên kết 192.168.128.197 257
    192.168.203.0 255.255.255.0 Liên kết 192.168.203.1 276
    192.168.203.1 255.255.255.255 Liên kết 192.168.203.1 276
  192.168.203.255 255.255.255.255 Liên kết 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 Liên kết 127.0.0.1 306
        224.0.0.0 240.0.0.0 Liên kết 192.168.1.13 286
        224.0.0.0 240.0.0.0 Liên kết 192.168.203.1 276
        224.0.0.0 240.0.0.0 Liên kết 192.168.31.1 276
        224.0.0.0 240.0.0.0 Liên kết 192.168.128.197 10000
  255.255.255.255 255.255.255.255 Liên kết 127.0.0.1 306
  255.255.255.255 255.255.255.255 Liên kết 192.168.1.13 286
  255.255.255.255 255.255.255.255 Liên kết 192.168.203.1 276
  255.255.255.255 255.255.255.255 Liên kết 192.168.31.1 276
  255.255.255.255 255.255.255.255 Liên kết 192.168.128.197 10000
================================================== =========================

Tôi tưởng tượng rằng sẽ rõ ràng rằng định tuyến mạng là khá mới đối với tôi, vì vậy tôi sẽ đánh giá cao mức độ chi tiết khá cao trong các câu trả lời.
deftfyodor

1
Sẽ rất hữu ích nếu bạn có thể nói rõ bạn có đang sử dụng bất kỳ ứng dụng khách nào không (anyconnect?) Và nếu bạn có thể đăng bảng định tuyến của mình, cảm ơn bạn.
MariusMatutiae

Bằng cách này ip route, bằng cách sử dụng .
grawity

2
Có, vui lòng không sử dụng các lệnh định tuyến lỗi thời: sử dụng ip route show cho bảng định tuyến. Các lệnh lỗi thời che giấu một số sự phức tạp có thể và cũng hữu ích với VPN, chứ đừng nói đến Vlan, ...
MariusMatutiae

@grawity, @MariusMatutiae - Chắc chắn rồi, tôi đã chỉnh sửa câu hỏi với đầu ra lệnh. Cảm ơn vì đã đề cập đến ip routelệnh, tôi đã không chạy qua nó trước đó.
deftfyodor

Câu trả lời:


2

Mạng cục bộ của bạn là 192.168.1.0/24, như được hiển thị bởi dòng này trong bảng định tuyến của bạn:

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

Mạng VPN của bạn là 10.0.0.0/8, như được hiển thị bởi dòng này:

 10.0.0.0/8 dev tun0  scope link 

Hiện tại, bộ định tuyến mặc định của bạn là:

 default via 192.168.1.254 dev eth0  proto static 

tất nhiên đó là những gì bạn không muốn, vì nó thuộc về mạng LAN cục bộ của bạn: do đó tất cả nội dung của bạn được chuyển qua cổng cục bộ của bạn, như thể VPN không tồn tại.

 You do have however, the all-important statement

 128.122.252.68 via 192.168.1.254 dev eth0  src 192.168.1.32  

đó là tuyến đường đến nhà cung cấp VPN của bạn.

CHỈNH SỬA:

Tôi đã không nhận ra rằng bảng định tuyến chỉ đơn giản là bảng được lấy từ VPN của bạn mà không cần sự can thiệp của bạn. Điều này có thể chỉ ra (một cách gián tiếp) rằng nhà cung cấp dịch vụ của bạn sẵn sàng chỉ chuyển tiếp lưu lượng truy cập được phép rõ ràng trong bảng của bạn thông qua giao diện tun0 và có thể đã thực hiện các bước tiếp theo để chặn tất cả lưu lượng truy cập khác, trong trường hợp đó, nỗ lực của bạn sẽ vô ích.

Tuy nhiên, giả sử rằng nhà cung cấp của bạn sẵn sàng chuyển tiếp tất cả lưu lượng truy cập của bạn, điều bạn cần làm là như sau.

Trước tiên, bạn cần tìm hiểu xem có một cổng sẵn sàng chấp nhận kết nối của bạn ở phía bên kia không, bởi vì chúng tôi cần địa chỉ IP của nó. Tôi sẽ cung cấp cho bạn bốn phương pháp để làm điều này.

1) Với máy tính được kết nối với VPN, hãy thử lệnh sau:

   sudo dhclient -v tun0

Nếu mọi thứ suôn sẻ, bạn sẽ thấy một câu trả lời có chứa dòng này:

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

xywz là địa chỉ IP của cổng cục bộ. Bạn có thể phải tắt VPN sau khi thử nghiệm này và thậm chí có thể khởi động lại máy tính của bạn, bởi vì chúng tôi sẽ làm rối bảng định tuyến khá tốt.

2) Ngoài ra, bạn có thể thử điều hướng đến một trong những trang web được phép (những trang web xuất hiện trong bảng định tuyến của bạn khi đi qua giao diện tun0 ), sau đó ban hành lệnh:

  ip neigh show

Bạn sẽ nhận được một danh sách các chiếc được liên lạc thông qua giao thức ARP, với địa chỉ MAC và IP; rất có thể, bạn sẽ nhận được không hoặc một câu trả lời. Nếu bạn nhận được một câu trả lời, thì đó là bộ định tuyến của bạn.

3) Nếu bạn không nhận được trả lời như vậy, thì bạn có thể thử với

  sudo nmap -sn 10.0.0.0/8

(sẽ rất chậm). Cổng của bạn sẽ là một trong những chiếc được liệt kê, rất có thể là cái có địa chỉ kết thúc bằng .1 hoặc .254, nếu có tồn tại.

4) Sử dụng lệnh tcpdump:

  sudo tcpdump -n -i tun0

và xem các địa chỉ IP được phun ra bằng lệnh.

Nếu bạn không nhận được câu trả lời thích hợp cho bài kiểm tra này, điều đó có nghĩa là ai đó đã thực sự thắt chặt các ốc vít trong mạng của anh ta.

Nhưng hãy để chúng tôi lạc quan, và giả sử bây giờ bạn có một địa chỉ IP ứng cử viên xwyz cho bộ định tuyến từ xa. Bạn sẽ cần xóa cổng mặc định, (như sudo!):

  ip route del default via 192.168.1.254

thêm một cái mới:

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

và cố gắng điều hướng.

Tôi xin nhắc lại: vì nhà cung cấp của bạn chỉ cho phép lưu lượng truy cập đến một vài địa chỉ IP được chọn thông qua VPN của anh ấy, nên có thể anh ấy đã thực hiện các biện pháp bổ sung (= tường lửa) để ngăn người dùng thông minh buộc lưu lượng truy cập chung của mình thông qua VPN. Trong trường hợp này, không có gì bạn có thể làm. Nhưng nếu anh ta không làm, các bước trên sẽ giúp bạn tìm ra giải pháp.


Cảm ơn bạn đã trả lời rất công phu, tuy nhiên bước vào nửa sau, tôi gặp một chút trục trặc. đầu ra của các lần ip addr show dev tun0đọc 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, không có địa chỉ ngang hàng nào được quan sát. Ngoài ra, bảng định tuyến tôi đã đăng trước đó hoàn toàn không được tôi sửa đổi - nó được tạo hoàn toàn bởi ứng dụng khách vpn.
deftfyodor

@deftfyodor Vui lòng xem chỉnh sửa của tôi.
MariusMatutiae

Sử dụng lệnh tcpdump, tôi thực sự có thể nhận ra cổng và định tuyến lưu lượng truy cập mặc định đến nó. Thật không may, nó vẫn chỉ hoạt động cho các dải IP được cung cấp cụ thể. Tôi chắc chắn có xu hướng tin rằng có một số biện pháp bảo mật bổ sung - tuy nhiên tôi không có vấn đề gì với tất cả lưu lượng truy cập tùy ý trên cùng một VPN trong MS Windows bằng ứng dụng khách AnyConnect - vì vậy chắc chắn phải có nhiều câu chuyện hơn.
deftfyodor

@deftfyodor Bạn có thể kiểm tra xem bảng định tuyến của bạn trong Windos có khác với bảng trong Linux không?
MariusMatutiae

Nó thường tương tự nhau, mặc dù có một số yếu tố khác nhau, cụ thể, 0.0.0.0 được đặt để định tuyến qua bộ định tuyến mạng của tôi làm cổng, giữ cổng VPN làm giao diện. Tôi đã chỉnh sửa câu hỏi để hiển thị bảng định tuyến Windows.
deftfyodor

3

Tất cả các routelệnh của bạn đều thiếu netmasks, vì vậy chúng chỉ khớp với 0.0.0.0địa chỉ cụ thể , không phải toàn bộ internet. Vì vậy, thay thế 0.0.0.0bằng 0.0.0.0/0trong lệnh đầu tiên bạn đã thử:

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

Có thể có một cảnh báo mà tôi không chắc máy khách VPN của mình có tự giải quyết hay không: điểm cuối đường hầm cần được loại trừ khỏi việc định tuyến qua VPN, nó phải được định tuyến qua eth0giao diện của bạn . Vì vậy, nếu việc thêm tuyến mặc định này phá vỡ VPN của bạn, hãy thêm một tuyến cụ thể cho điểm cuối VPN của bạn:

ip route add <ENDPOINT>/32 dev eth0


2
Tôi nghĩ rằng cái thứ hai được cho là ip route, không? Ngoài ra, trong khi nó luôn luôn là một ý tưởng tốt để thêm netmasks, nó dường nhưroutegiả / 0 khi thêm 0.0.0.0
grawity
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.