ใช้การเชื่อมต่อ VPN สำหรับแอปพลิเคชันที่เลือกเท่านั้น


39

ฉันเข้าถึง VPN และต้องการใช้เฉพาะกับแอปพลิเคชั่นบางตัวเท่านั้นไม่ใช่ทั้งหมด

ตัวอย่างเช่น:
ถ้าฉันเชื่อมต่อกับ VPN ฉันต้องการเฉพาะแอปพลิเคชัน Opera และ Newsbin เพื่อใช้การเชื่อมต่อ VPN นั้น แอปพลิเคชันอื่น ๆ ทั้งหมดเช่น fe Outlook ควรใช้การเชื่อมต่ออินเทอร์เน็ตปกติ (ในขณะที่ VPN เชื่อมต่อ / เปิด)

Afaik ไม่สามารถทำได้ แต่ฉันก็ไม่แน่ใจ ดังนั้นคำถามของฉัน: มันเป็นไปได้หรือไม่


คำตอบ:


-1

ไม่มันไม่ใช่ ดีไม่ได้ใช้วิธีการปกติ การกำหนดเส้นทางเป็นการกำหนดเส้นทาง การกำหนดเส้นทางจะลดรุ่น OSI ลง สิ่งที่คุณต้องเกิดขึ้นก็คือให้รับรู้ในระดับแอพพลิเคชั่น (สูงกว่า) เพื่อให้สามารถตรวจสอบว่าคุณใช้โปรแกรมใดอยู่เป็นต้นเราเตอร์ปกติไม่อนุญาตให้คุณกำหนดเส้นทางตามแอปพลิเคชันหรือหมายเลขพอร์ต

ฉันคิดว่ามันเป็นไปได้ว่า เราเตอร์สามารถมองเห็นพอร์ตเพื่อให้คุณสามารถกรองพวกเขาด้วยหมายเลขพอร์ตและส่งการจราจรออกจากเส้นทางที่แตกต่างกัน ฉันแน่ใจว่าฉันอ่านอะไรซักครู่แล้วกับเราเตอร์ Cisco ที่สามารถทำได้ พวกเขาไม่ได้มาถูกและพวกเราเตอร์ธุรกิจที่ต้องการการกำหนดค่าจำนวนมากและฉันเดาว่าคุณต้องการอะไรที่เรียบง่ายสำหรับใช้ในบ้าน

สรุปแล้วมันเป็นเราเตอร์ที่จะต้องใช้คุณสมบัตินี้และมาตรฐาน bog ของคุณสำหรับใช้ในบ้านแม้ธุรกิจไม่สนับสนุนคุณสมบัติเหล่านี้ เฉพาะสายการผลิตขั้นสูงของ Cisco และ Sonicwalls เท่านั้นที่มีความสามารถเหล่านี้


36

เป็นไปได้ที่จะทำสิ่งนี้อย่างน้อยใน Linux (และฉันกำลังคิดเกี่ยวกับ BSD และ OS X เช่นกัน) คุณสามารถทำได้โดย:

  • สร้างผู้ใช้ exra สำหรับการรับส่งข้อมูล VPN ทั้งหมด
  • สร้างตารางเส้นทางพิเศษด้วย 1 เส้นทางเริ่มต้นผ่าน VPN
  • กำหนดค่า Netfilter ผ่าน Iptables เพื่อใช้ตารางเส้นทางอื่นสำหรับการรับส่งข้อมูลทั้งหมดที่มาจาก ID ผู้ใช้เฉพาะ
  • เรียกใช้แอปพลิเคชันที่ควรใช้ VPN ภายใต้ผู้ใช้ของตนเอง ตัวอย่างเช่นด้วย 'sudo'

มีสคริปต์สำหรับการบรรลุขั้นตอนข้างต้นอยู่ที่นี่หรือมีคำแนะนำอื่นที่นี่

