Chỉ sử dụng kết nối VPN cho các ứng dụng đã chọn


39

Tôi có quyền truy cập vào VPN và chỉ muốn sử dụng nó cho một số ứng dụng chứ không phải tất cả.

Ví dụ:
Nếu tôi kết nối với VPN, tôi chỉ muốn các ứng dụng Opera và Newsbin sử dụng kết nối VPN đó. Tất cả các ứng dụng khác, như Outlook Outlook, nên sử dụng kết nối internet thông thường (trong khi VPN được kết nối / mở).

Afaik điều này là không thể, nhưng tôi không hoàn toàn chắc chắn. Vì vậy, câu hỏi của tôi: nó có thể thực hiện được không?


Câu trả lời:


-1

Không, không. Vâng không sử dụng phương tiện bình thường. Định tuyến là định tuyến. Định tuyến hoạt động thấp hơn mô hình OSI. Những gì bạn cần xảy ra là để nó nhận thức được ở cấp độ ứng dụng (cao hơn) để nó có thể phát hiện chương trình bạn đang sử dụng, vv Các bộ định tuyến BÌNH THƯỜNG không cho phép bạn định cấu hình các tuyến dựa trên các ứng dụng hoặc số cổng.

Tôi nghĩ rằng nó có thể mặc dù. Bộ định tuyến có thể thấy các cổng để bạn có thể lọc chúng theo số cổng và gửi lưu lượng ra các tuyến khác nhau. tôi chắc chắn rằng tôi đã đọc một cái gì đó trước đây với các bộ định tuyến của Cisco có thể làm điều này. Mặc dù chúng không rẻ và chúng là các bộ định tuyến kinh doanh đòi hỏi nhiều cấu hình và tôi đoán bạn muốn một cái gì đó đơn giản để sử dụng tại nhà.

Tóm lại, bộ định tuyến sẽ cần tính năng này và các tiêu chuẩn không có thật của bạn để sử dụng tại nhà, ngay cả doanh nghiệp cũng không hỗ trợ các tính năng này. Chỉ có dòng tiên tiến của Cisco và Sonicwalls cung cấp các khả năng này.


36

Có thể thực hiện điều này, ít nhất là trên Linux (và tôi cũng đang nghĩ về BSD và OS X). Bạn có thể làm như vậy bằng cách:

  • Tạo một người dùng exra cho tất cả lưu lượng VPN.
  • Tạo bảng định tuyến bổ sung với 1 tuyến mặc định qua VPN.
  • Định cấu hình Netfilter thông qua Iptables để sử dụng bảng định tuyến khác cho tất cả lưu lượng truy cập bắt nguồn từ một ID người dùng cụ thể.
  • Chạy các ứng dụng nên sử dụng VPN theo người dùng của họ. Ví dụ với 'sudo'.

Có các kịch bản để thực hiện các bước trên ở đây hoặc có một hướng dẫn khác ở đây .

