কেবলমাত্র ** ** পোর্টগুলি 80 এবং 443 পুনর্নির্দেশের জন্য নতুন ভিপিএন সংযোগের জন্য রাউটিং এবং আইপটিবল সেটআপ করুন


8

আমাকে কিছু আইএসপি বিধিনিষেধের আশেপাশে যাওয়ার অনুমতি দেওয়ার জন্য আমার একটি নতুন ভিপিএন সংযোগ রয়েছে (ওপেনভিপিএন)। এটি ঠিকঠাক কাজ করা অবস্থায়, এটি সমস্ত ট্রাফিক ভিপিএন-এর মাধ্যমে নিচ্ছে । এটি আমাকে ডাউনলোড করার জন্য সমস্যা তৈরি করছে (আমার ইন্টারনেট সংযোগ ভিপিএন অনুমতি দেয় তার চেয়ে অনেক দ্রুত) এবং দূরবর্তী অ্যাক্সেসের জন্য। আমি একটি এসএসএস সার্ভার চালাই, এবং একটি ডেমন চলমান যা আমাকে আমার ফোনের মাধ্যমে ডাউনলোডগুলি স্কিডুল করার অনুমতি দেয়।

আমার এথ0 এ আমার বিদ্যমান ইথারনেট সংযোগ এবং টিউনে নতুন ভিপিএন সংযোগ রয়েছে।

আমার বিশ্বাস আমি 192.168.0.0/24 নেটওয়ার্কে আমার বিদ্যমান eth0 সংযোগটি ব্যবহার করতে এবং ডিফল্ট গেটওয়েটি 192.168.0.1 এ সেট করতে হবে (আমি বহু বছর ধরে এটি না করায় আমার জ্ঞানটি নড়বড়ে হয়) )। যদি এটি সঠিক হয়, তবে আমি কীভাবে এটি করব তা নিশ্চিত নই! আমার বর্তমান রাউটিং টেবিলটি হ'ল:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface    MSS   Window irtt
0.0.0.0         10.51.0.169     0.0.0.0         UG    0      0        0 tun0     0     0      0
10.51.0.1       10.51.0.169     255.255.255.255 UGH   0      0        0 tun0     0     0      0
10.51.0.169     0.0.0.0         255.255.255.255 UH    0      0        0 tun0     0     0      0
85.25.147.49    192.168.0.1     255.255.255.255 UGH   0      0        0 eth0     0     0      0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0     0     0      0
192.168.0.0     0.0.0.0         255.255.255.0   U     1      0        0 eth0     0     0      0

রাউটিংটি ঠিক করার পরে, আমি বিশ্বাস করি যে গন্তব্য পোর্টের জন্য 80 বা 443 টিউনের উপর দিয়ে জোর করার জন্য প্রিপ্রোটিং বা মাস্ক্রেডিং কনফিগার করার জন্য আইপটেবলগুলি ব্যবহার করা দরকার। আবার, আমি কীভাবে এটি করব তা নিশ্চিত নই!

ইন্টারনেটে আমি যা কিছু পেয়েছি তা আরও জটিল কিছু করার চেষ্টা করছে এবং গাছ থেকে কাঠ সাজানোর চেষ্টা করা কঠিন প্রমাণিত হচ্ছে।

কোন সাহায্যের অনেক প্রশংসা হবে।

হালনাগাদ

এখনও অবধি, বিভিন্ন উত্স থেকে, আমি নিম্নলিখিতগুলি একত্রিত করেছি:

#!/bin/sh

DEV1=eth0
IP1=`ifconfig|perl -nE'/dr:(\S+)/&&say$1'|grep 192.`
GW1=192.168.0.1
TABLE1=internet
TABLE2=vpn
DEV2=tun0
IP2=`ifconfig|perl -nE'/dr:(\S+)/&&say$1'|grep 10.`
GW2=`route -n | grep 'UG[ \t]' | awk '{print $2}'`

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
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

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

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 192.168.0.1 eth0

এখন এটি কাজ করছে বলে মনে হচ্ছে । বাদে না!

অবরুদ্ধ ওয়েবসাইটের সংযোগ করা হয় , মাধ্যমে চালু পোর্ট 80 443 না সংযোগ করা হয় অ VPN সংযোগ ব্যবহার করে।

তবে বন্দর 80 443 সংযোগ যা নয় অবরুদ্ধ ওয়েবসাইটের খুব অ VPN সংযোগ ব্যবহার করছেন!

সাধারণ লক্ষ্যটি পৌঁছে যাওয়ার সাথে সাথে আমি তুলনামূলকভাবে খুশি, তবে কেন এটি সঠিকভাবে কাজ করছে না তা জানতে পেরে ভাল লাগবে।