นี่คือคำแนะนำโดยละเอียดสำหรับการกำหนดเส้นทางการส่งผ่าน VPN (ใช้เซิร์ฟเวอร์ VPN ที่คุณเป็นเจ้าของ


ง่ายกว่าบน Linux: สร้างเนมสเปซเครือข่ายเชื่อมต่อ VPN กับเนมสเปซนั้นเรียกใช้แอปพลิเคชันที่ควรใช้เนมสเปซใน VPN คุณสามารถเรียกใช้แอปพลิเคชั่นเดียวกันสองชุดโดยใช้ VPN และอีกชุดใช้การเชื่อมต่อโดยตรง
dirkt

15

คุณสามารถใช้ Windows Firewall เพื่อทำสิ่งนี้ให้สำเร็จ (หากคุณใช้ Win 7 หรือ Vista) - ฉันเขียนคำแนะนำเกี่ยวกับเรื่องนี้

  1. เชื่อมต่อกับ VPN ตามปกติ

  2. เปิดศูนย์เครือข่ายและการใช้ร่วมกัน - คลิกขวาที่ไอคอนการเชื่อมต่ออินเทอร์เน็ตในแถบงานและเลือก "เปิดศูนย์เครือข่ายและการแบ่งปัน" (ดูด้านล่าง)

  3. คุณควรเห็น (อย่างน้อย) สองเครือข่ายที่อยู่ในรายการ "ดูเครือข่ายที่ใช้งานของคุณ" - การเชื่อมต่อ VPN ของคุณและอีกหนึ่งชื่อ "เครือข่าย" - หรือที่รู้จักในการเชื่อมต่อ ISP ตรวจสอบให้แน่ใจว่า VPN ของคุณเป็น "เครือข่ายสาธารณะ" และการเชื่อมต่อ ISP ของคุณคือ "เครือข่ายในบ้าน" หากคุณต้องการเปลี่ยนการเชื่อมต่อคลิกที่มันและหน้าต่างตัวเลือกจะปรากฏขึ้น (ดูด้านล่าง)

  4. ไปที่แผงควบคุมและคลิกระบบและความปลอดภัย (ดูด้านล่าง)

  5. ในหน้าต่างผลลัพธ์คลิก Windows Firewall (ดูด้านล่าง)

  6. ในหน้าต่าง Windows Firewall คลิกการตั้งค่าขั้นสูงที่บานหน้าต่างด้านซ้าย (ดูด้านล่าง) หมายเหตุ: คุณจะต้องเข้าสู่ระบบในฐานะผู้ดูแลระบบเพื่อทำการเปลี่ยนแปลงการตั้งค่าไฟร์วอลล์

  7. คุณควรเห็นหน้าต่างชื่อ Windows Firewall พร้อม Advanced Security ในหน้าต่างนี้คลิกกฎขาเข้า (ดูด้านล่าง)

  8. บนบานหน้าต่างด้านขวาคุณจะเห็นตัวเลือกสำหรับกฎใหม่ คลิกที่มัน (ดูด้านล่าง)

  9. ในตัวช่วยสร้างกฎขาเข้าใหม่ (ซึ่งควรปรากฏขึ้น) ให้ทำดังนี้:

    • เลือกโปรแกรมและคลิกถัดไป

    • เลือกโปรแกรมที่คุณต้องการปิดกั้นทราฟฟิกทั้งหมดยกเว้นในการเชื่อมต่อ VPN แล้วคลิกถัดไป

    • เลือกบล็อกการเชื่อมต่อ

    • ทำเครื่องหมายโดเมนและส่วนตัว ตรวจสอบให้แน่ใจว่าสาธารณะถูกทิ้งให้อยู่ในความไม่ถูกต้อง

  10. ทำซ้ำขั้นตอนที่ 9 สำหรับกฎขาออก


11
สิ่งนี้จริง ๆ ตอบคำถามหรือไม่ ใช่แอปนี้จะหยุดทำงานหากไม่ได้อยู่บน VPN แต่ทราฟฟิกทั้งหมดยังคงอยู่บน VPN ไม่ได้เหรอ?
Jason Coyne

3
@pramble ทราฟฟิกทั้งหมดยังผ่าน vpn อยู่หรือเปล่า?
nsij22

ดูเหมือนจะทำงาน เพิ่งผ่านการทดสอบมัน ..
Faiz

ไม่สามารถแก้ไขได้ นี่เป็นสถานการณ์ที่ง่ายมาก ฉันต้องการให้ทุกอย่างที่เกี่ยวข้องกับงานของฉันผ่านการเชื่อมต่อ VPN (การเชื่อมต่อ SQL Server, Slack และอื่น ๆ ) แต่ฉันต้องการเว็บเบราว์เซอร์ของฉัน (Facebook, Soundcloud และอื่น ๆ โดยทั่วไปการจราจร 80 พอร์ต) ไม่ผ่าน VPN . Windows ดูดหากไม่สามารถทำได้
Triynko

@Triynko สถานการณ์ของคุณแตกต่างจากสถานการณ์ที่ OP ขอร้อง หลังจากเชื่อมต่อกับ VPN คุณสามารถตั้งค่าเส้นทางที่สอดคล้องกับสิ่งที่เกี่ยวข้องกับงานของคุณเช่นใช้เกตเวย์ VPN สำหรับเครือข่ายย่อยหรือ IP ที่เกี่ยวข้องกับงานทั้งหมด การรับส่งข้อมูลเส้นทางที่มาจากแอปพลิเคชันเฉพาะนั้นยากที่จะบรรลุ
speakr

4

คุณสามารถทำได้ด้วยเนมสเปซเครือข่ายบน GNU / Linux

ต่อไปนี้เป็นวิธีเรียกใช้ OpenVPN และแอปพลิเคชันเดียวในเนมสเปซแยก:

สร้างเนมสเปซเครือข่ายสุทธิ:

ip netns add myvpn

เริ่มอินเทอร์เฟซแบบวนรอบในเนมสเปซ (มิฉะนั้นหลายสิ่งไม่ทำงานอย่างที่คาดไว้…)

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

สร้างเน็ตเวิร์กอินเตอร์เฟสเสมือนที่จะอนุญาตให้ OpenVPN (ในเนมสเปซ) เข้าถึงเครือข่ายจริงและกำหนดค่าอินเตอร์เฟสในเนมสเปซ (vpn1) เพื่อใช้อินเทอร์เฟซนอกเนมสเปซ (vpn0) เป็นเกตเวย์เริ่มต้น

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

เปิดใช้งานการกำหนดเส้นทาง IPv4 และ NAT สำหรับอินเตอร์เฟสในเนมสเปซ เนื่องจากส่วนต่อประสานเริ่มต้นของฉันเป็นแบบไร้สายฉันจึงใช้ wl + (ซึ่งอาจตรงกับ wlan0, wlp3s0 ฯลฯ ) ใน iptables สำหรับส่วนต่อประสานขาออก ถ้าคุณใช้อินเตอร์เฟสแบบมีสายคุณควรใช้ en + (หรือ br + สำหรับอินเทอร์เฟซบริดจ์)

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

กำหนดค่าเนมเซิร์ฟเวอร์ที่จะใช้ภายในเนมสเปซ

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

ใกล้เสร็จแล้วตอนนี้เราควรมีการเข้าถึงเครือข่ายเต็มรูปแบบในเนมสเปซ

ip netns exec myvpn ping www.google.com

ในที่สุดก็เริ่ม OpenVPN ใน namespace

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

เมื่อ tun0 อยู่ในเนมสเปซคุณก็พร้อมที่จะเริ่มโปรแกรมที่คุณต้องการ!

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

แหล่งข่าว

นอกจากนี้ยังมีสคริปต์ตัวตัดในบทความต้นฉบับที่คุณสามารถปรับให้เข้ากับความต้องการของคุณ


3

ฉันทำสิ่งนี้บน Windows แล้ว แนวคิดคือการผูกแพ็คเกจเครือข่ายขาออกกับอินเทอร์เฟซของ VPN มีคนแนะนำให้ใช้ForceBindIPสำหรับสิ่งนี้ แต่ต้องขอบคุณคำตอบนี้ฉันมีแนวคิดที่จะใช้พร็อกซี ข้อเสียของวิธีนี้คือแอพของคุณจะต้องมีการสนับสนุนพร็อกซีหรือคุณจะต้องใช้พร็อกซีเรเตอร์ (ดูที่นี่และที่นี่ ) ข้อดีคือวิธีนี้คุณจะสามารถ จำกัด การใช้ VPN ในเบราว์เซอร์ไปยังโดเมนที่ระบุโดยใช้ FoxyProxy หรือส่วนเสริมที่คล้ายกัน

ฉันใช้3proxyในโหมด SOCKS และผูกอินเตอร์เฟซภายนอกกับ IP ของ VPN OpenVPN ใช้สำหรับการเชื่อมต่อ VPN

ในไฟล์. ovpn ของฉัน ( client, dev tun) ฉันได้เพิ่มบรรทัดเหล่านี้:

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เพื่อข้ามเส้นทางที่ถูกส่งจากเซิร์ฟเวอร์ ในกรณีของคุณคุณอาจต้องออกความเห็นเกตเวย์เปลี่ยนเส้นทางแทน

route เพื่อเพิ่มเส้นทางสำหรับอินเทอร์เฟซนี้โดยที่ไม่ต้องใช้สายนี้มันจะไม่ถูกใช้แม้ว่าแอปจะเชื่อมโยงกับแอปก็ตาม

pull-filterเพื่อรักษา DNS ที่ถูกผลักไว้มิฉะนั้นจะถูกทิ้งไว้route-nopullพร้อมกับเส้นทางที่ส่ง ตัวเลือกนี้รองรับเริ่มต้นด้วย OpenVPN 2.4 หากคุณต้องติดกับ OpenVPN 2.3 (รีลีสล่าสุดสำหรับ Windows XP) คุณจะต้องเพิ่มสองdhcp-option DNS x.x.x.xบรรทัดด้วย hardcoded IP แทน

script-security 2 เพื่ออนุญาตการเขียนสคริปต์

up สคริปต์:

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 สคริปต์:

taskkill /f /im 3proxy.exe

ดังนั้นหลังจากที่คุณเชื่อมต่อกับ VPN โดยใช้การกำหนดค่านี้3proxy.exeกระบวนการจะเริ่มต้นขึ้นและพร็อกซี SOCKS5 แบบ จำกัด ของโฮสต์ที่มีความสามารถในการระบุ DNS จะทำงานบน1080พอร์ตตอนนี้เพียงกำหนดค่าแอปของคุณเพื่อใช้localhost:1080พร็อกซี SOCKS


ฉันได้รับและ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])ไม่น้อยกว่าวิธีนี้ใช้ได้ผล ถ้าคุณข้าม apostrophes สำหรับการขึ้นและลงสคริปต์ใช้ backslashes คู่:c:\\path\\to\\script
CHX

