একই রাউটারে ওপেনভিপিএন সার্ভার এবং ক্লায়েন্টের জন্য নীতিগত রাউটিং?


2

সমস্যা

একটি VPN খুলুন সার্ভার উদাহরণস্বরূপ ( tun, udp, পোর্ট 1194) লিনাক্স ভিত্তিক রাউটার যে এছাড়াও একটি VPN খুলুন ক্লায়েন্ট উদাহরণস্বরূপ (রান সেট আপ করা হয় tun, udp, পোর্ট 1197) এটিকে একটি VPN প্রদানকারী সাথে সংযুক্ত হচ্ছে। ক্লায়েন্ট এবং সার্ভার উভয়ই পৃথকভাবে সূক্ষ্মভাবে কাজ করে । তবে, ভিপিএন ক্লায়েন্ট ইনস্ট্যান্স সক্ষম থাকলে ক্লায়েন্টরা ভিপিএন সার্ভারের সাথে সংযোগ করতে পারে না।

আমি নিশ্চিত যে এটি ঘটেছে কারণ ভিপিএন ক্লায়েন্ট উদাহরণটি mainরাউটিং টেবিলটি সংশোধন করে যাতে ( OUTPUT) এবং FORWARDরাউটারের মাধ্যমে সমস্ত ট্রাফিক ভিপিএন সরবরাহকারীর কাছে যায়। এটি পছন্দসই ডিফল্ট আচরণ, তবে ইন্টারনেট থেকে শুরু হওয়া সংযোগগুলির জন্য নয়।

ব্যবহার করে iptablesএবং / অথবা ip, কীভাবে একটি রাউটিং নীতি সেট আপ করা যায় যাতে ইন্টারনেট থেকে শুরু করা সমস্ত (বা কমপক্ষে ভিপিএন) সংযোগগুলি স্ট্যান্ডার্ড ডিফল্ট গেটওয়ে ( 192.168.1.1) দিয়ে রাউটে যায় ?

সেটআপ

LINUX ROUTER
-----------------------------------------
| LAN if:        br-lan, 192.168.2.1/24 |
| VPN client if: tun0,   10.63.10.6/32  |
| VPN server if: tun1,   10.255.0.1/24  |
| DMZ if:        eth0,   192.168.1.2/24 |
-----------------------------------------
               |
GATEWAY ROUTER |
--------------------------
| DMZ if: 192.168.1.1/24 |
| WAN if: x.x.x.x/x      |
--------------------------
               |
INTERNET       |     VPN CLIENT OF LINUX ROUTER (public IP: y.y.y.y/y)
-----------------    --------------------------------------
|               |----| VPN client if: tun1, 10.255.0.6/24 |
-----------------    --------------------------------------
               |
               |
VPN PROVIDER OF LINUX ROUTER
--------------------------------    
| VPN server if: 10.63.10.1/32 |
--------------------------------

আপনি লক্ষ্য করবেন যে আমরা এখানে একটি ডাবল NAT পরিস্থিতি। এটি যতটা অস্বস্তিকর হতে পারে ততটা সমস্যা নয় কারণ ভিপিএন ক্লায়েন্টের উদাহরণটি অক্ষম করা থাকলে ক্লায়েন্টরা সংযোগ করতে পারে

ভিপিএন ক্লায়েন্ট এবং সার্ভারের উদাহরণগুলি সক্ষম করে, এটি mainরাউটিং টেবিল, যেমনটি দেওয়া হয়েছে ip route list table main:

0.0.0.0/1 via 10.63.10.5 dev tun0   #added by VPN client instance
default via 192.168.1.1 dev eth0  proto static 
10.63.10.1 via 10.63.10.5 dev tun0   #added by VPN client instance
10.63.10.5 dev tun0  proto kernel  scope link  src 10.63.10.6   #added by VPN client instance
10.255.0.0/24 via 10.255.0.2 dev tun1 
10.255.0.2 dev tun1  proto kernel  scope link  src 10.255.0.1 
128.0.0.0/1 via 10.63.10.5 dev tun0   #added by VPN client instance
178.162.199.211 via 192.168.1.1 dev eth0   #added by VPN client instance
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.2 
192.168.2.0/24 dev br-lan  proto kernel  scope link  src 192.168.2.1 

এবং এইগুলি আইপি বিধিগুলি হিসাবে দেওয়া হয়েছে ip rule list:

0:  from all lookup 128   #a non-existent table
1:  from all lookup local 
32766:  from all lookup main 
32767:  from all lookup default   #empty table

প্রচেষ্টা

সবার আগে আমি একটি no_vpn_providerরাউটিং টেবিল ( echo "2 no_vpn_provider" >> /etc/iproute2/rt_tables) তৈরি করেছি , mainভিপিএন ক্লায়েন্টের উদাহরণ পরিবর্তন ছাড়াই টেবিলের একটি সঠিক অনুলিপি । ip route list table no_vpn_providerশো

default via 192.168.1.1 dev eth0  proto static 
10.255.0.0/24 via 10.255.0.2 dev tun1 
10.255.0.2 dev tun1  proto kernel  scope link  src 10.255.0.1 
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.2 
192.168.2.0/24 dev br-lan  proto kernel  scope link  src 192.168.2.1

1) আমি এই সহজ ipনিয়ম চেষ্টা করেছিলাম

ip rule add from 192.168.1.2 table no_vpn_provider priority 2
ip rule add from 10.255.0.1 table no_vpn_provider priority 3