কোন ধারনা?

রেফারেন্সের জন্য, আমার কাছে এখন 3 টি রাউটিং টেবিল, প্রধান, ইন্টারনেট এবং ভিপিএন রয়েছে। সেগুলির তালিকা নিম্নরূপ ...

প্রধান:

default via 192.168.0.1 dev eth0 
10.38.0.1 via 10.38.0.205 dev tun0 
10.38.0.205 dev tun0  proto kernel  scope link  src 10.38.0.206 
85.removed via 192.168.0.1 dev eth0 
169.254.0.0/16 dev eth0  scope link  metric 1000 
192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.73  metric 1 

ইন্টারনেট:

default via 192.168.0.1 dev eth0 
10.38.0.1 via 10.38.0.205 dev tun0 
10.38.0.205 dev tun0  proto kernel  scope link  src 10.38.0.206 
85.removed via 192.168.0.1 dev eth0 
169.254.0.0/16 dev eth0  scope link  metric 1000 
192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.73  metric 1 
192.168.0.1 dev eth0  scope link  src 192.168.0.73

VPN এর:

default via 10.38.0.205 dev tun0 
10.38.0.1 via 10.38.0.205 dev tun0 
10.38.0.205 dev tun0  proto kernel  scope link  src 10.38.0.206 
85.removed via 192.168.0.1 dev eth0 
169.254.0.0/16 dev eth0  scope link  metric 1000 
192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.73  metric 1

উপরের লিপিটি প্রত্যাশার মতো কাজ করে। আমি কেবল নেটস্টেটের 10 ঠিকানা থেকে ট্রাফিকের উত্স দেখতে পেয়েছি। যাইহোক, সমস্ত ট্রাফিক 192 থেকে উত্সিত হয়, তবে 80 এবং 443 পোর্টটি ভিপিএন দ্বারা পরিচালিত। আমি পুরো উত্তরটি একটি উত্তরে রেখে দেব, তবে আইপ্রুটি 2 এবং ফিউমার্ক পরামর্শ দেওয়ার জন্য @ অ্যান্টিয়ারকে প্রপস করব। আমি সেগুলি পেরিয়ে আসিনি, এবং এগুলি ছাড়া আমি এখনও একটি ইটের প্রাচীরের বিরুদ্ধে মাথা ঠুটিয়ে যাব!
স্টিভ

উত্তর:


4

সুতরাং, এর বেশিরভাগটি উপরে, তবে পুরো সমাধানটি নিম্নরূপ ছিল:

সম্পাদনা / ইত্যাদি / iproute2 / rt_tables এবং নীচে 2 লাইন যুক্ত করুন:

101 internet
102 vpn

আপনি এই টেবিলগুলিকে আরও নাম দিতে পারেন যা আরও অর্থবোধ করে, কেবল সামঞ্জস্য বজায় থাকে।

তারপরে আপনাকে /etc/init.d এ একটি স্ক্রিপ্ট তৈরি করতে হবে (আমি এটিকে rt_setup বলেছি)

#!/bin/sh

DEV1=eth0
IP1=`ifconfig|perl -nE'/dr:(\S+)/&&say$1'|grep 192.`
GW1=192.168.0.1
TABLE1=internet
TABLE2=vpn
DEV2=tun0
IP2=`ifconfig|perl -nE'/dr:(\S+)/&&say$1'|grep 10.`
GW2=`route -n | grep 'UG[ \t]' | awk '{print $2}'`

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
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

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

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 192.168.0.1 eth0

তারপরে, স্পষ্টতই, এটিটিকে /etc/rc2.d থেকে লিঙ্ক করুন (আমি উবুন্টু ব্যবহার করি, রানলেভেল আপনার পক্ষে পৃথক হতে পারে)। নিশ্চিত করুন যে আপনি এটিকে ওপেনভিএনপি লিঙ্কের চেয়ে বেশি এস নম্বর দিয়েছেন !

স্ক্রিপ্টটি বেশ কয়েকটি কাজ করে। গতিশীল আইপি এবং গেটওয়ে ঠিকানাগুলি বেছে নেওয়ার জন্য কয়েকটি পার্ল এবং অ্যাডক স্টেটমেন্ট ব্যবহার করে উপরের অংশটি ভেরিয়েবলগুলি সেট আপ করে section এরপরে এটি দুটি নতুন রুট এবং দুটি ডিফল্ট গেটওয়ে তৈরি করে ভিপিএন এর সাথে একটি ভিপিএন এবং ইন্টারনেট আমার স্থানীয় নেটওয়ার্কের উপর দিয়ে যায় over