1

หากคุณอยู่บน linux และคุณใช้openVPN VPNShift จะทำงานได้อย่างสวยงาม


กรุณาอย่าโพสต์คำตอบเดียวกันกับหลายคำถาม หากข้อมูลเดียวกันตอบคำถามทั้งสองข้อจริงๆแล้วควรปิดคำถามหนึ่งคำถาม (โดยปกติคำถามใหม่กว่า) เป็นข้อมูลซ้ำ คุณสามารถระบุสิ่งนี้ได้โดยการโหวตเพื่อปิดเป็นซ้ำหรือหากคุณไม่มีชื่อเสียงเพียงพอให้ยกธงขึ้นเพื่อระบุว่าซ้ำกัน มิฉะนั้นปรับคำตอบสำหรับคำถามนี้และไม่เพียงแค่วางคำตอบเดียวกันในหลาย ๆ ที่
DavidPostill

4
ความจริงที่ว่า"คำตอบเดียวกันกับคำถามหลาย ๆ ข้อ"สำคัญมากเหรอ? คำถามมีอยู่แล้วยังไม่ได้ตั้งค่าสถานะว่าซ้ำซ้อนและเป็นคำตอบที่ดีจึงควรมีอยู่ ขอบคุณ @thouliha 🙂
Ronan Jouchet

