वीपीएन का उपयोग करने के लिए कुछ अनुप्रयोगों को मजबूर करें


3

अब कुछ दिनों के लिए, मैं केवल कुछ अनुप्रयोगों को वीपीएन का उपयोग करने के लिए मजबूर करने की कोशिश कर रहा हूं। मैंने इस प्रकार बहुत सरल पाया है कि या तो सभी अनुप्रयोगों को इसका उपयोग करने के लिए बाध्य किया जाए, या किसी भी अनुप्रयोग को इसका उपयोग करने के लिए मजबूर न किया जाए।

मैं स्क्रिप्ट या किसी भी चीज़ पर सेट नहीं हूं। मैं बस यही काम करना चाहता हूं। निम्नलिखित में से कोई भी स्वीकार्य है:

  • Tun0 इंटरफ़ेस का उपयोग करने के लिए एक निश्चित उपयोगकर्ता से आवेदन बल
  • Tun0 इंटरफ़ेस का उपयोग करने के लिए कुछ बंदरगाहों को बाध्य करें
  • Tun0 इंटरफ़ेस का उपयोग करने के लिए विशिष्ट प्रक्रियाएँ (यह मेरा मूल इरादा था लेकिन मुझे लगता है कि यह कार्यक्षमता कुछ समय के लिए iptables में मौजूद नहीं है)

मैं समाधान के लिए मार्गों / फ़ायरवॉल का उपयोग करने के लिए तैयार नहीं हूं, यह सिर्फ मैंने अभी तक प्राप्त की गई अधिकांश जानकारी को इंगित करने के लिए प्रतीत होता है कि जाने का रास्ता है।

मैं Fedora चला रहा हूं और OpenVPN का उपयोग कर रहा हूं।

मैं इस स्क्रिप्ट के साथ काम कर रहा हूं:

#!/bin/sh

DEV1=wlp0s20u2
IP1=192.168.0.200
GW1=192.168.0.1
TABLE1=internet
TABLE2=vpn
DEV2=tun0
IP2=`ifconfig | egrep -o '192.168.179.[0-9]{1,3}' | head -n1`
GW2=`ifconfig | egrep -o '192.168.179.[0-9]{1,3}' | tail -n1`

ip route flush table $TABLE1
ip route flush table $TABLE2
ip route show table main | grep -Ev ^default | while read ROUTE ; do
    ip route add table $TABLE1 $ROUTE
    ip route add table $TABLE2 $ROUTE
done
ip route add table $TABLE1 $GW1 dev $DEV1 src $IP1
# Error "RTNETLINK answers: File exists" at below line
ip route add table $TABLE2 $GW2 dev $DEV2 src $IP2
ip route add table $TABLE1 default via $GW1
ip route add table $TABLE2 default via $GW2

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
echo "2" > /proc/sys/net/ipv4/conf/tun0/rp_filter

ip rule add from $IP1 lookup $TABLE1
ip rule add from $IP2 lookup $TABLE2
ip rule add fwmark 1 lookup $TABLE1
ip rule add fwmark 2 lookup $TABLE2

iptables -t nat -A POSTROUTING -o $DEV1 -j SNAT --to-source $IP1
iptables -t nat -A POSTROUTING -o $DEV2 -j SNAT --to-source $IP2

iptables -t nat -A PREROUTING           -m state --state ESTABLISHED,RELATED          -j CONNMARK --restore-mark
iptables        -A OUTPUT               -m state --state ESTABLISHED,RELATED          -j CONNMARK --restore-mark
iptables -t nat -A PREROUTING -i $DEV1  -m state --state NEW                          -j CONNMARK --set-mark 1
iptables -t nat -A PREROUTING -i $DEV2  -m state --state NEW                          -j CONNMARK --set-mark 2
iptables -t nat -A PREROUTING           -m connmark --mark 1                          -j MARK --set-mark 1
iptables -t nat -A PREROUTING           -m connmark --mark 2                          -j MARK --set-mark 2
iptables -t nat -A PREROUTING           -m state --state NEW -m connmark ! --mark 0   -j CONNMARK --save-mark

# ADD PORTS HERE!
iptables -t mangle -A PREROUTING -i $DEV2 -m state --state NEW -p tcp --dport  80 -j CONNMARK --set-mark 2
#iptables -t mangle -A PREROUTING -i $DEV2 -m state --state NEW -p tcp --dport 443 -j CONNMARK --set-mark 2