আমি নিশ্চিত নই যে পরবর্তী 2 টি লাইন প্রয়োজনীয়, তবে তারা আইপ্যাবনেসগুলিতে ব্যবহারের জন্য আইপি ফরওয়ার্ডিং সক্ষম করে।

পরবর্তী স্ক্রিপ্টটি প্রাসঙ্গিক আইপি ঠিকানা থেকে উত্পন্ন ট্রাফিক কোথায় সন্ধান করতে হবে এবং ট্রাফিক নির্দিষ্টভাবে চিহ্নিত আছে কিনা সেদিকে কিছু বিধি তৈরি করে।

পোষ্ট্রোটিং এবং প্রেরটিং নিশ্চিত করে যে কোনও ঠিকানা থেকে উত্পন্ন ট্রাফিকের উত্তর পেয়েছে!

চূড়ান্ত iptables PREROUTING ট্যাগগুলি ট্র্যাফিকের অংশ, এবং নিশ্চিত করে যে 80 বা 443 বন্দরগুলিতে যে কোনও কিছুই টেবিল 2 (ভিপিএন) ব্যবহার করার জন্য চিহ্নিত করা হয়েছে

চূড়ান্ত দুটি লাইন ডিফল্ট রাউটিং টেবিল থেকে ভিপিএন গেটওয়ে সরিয়ে দেয় এবং আমার স্থানীয় নেটওয়ার্ক গেটওয়েটি আবার যুক্ত করে।

এটি যেমন দাঁড়িয়েছে, প্রক্রিয়াটি দুর্দান্তভাবে কাজ করে। যন্ত্রটি আসার সাথে সাথে ভিপিএন শুরু হয়েছিল এবং এই স্ক্রিপ্টটি কয়েক সেকেন্ড পরে চালানো হবে (এই স্ক্রিপ্টটি চালানোর আগে ভিপিএন সম্পূর্ণরূপে শুরু করা হয়েছে তা নিশ্চিত করার জন্য আমি একটি স্লিপ স্টেটমেন্ট যুক্ত করতে পারি)) আমার দূরবর্তী অ্যাক্সেস সংযোগ (ssh ইত্যাদি) দুর্দান্ত কাজ করে। আমার সংযোগগুলি যে 80 বা 443 বন্দরগুলিতে যায় না সেগুলি আমার স্থানীয় সংযোগটি ব্যবহার করছে তবে সমস্ত ওয়েব ট্র্যাফিক ভিপিএন এর উপর দিয়ে চলেছে, এবং আমার আইএসপি দ্বারা স্থাপন করা নিয়ন্ত্রণগুলি বাইপাস করছে!

আমি আমার প্রশ্নের অধীনে আমার মন্তব্যে যেমন বলেছি, @ আন্টিয়ারের পরামর্শ ছাড়া আমি এই রুটটির দিকে তাকাতেও শুরু করিনি। এই পরামর্শের পিছনে সাইটগুলি http://blog.khax.net/2009/11/28/m લ્ટ-gateway-routing-with- iptables- and- iproute2/ এবং http://linux-ip.net/ এইচটিএমএল / অ্যাড-মাল্টি-ইন্টারনেট html খুব কার্যকর হয়েছে (কোডটি 100% সম্পূর্ণ না হলেও!)


1
একটি চূড়ান্ত সংযোজন, আমি একটি যোগ করেছি sleep 20 স্ক্রিপ্টের শীর্ষে কারণ ওপেনভিএনএন সংযোগটি সময়মতো শেষ হচ্ছে না। echo 2 > /proc/sys/net/ipv4/conf/tun0/rp_filterটিউন 0-এর জন্য বিপরীত প্যাকেট ফিল্টারটি অক্ষম করা প্রয়োজন বলে আমি স্ক্রিপ্টে যুক্তও করেছি। উত্স ঠিকানা এস দিয়ে টিউন থেকে যখন কোনও উত্তর ফিরে আসে, বিপরীত প্যাকেট ফিল্টারটি পরীক্ষা করে "যদি আমি এসকে সম্বোধন করার জন্য কোনও প্যাকেটটি রট করতে পারি এবং এটি টিউন দিয়ে না যায়, আমি প্যাকেটটি ফেলে দেব" - এবং কারণ এটি করার সময় অনুসন্ধানের কোনও বৈধ fwmark নেই, এটি নির্ধারণ করে যে রুটটি স্বাভাবিক ডিফল্ট রুট হবে, সুতরাং এটি প্যাকেটটি ফেলে দেয়।
স্টিভ