0

เพียงเข้าถึง VPN ผ่านเครื่องเสมือน

  1. สร้าง VM จากนั้นจากภายใน VM ...
  2. ติดตั้งแอปพลิเคชัน 'ที่เลือก'
  3. กำหนดค่า VPN

ใช้แอปพลิเคชัน 'ที่เลือก' จาก VM แทนที่จะใช้แอปพลิเคชันจากเครื่องโฮสต์

PS คุณต้องให้การเข้าถึงเครือข่ายกับ VM ผ่านเครื่องโฮสต์แน่นอน


นี่แค่กล่าวถึงวิธีการที่อธิบายไว้โดยละเอียดแล้วในคำตอบอื่น ๆ
fixer1234

1
@ fixer1234: ไม่มีใครพูดถึงเครื่องเสมือน
drowa

คุณสามารถขยายคำตอบของคุณไปสู่สิ่งที่สามารถดำเนินการได้มากขึ้น (อธิบายวิธีการ) ดูคำตอบอื่น ๆ บนเธรดสำหรับแนวคิดของระดับรายละเอียด เพียงแค่ให้คำแนะนำสำหรับทิศทางในการติดตามจะไปในความคิดเห็นซึ่งต้องการตัวแทนอีกเล็กน้อย
fixer1234

ฉันได้ลองแสดงความคิดเห็นก่อน แต่ระบบไม่อนุญาตให้ฉันเพราะฉันมีคะแนนน้อยกว่า 50 คะแนน ฉันจะพยายามขยายคำตอบแล้ว
drowa