route del default
route add default gw $GW1 $DEV1

यहां मिले एक से थोड़ा बदल गया ।

यह काम नहीं करता है। यह डिफ़ॉल्ट रूप से मेरे वायरलेस इंटरनेट पर जाने के लिए ट्रैफ़िक प्राप्त करता है, लेकिन पोर्ट 80 से वीपीएन तक ट्रैफ़िक को पुनर्निर्देशित नहीं करता है। एकमात्र संकेत मुझे मिलता है जो रहस्यमय है

RTNETLINK answers: File exists

वह बिंदु जो होता है वह स्क्रिप्ट के भीतर चिह्नित होता है। मुझे यकीन नहीं है कि इसका क्या मतलब है। मैं त्रुटि होने से कुछ समय पहले लूप को हटाकर इसे रोक सकता हूं, लेकिन अगर मैं करता हूं तो स्क्रिप्ट अचानक काम नहीं करती है।

मदद? मैं नेटवर्किंग / फायरवॉल के बारे में थोड़ा जानते हैं, लेकिन यह है जिस तरह से मेरी बूते के बाहर है, और मैं स्पष्ट रूप से भी है कि स्क्रिप्ट भी की एक तिहाई के बारे में नहीं पता है कि करता है

जवाबों:


1

आप आम तौर पर एक आईपी के लिए एक नेटवर्क अनुप्रयोग को बाँध सकते हैं: इसकी .conf फ़ाइल में पोर्ट। आप अपने पीसी में प्रत्येक इंटरफ़ेस में अलग-अलग आईपी जोड़ सकते हैं और फिर प्रत्येक एप्लिकेशन को एक अलग आईपी के साथ बाँध सकते हैं, उदाहरण के लिए आपके पास एनआईसी कार्ड में आईपी 192.168.7.100 के लिए एक मेल सर्वर और 192.168.1.101 से जुड़े कुछ अन्य एप्लिकेशन हो सकते हैं। tun0 इंटरफ़ेस।


प्रतिक्रिया के लिए धन्यवाद, लेकिन यह प्रश्न विशेष रूप से मेरे लैपटॉप पर कुछ नेटवर्किंग सामानों के बारे में है। मेरे पास कोई वेब सेवा नहीं है जिसे वीपीएन का उपयोग करने की आवश्यकता है। जैसे, मुझे एक अधिक सामान्य समाधान की आवश्यकता है।
डायलन

0

फिर भी एक नेटवर्क का उपयोग करने वाला कोई भी एप्लिकेशन इंटरफ़ेस / आईपी से जुड़ा होता है, इससे कोई फर्क नहीं पड़ता कि यह नेटवर्क सेवा है या ग्राफिकल क्लाइंट एप्लिकेशन है यदि आप इंटरफ़ेस सेट कर सकते हैं तो यह आपकी समस्या को हल करने में उपयोग करेगा, यदि पैकेट नहीं होगा। पूर्व निर्धारित इंटरफ़ेस से गुजरें।


ज़रूर, लेकिन मुश्किल हिस्सा यह है कि स्वभाव से आपका कंप्यूटर एक इंटरफ़ेस का उपयोग करना चाहता है जब तक कि गंतव्य विशेष रूप से केवल दूसरे द्वारा पहुंच योग्य न हो। और अधिकांश अनुप्रयोगों में इंटरफ़ेस चुनने के लिए एक स्पष्ट विकल्प नहीं होता है। इसके अलावा, मैंने जो एक एप्लिकेशन पाया, वह था - मेरे सिस्टम का डिफ़ॉल्ट टोरेंट क्लाइंट, जिसे वैसे भी वीपीएन की आवश्यकता नहीं है - काम भी नहीं किया! मुझे बनाने की कल्पना करने की कोशिश करें, कहते हैं, फ़ायरफ़ॉक्स और केवल फ़ायरफ़ॉक्स वीपीएन का उपयोग करते हैं। इससे पहले कि मैं इसे और अधिक आम तौर पर लागू करने से पहले वास्तव में परीक्षण करने की कोशिश कर रहा हूं। मैं प्रयास की सराहना करता हूं, हालांकि।
डायलन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.