Dưới đây là hướng dẫn chi tiết để định tuyến Truyền qua VPN (sử dụng máy chủ VPN mà bạn sở hữu.


Dễ dàng hơn nhiều trên Linux: Tạo một không gian tên mạng, kết nối VPN với không gian tên đó, chạy các ứng dụng nên sử dụng không gian tên trong VPN. Bạn thậm chí có thể chạy hai bản sao của cùng một ứng dụng, một bản sử dụng VPN và một bản sử dụng kết nối trực tiếp.
dirkt

15

Bạn có thể sử dụng Tường lửa Windows để thực hiện việc này (miễn là bạn đang sử dụng Win 7 hoặc Vista) - Tôi đã viết một hướng dẫn về điều này

  1. Kết nối với VPN của bạn như bình thường.

  2. Mở Trung tâm chia sẻ và mạng - nhấp chuột phải vào biểu tượng kết nối Internet trên thanh tác vụ và chọn "Mở mạng và trung tâm chia sẻ" (xem bên dưới)

  3. Bạn sẽ thấy (ít nhất) hai mạng được liệt kê trong phần "Xem mạng hoạt động của bạn" - kết nối VPN của bạn và một mạng được gọi là "Mạng" - còn gọi là Kết nối ISP của bạn. Đảm bảo rằng VPN của bạn là "Mạng công cộng" và kết nối ISP của bạn là "Mạng gia đình". Nếu bạn cần thay đổi một trong hai kết nối, nhấp vào nó và một cửa sổ tùy chọn sẽ xuất hiện (xem bên dưới).

  4. Chuyển đến Bảng điều khiển và nhấp vào Hệ thống và Bảo mật (xem bên dưới).

  5. Trong cửa sổ kết quả, nhấp vào Tường lửa Windows (xem bên dưới).

  6. Trong cửa sổ Tường lửa của Windows, bấm vào Cài đặt nâng cao ở khung bên trái (xem bên dưới). Lưu ý: Bạn phải đăng nhập với tư cách Quản trị viên để thay đổi Cài đặt Tường lửa.

  7. Bạn sẽ thấy một cửa sổ có tiêu đề Windows Firewall với Advanced Security. Trong cửa sổ này, nhấp vào Quy tắc trong (xem bên dưới).

  8. Trên khung bên phải, bạn sẽ thấy một tùy chọn cho Quy tắc mới. Nhấp vào nó (xem bên dưới).

  9. Trong Trình hướng dẫn quy tắc mới (sẽ xuất hiện), hãy làm như sau:

    • Chọn Chương trình và nhấp vào Tiếp theo.

    • Chọn chương trình bạn muốn chặn tất cả lưu lượng truy cập ngoại trừ trên kết nối VPN và nhấp vào tiếp theo.

    • Chọn Chặn kết nối.

    • Đánh dấu tên miền và riêng tư. Hãy chắc chắn rằng Công khai không được sử dụng.

  10. Lặp lại Bước 9 cho Quy tắc đi.


11
Điều này thực sự trả lời câu hỏi? Có, điều này ngăn ứng dụng hoạt động nếu không có trên VPN, nhưng tất cả lưu lượng truy cập vẫn đi qua VPN phải không?
Jason Coyne

3
@pramble Vậy tất cả lưu lượng truy cập vẫn đi qua vpn?
nsij22

Xuất hiện để làm việc. Chỉ cần thử nghiệm nó ..
Faiz

Điều này không sửa chữa nó. Đây là một kịch bản rất đơn giản. Tôi muốn tất cả các công cụ liên quan đến công việc của tôi đi qua VPN (kết nối SQL Server, Slack, v.v.), nhưng tôi muốn trình duyệt web của mình (Facebook, Soundcloud, v.v., về cơ bản tất cả lưu lượng truy cập cổng 80) KHÔNG đi qua VPN . Windows hút nếu điều này là không thể.
Triynko

@Triynko Kịch bản của bạn khác với kịch bản mà OP yêu cầu. Sau khi kết nối với VPN, bạn chỉ có thể đặt các tuyến tương ứng cho các nội dung liên quan đến công việc của mình, tức là sử dụng cổng VPN cho tất cả các mạng con hoặc IP liên quan đến công việc. Định tuyến lưu lượng truy cập bắt nguồn từ các ứng dụng cụ thể là khó khăn hơn để đạt được.
speakr

4

Bạn có thể làm điều đó với các không gian tên mạng trên GNU / Linux.

Đây là cách chạy OpenVPN và một ứng dụng trong một không gian tên riêng biệt:

Tạo không gian tên mạng:

ip netns add myvpn

Bắt đầu giao diện loopback trong không gian tên (nếu không, nhiều thứ không hoạt động như mong đợi)

ip netns exec myvpn ip addr add 127.0.0.1/8 dev lo
ip netns exec myvpn ip link set lo up

Tạo giao diện mạng ảo cho phép OpenVPN (trong không gian tên) truy cập mạng thực và định cấu hình giao diện trong không gian tên (vpn1) để sử dụng giao diện ngoài không gian tên (vpn0) làm cổng mặc định của nó

ip link add vpn0 type veth peer name vpn1
ip link set vpn0 up
ip link set vpn1 netns myvpn up
ip addr add 10.200.200.1/24 dev vpn0
ip netns exec myvpn ip addr add 10.200.200.2/24 dev vpn1
ip netns exec myvpn ip route add default via 10.200.200.1 dev vpn1

Cho phép định tuyến IPv4 và NAT cho giao diện trong không gian tên. Vì giao diện mặc định của tôi là giao diện không dây, tôi sử dụng wl + (có thể khớp với wlan0, wlp3s0, v.v.) trong iptables cho giao diện gửi đi; nếu bạn sử dụng giao diện có dây, có lẽ bạn nên sử dụng en + (hoặc br + cho giao diện bắc cầu)

iptables -A INPUT \! -i vpn0 -s 10.200.200.0/24 -j DROP
iptables -t nat -A POSTROUTING -s 10.200.200.0/24 -o wl+ -j MASQUERADE
sysctl -q net.ipv4.ip_forward=1

Cấu hình máy chủ tên để sử dụng bên trong không gian tên

mkdir -p /etc/netns/myvpn
echo 'nameserver 8.8.8.8' > /etc/netns/myvpn/resolv.conf

Gần xong, bây giờ chúng ta nên có quyền truy cập mạng đầy đủ trong không gian tên

ip netns exec myvpn ping www.google.com

Cuối cùng bắt đầu OpenVPN trong không gian tên

ip netns exec myvpn openvpn --config /etc/openvpn/myvpn.conf

Khi tun0 xuất hiện trong không gian tên, bạn đã sẵn sàng bắt đầu chương trình bạn muốn!

while ! ip netns exec myvpn ip a show dev tun0 up; do sleep .5; done
ip netns exec myvpn sudo -u $MYSELF popcorntime

Bài viết NGUỒN.

Ngoài ra, có một kịch bản trình bao bọc trong bài viết nguồn bạn có thể điều chỉnh cho nhu cầu của mình.


3

Tôi đã làm điều này trên Windows. Ý tưởng là liên kết các gói mạng gửi đi với giao diện của VPN. Mọi người đề xuất ForceBindIP cho việc này, nhưng nhờ câu trả lời này, tôi đã có ý tưởng sử dụng proxy. Nhược điểm của phương pháp này là ứng dụng của bạn phải có hỗ trợ proxy hoặc bạn sẽ phải sử dụng proxifier (xem tại đâytại đây ). Ưu điểm là theo cách này, bạn sẽ có thể giới hạn việc sử dụng VPN trong trình duyệt ở các miền cụ thể bằng FoxyProxy hoặc các tiện ích bổ sung tương tự.

Tôi sử dụng 3proxy trong chế độ SOCKS và liên kết giao diện bên ngoài của nó với IP của VPN. OpenVPN được sử dụng cho kết nối VPN.

Trong tệp .ovpn của tôi ( client, dev tun) tôi đã thêm các dòng sau:

route-nopull
route 0.0.0.0 0.0.0.0 vpn_gateway
pull-filter ignore "dhcp-option DNS "
script-security 2
up 'c:\path\to\up.cmd'
down 'c:\path\to\down.cmd'

route-nopullđể bỏ qua các tuyến đường đẩy từ máy chủ. Trong trường hợp của bạn, bạn có thể cần phải nhận xét ra gateway-gateway thay thế.

route để thêm một tuyến đường cho giao diện này, nếu không có dòng này, nó sẽ không được sử dụng ngay cả khi ứng dụng bị ràng buộc với nó.

pull-filterđể bảo vệ DNS bị đẩy mà nếu không sẽ bị loại bỏ route-nopullcùng với các tuyến được đẩy. Tùy chọn này được hỗ trợ bắt đầu với OpenVPN 2.4, nếu bạn phải gắn bó với OpenVPN 2.3 (bản phát hành mới nhất cho Windows XP), bạn sẽ phải thêm hai dhcp-option DNS x.x.x.xdòng với IP được mã hóa thay thế.

script-security 2 để cho phép kịch bản.

up kịch bản:

cd %~dp0
echo auth none> 3proxy-openvpn.conf
echo internal 127.0.0.1>> 3proxy-openvpn.conf
echo external %4>> 3proxy-openvpn.conf
echo socks>> 3proxy-openvpn.conf
start /b 3proxy.exe 3proxy-openvpn.conf

down kịch bản:

taskkill /f /im 3proxy.exe

Do đó, sau khi bạn kết nối với VPN bằng cấu hình này, 3proxy.exequy trình sẽ được bắt đầu và proxy SOCKS5 giới hạn localhost với khả năng phân giải DNS sẽ chạy trên 1080cổng, bây giờ chỉ cần định cấu hình ứng dụng của bạn để sử dụng localhost:1080proxy SOCKS.


Tôi đang nhận được Options error: option 'route' cannot be used in this context ([PUSH-OPTIONS])Options error: option 'redirect-gateway' cannot be used in this context ([PUSH-OPTIONS]). Không ít hơn, giải pháp này hoạt động. Nếu bạn bỏ qua dấu nháy đơn cho kịch bản xuống và lên, hãy sử dụng dấu gạch chéo kép:c:\\path\\to\\script
chx

1

Nếu bạn đang dùng linux và bạn sử dụng openVPN, VPNShift sẽ hoạt động rất tốt.


Xin vui lòng không gửi cùng một câu trả lời cho nhiều câu hỏi. Nếu cùng một thông tin thực sự trả lời cả hai câu hỏi, thì một câu hỏi (thường là câu hỏi mới hơn) nên được đóng lại như một bản sao của câu hỏi khác. Bạn có thể chỉ ra điều này bằng cách bỏ phiếu để đóng nó dưới dạng trùng lặp hoặc, nếu bạn không đủ danh tiếng cho điều đó, hãy giơ cờ để cho biết đó là bản sao. Mặt khác, điều chỉnh câu trả lời của bạn cho câu hỏi này và không chỉ dán cùng một câu trả lời ở nhiều nơi.
DavidPostill

4
Có phải thực tế là "cùng một câu trả lời cho nhiều câu hỏi" rất quan trọng không? Câu hỏi tồn tại, nó không (chưa) được gắn cờ là trùng lặp và đó là một câu trả lời hay, vì vậy nó xứng đáng tồn tại. Cảm ơn @thouliha 🙂.
Ronan Jouchet

0

Chỉ cần truy cập VPN thông qua một máy ảo.

  1. Tạo một VM, sau đó từ bên trong VM ...
  2. Cài đặt ứng dụng 'đã chọn'
  3. Định cấu hình VPN

Sử dụng các ứng dụng 'được chọn' từ VM thay vì sử dụng chúng từ máy chủ.

PS Tất nhiên, bạn cần cấp quyền truy cập mạng cho VM thông qua máy chủ.


Điều này chỉ đề cập đến một cách tiếp cận đã được mô tả chi tiết trong các câu trả lời khác.
fixer1234

1
@ fixer1234: Không ai nhắc đến máy ảo.
drowa

Bạn có thể mở rộng câu trả lời của bạn thành một cái gì đó dễ hành động hơn (giải thích làm thế nào)? Xem các câu trả lời khác trên chủ đề cho một ý tưởng về mức độ chi tiết. Chỉ cần cung cấp một gợi ý cho một hướng để theo đuổi sẽ đi vào một bình luận, đòi hỏi một chút đại diện.
fixer1234

Tôi đã thử nhận xét trước nhưng hệ thống không cho phép tôi vì tôi có ít hơn 50 điểm. Tôi sẽ cố gắng mở rộng câu trả lời sau đó.
drowa

Đây là ý tưởng tôi đã đưa ra, và nó hoạt động tốt, không có bất kỳ cấu hình định tuyến phức tạp nào ở phía sysadmin.
pwned

0

Tôi biết đây là cách trả lời trễ mà tôi vừa chạy qua, nhưng trong trường hợp nó có liên quan đến ai đó, tôi cũng gặp trường hợp tôi muốn chạy lưu lượng công việc của mình thông qua VPN nhưng không muốn lưu lượng truy cập cá nhân của tôi được chuyển qua máy chủ proxy và như vậy. Vì vậy, lúc đó tôi đã chạy Win7 nhưng họ vẫn chạy WinXP trên rất nhiều hệ thống của họ. Cuối cùng, họ chỉ cho tôi một PC thứ 2 để chạy để giải quyết vấn đề (một hộp chuyển đổi được nối với cả hai PC, chỉ có thể nhảy qua lại) nhưng trước đó tôi đã chạy Virtual XP mà tôi đã thiết lập làm HĐH làm việc của mình .. . Tôi sẽ VPN từ VM nói để kết nối với công việc, điều này sẽ khiến lưu lượng hệ điều hành cá nhân của tôi không bị hạn chế và gián điệp công việc.

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.