আপনার স্ক্রিপ্টটি আমার জন্য কাজ করতে এডিট করতে হয়েছিল। শেষ লাইনটি route add default gw 192.168.0.1 eth0লক্ষ্য হিসাবে টিউন0-এর পরিবর্তে স্থানীয় গেটওয়ে দিয়ে 80/443 ট্র্যাফিক পোর্ট বন্দরটি দেখে মনে হয়েছিল। শেষ লাইনটি পরিবর্তন করা route add default tun0আমার কাছে কৌশলটি মনে হচ্ছে।

1

প্রতি প্রোটোকল রুটিং একটি বাচ্চা জটিল। গন্তব্য আইপি অনুসারে গেটওয়েটি পরীক্ষা করতে ওপেনভিএনপিএন বা 192.168.0.1 ডিফল্ট গেটওয়ে ব্যবহার করতে সাধারণত রাউটিং টেবিল ব্যবহার করা হয়।

ভিপিএন এর অন্য প্রান্তে যেমন স্কুইড এইচপি প্রক্সি সেটআপ করা সহজ হবে এবং প্রক্সিটি ব্যবহারের জন্য ব্রাউজার সেট করা সহজ।

আপনি iptables ব্যবহার করবেন না কারণ এটি HTTP সংযোগের গন্তব্য আইপি পরিবর্তন করবে এবং এটি কার্যকর হবে না।

আপনি ভিপিএন শেষ পয়েন্টে সেট করা ডিফল্ট রুট সহ একটি নতুন রাউটিং টেবিল (/ etc / iproute2 / rt_tables) তৈরি করতে পারবেন, সমস্ত HTTP প্যাকেট চিহ্নিত করতে আইপ্যাবগুলি fwmark (-j MARK) ব্যবহার করতে পারেন এবং তারপরে একটি কাস্টম নিয়ম তৈরি করতে আইপি রুল ব্যবহার করতে পারেন নতুন রাউটিং টেবিলটি ব্যবহার করার জন্য চিহ্নিত প্যাকেজগুলি।


আপনার সাহায্যের জন্য ধন্যবাদ. আমি অবশ্যই তাদের এক নজরে নেব। বিষয়গুলি আমার কাছে খুব সামান্য জটিল যে আমার কাছে সার্ভার শেষের নিয়ন্ত্রণ নেই। এছাড়াও, আমি স্কুইড ব্যবহার করতে পারি না কারণ সংযোগের জন্য আমাকে https ট্র্যাফিকের রুট করতে হবে এবং স্কুইড এটির সাথে এত ভাল কাজ করে না।
স্টিভ

ভিপিএন এবং বিশ্বের অন্যান্য বিশ্বের ভিপিএন থেকে মাত্র কয়েকটি আইপি রাউটিং সম্পর্কে কীভাবে?
এন্টি রাইত্সেলা

আমি কেবল কয়েকটি আইপি রাউটিং করার কথা ভেবেছিলাম না, তবে সাইটগুলি ঘুরে দেখার সাথে সাথে তালিকাগুলি পরিবর্তন হয় এবং পিসির অন্যান্য ব্যবহারকারীর জন্য আমার এটি সহজ করে তুলতে হবে। আমি একটি নতুন রাউটিং টেবিল স্থাপন করা এবং প্যাকেটগুলি চিহ্নিত করা শুরু করেছি। চিহ্নিত প্যাকেটগুলি সহজ বিট ছিল, এটি রাউটিং টেবিলগুলি আমি এতটা নিশ্চিত নই। আমি ভিপিএন-এর জন্য একটি ঠিকঠাক সেট করতে পারি যা সঠিক দেখাচ্ছে এবং অন্য যেটি ডান-ইশ দেখায় সেগুলির জন্য একটি সেট আপ করতে পারি, তবে আমি এখনও নিশ্চিত নই যে মূলটি কী করা যায় যা এখনও ডিফল্ট (যা ভিপিএন) এ সেট রয়েছে। এখনও খেলছে ...
স্টিভ

linux-ip.net/html/adv-m Multi-internet.html আইপি রুল শো এবং আইপি রুল fwmark 4 টেবিল 4 অগ্রাধিকার 10000 যুক্ত করুন
অ্যান্টি রাইতস্লা

মূলটিতে একটি আপডেট যুক্ত করা হয়েছে যা আমি এখনও পর্যন্ত কোথায় আছি তার বিবরণ! আহ! ঠিক বুঝতে পেরেছি যে আমি আপনার উত্তরটি সম্পাদনা করেছি, আমার প্রশ্নটি নয়। দুঃখিত! এটি এত বেশি ব্যবহার করে নি, এবং বুঝতে পারি নি যে আমি অন্য ব্যক্তির উত্তর সম্পাদনা করতে পারি!
স্টিভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.