นี่เป็นแนวคิดที่ฉันคิดขึ้นมาและใช้งานได้ดีโดยไม่มีการกำหนดเส้นทางที่ซับซ้อนบนด้านดูแลระบบ
pwned

0

ฉันรู้ว่านี่เป็นวิธีตอบกลับล่าช้าที่ฉันเพิ่งเจอ แต่ในกรณีที่เกี่ยวข้องกับใครบางคนฉันมีสถานการณ์แบบเดียวกันกับที่ฉันต้องการใช้งานปริมาณงานผ่าน VPN แต่ไม่ต้องการปริมาณข้อมูลส่วนตัวของพวกเขาผ่านเส้นทางของพวกเขา พร็อกซีเซิร์ฟเวอร์และเช่น ดังนั้นฉันจึงใช้ Win7 ตั้งแต่นั้นมา แต่พวกเขายังคงใช้ WinXP ในระบบของพวกเขาจำนวนมาก ในที่สุดพวกเขาเพิ่งให้พีซีเครื่องที่สองกับฉันเพื่อทำงานซึ่งแก้ไขปัญหาได้ (กล่องสวิตช์เชื่อมต่อกับพีซีทั้งสองสามารถข้ามไปมาได้) แต่ก่อนหน้านี้ฉันใช้ Virtual XP ที่ฉันตั้งค่าเป็นระบบปฏิบัติการของฉัน .. ฉันต้องการ VPN จาก VM ที่กล่าวเพื่อเชื่อมต่อกับงานซึ่งจะทำให้การรับส่งข้อมูล OS ส่วนตัวของฉันปลอดจากข้อ จำกัด การทำงานและการสอดแนม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.