বাহ্যিক ইন্টারফেসের এবং আইপি ঠিকানাগুলি যথাক্রমে ভিপিএন সার্ভার ইন্টারফেসের 192.168.1.2এবং কোথায় ।10.255.0.1eth0tun1

আমি চেষ্টা করেছি from all iif eth0এবং from all iif tun1পরিবর্তে from 192.168.1.2এবং from 10.255.0.1

2) আমি ইন্টারফেসে এবং 0x1নতুন সংযোগগুলি ( conntrackমডিউলটি ইনস্টল করা আছে) এর সাথে চিহ্নিত করার চেষ্টা করেছিeth0tun1

iptables -t mangle -A PREROUTING -m conntrack --ctstate NEW -i eth0 -j CONNMARK --set-mark 0x1
iptables -t mangle -A PREROUTING -m conntrack --ctstate NEW -i tun1 -j CONNMARK --set-mark 0x1

এবং চিহ্নিত সংযোগগুলি নতুন রাউটিং টেবিলটি ব্যবহার করতে এই বিধি যুক্ত করে

ip rule add fwmark 0x1 table no_vpn_provider priority 2

3) আমি ভিপিএন সার্ভার বন্দর থেকে বহির্গামী প্যাকেটগুলি চিহ্নিত করার চেষ্টা করেছি1194

iptables -t mangle -A OUTPUT -p udp --sport 1194 -j MARK --set-mark 0x1
iptables -t mangle -A OUTPUT -p tcp --sport 1194 -j MARK --set-mark 0x1   # just in case

এবং একই নিয়ম ব্যবহার করে

ip rule add fwmark 0x1 table no_vpn_provider priority 2

আমি 2) এবং 3) বিভিন্ন চিহ্ন দিয়ে এবং -Iসংযোজন ( -A) পরিবর্তে ( ) সন্নিবেশ করেও চেষ্টা করেছি । আমার ফায়ারওয়াল সন্দেহ করা আমি পরীক্ষিত মোটেই চিহ্নিত করছিল না

iptables -t mangle -A FORWARD -s 192.168.2.0/24 -j MARK --set-mark 0x1
ip rule add fwmark 0x1 table no_vpn_provider priority 2

তবে, যেমনটি প্রত্যাশা করা হয়েছিল, আমার ল্যানের প্যাকেটগুলি ভিপিএন সরবরাহকারীর কাছে পাঠানো হয়নি।

4) এখন পর্যন্ত একমাত্র যে জিনিসটি কাজ করে তা হ'ল এই কুৎসিত বিধি

ip rule add from all to y.y.y.y/y table no_vpn_provider priority 2

যেখানে yyyy / y হল ক্লায়েন্টের সর্বজনীন আইপি ঠিকানা সংযোগ দেওয়ার চেষ্টা করছে: এটি অবশ্যই একটি ভয়াবহ সমাধান, কারণ ক্লায়েন্টরা সর্বদা একই নেটওয়ার্ক থেকে সংযোগ স্থাপন করে না।


@ অ্যাডামসিলেনকো আমি আরও স্পষ্টভাবে এবং আরও বিশদ দিয়ে প্রশ্নটির পুনরায় উত্তর দেওয়ার চেষ্টা করেছি। আপনি এখন আমাকে কিছু ইনপুট দিতে পারেন কিনা দেখুন। আরও সুনির্দিষ্ট হওয়ার চেষ্টা করুন: আপনার কনফিগারেশনটি নিয়ে কী কাজ করছেন না বলে আপনি মনে করেন?
এনডিভোর

উত্তর:


0

আইপি ঠিকানার মাধ্যমে ইন্টারফেসের মাধ্যমে প্রেরিত সমস্ত প্যাকেটগুলি 192.168.1.2একটি কাস্টম রাউটিং টেবিল no_vpn_providerব্যবহার করতে, আপনি কেবল ব্যবহার করতে পারেন

ip rule add from 192.168.1.2 table no_vpn_provider priority 2

যেমন আমি চেষ্টা করেছিলাম 1)। সমস্যাটি হ'ল ডিফল্টরূপে একটি ওপেনভিপিএন সার্ভার কোনও নির্দিষ্ট আইপি ঠিকানার সাথে আবদ্ধ হয় না, সুতরাং উপরের বিধিটির কোনও প্রভাব পড়বে না ( https://serverfault.com/a/228258 )।

আপনার ওপেনভিপিএন সার্ভারকে আইপি ঠিকানার সাথে আবদ্ধ করতে 192.168.1.2, কেবল এই লাইনটিকে এর কনফিগারেশন ফাইলে যুক্ত করুন এবং আপনি যেতে ভাল

local 192.168.1.2

দ্রষ্টব্য আপনি যদি নিয়ম এবং কাস্টম রাউটিং টেবিলটি এর সাথে তৈরি করেন তবে ipপ্রতিবার রাউটারটি রিবুট করার সময় সেগুলি মুছে ফেলা হবে। আপনার openvpnকনফিগারেশনের উপর নির্ভর করে কাস্টম রাউটিং টেবিলটি প্রতিবার পুনরায় চালু করার সময় পরিবর্তন করা যেতে পারে openvpn। আপনি এমন স্ক্রিপ্ট লিখতে পারেন যা যখনই প্রয়োজন হয় নিয়ম এবং কাস্টম রাউটিং টেবিলটিকে পুনরায় তৈরি করতে পারে।


এটি আমার সমস্যার সমাধান করার সময়, 2) এবং 3) চিহ্নিত করার চেষ্টা কেন কার্যকর হয়নি তা বুঝতে পেরে ভাল লাগবে।
এনডিভোর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.