আমি সুও এর সাথে লড়াই করেছি তাই এখানে একটি সম্পূর্ণ সমাধান রয়েছে। এটি উবুন্টু 15 এবং 16 এ পরীক্ষা করা হয়েছে You
সম্পূর্ণ "সিগ্রুপ" সমাধান
কিভাবে কাজ করে?
- লিনাক্স কার্নেল অ্যাপটিকে একটি নিয়ন্ত্রণ গ্রুপে রাখবে । এই সিগ্রুপে থাকা অ্যাপ্লিকেশনগুলি থেকে নেটওয়ার্ক ট্র্যাফিক নেটওয়ার্ক কন্ট্রোলার পর্যায়ে তাদের শ্রেণি আইডি দ্বারা চিহ্নিত করা হবে।
- আইপটিবলগুলি এই ট্র্যাফিকটিকে চিহ্নিত করবে এবং এটিকে সঠিক আইপি দিয়ে প্রস্থান করতে বাধ্য করবে
- আইপি রুটটি আপনি যা চান গেটওয়ে আইপি-র ডিফল্ট রুট সহ একটি ভিন্ন রাউটিং টেবিলের চিহ্নিত চিহ্নিত ট্র্যাফিকের প্রক্রিয়া করবে।
স্বয়ংক্রিয় স্ক্রিপ্ট
নির্ভরতা ইনস্টল ও চালন স্বয়ংক্রিয় করতে আমি একটি novpn.sh স্ক্রিপ্ট তৈরি করেছি । উবুন্টুতে পরীক্ষিত।
প্রথমে আপনার ভিপিএন শুরু করুন।
wget https://gist.githubusercontent.com/kriswebdev/a8d291936fe4299fb17d3744497b1170/raw/cf8b37fbe6c3f50a0be825eb77cafa3e0134946f/novpn.sh
# If you don't use eth0, edit the script setting.
sudo chmod +x novpn.sh
./novpn.sh traceroute www.google.com
./novpn.sh --help
ম্যানুয়াল হাওটো
প্রথমে সিগ্রুপ সমর্থন এবং সরঞ্জামগুলি ইনস্টল করুন:
sudo apt-get install cgroup-lite cgmanager cgroup-tools
রিবুট (প্রয়োজনীয় নাও হতে পারে)।
আপনার iptables 1.6 .0+ প্রয়োজন । Iptables 1.6.0 রিলিজ উত্স পান , এটি এক্সট্রাক্ট করুন, তারপরে এটি চালান ( --disable-nftables
পতাকা ত্রুটিগুলি এড়াতে পারবে) iptables উত্স দির থেকে:
sudo apt-get install dh-autoreconf bison flex
./configure --prefix=/usr \
--sbindir=/sbin \
--disable-nftables \
--enable-libipq \
--with-xtlibdir=/lib/xtables
make
sudo make install
iptables --version
এখন, আসল কনফিগারেশন। নামের একটি নিয়ন্ত্রণ গ্রুপ সংজ্ঞায়িত করুন novpn
। এই গোষ্ঠীগুলির প্রক্রিয়াগুলির 0x00110011
(11 11) শ্রেণীবদ্ধ থাকবে ।
sudo su
mkdir /sys/fs/cgroup/net_cls/novpn
cd /sys/fs/cgroup/net_cls/novpn
echo 0x00110011 > net_cls.classid
এখন, আমরা ধরে নিই যে আপনি নির্দিষ্ট অ্যাপ্লিকেশনটির জন্য যে ইন্টারফেসটি ব্যবহার করতে চান তা eth0
একটি গেটওয়ে আইপি এর সাথে রয়েছে 10.0.0.1
। এগুলি আপনি যা চান তা দ্বারা প্রতিস্থাপন করুন (এর কাছ থেকে তথ্য পান ip route
)। মূল হিসাবে এখনও চালান:
# Add mark 11 on packets of classid 0x00110011
iptables -t mangle -A OUTPUT -m cgroup --cgroup 0x00110011 -j MARK --set-mark 11
# Force the packets to exit through eth0 with NAT
iptables -t nat -A POSTROUTING -m cgroup --cgroup 0x00110011 -o eth0 -j MASQUERADE
# Define a new "novpn" routing table
# DO THIS JUST ONCE !
echo 11 novpn >> /etc/iproute2/rt_tables
# Packets with mark 11 will use novpn
ip rule add fwmark 11 table novpn
# Novpn has a default gateway to the interface you want to use
ip route add default via 10.0.0.1 table novpn
# Unset reverse path filtering for all interfaces, or at least for "eth0" and "all"
for i in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 0 > $i; done
অবশেষে, নির্দিষ্ট অ্যাপ্লিকেশনটিতে আপনার অ্যাপ্লিকেশনটি চালান:
exit
sudo cgcreate -t $USER:$USER -a $USER:$USER -g net_cls:novpn
cgexec -g net_cls:novpn traceroute www.google.com
# Close all Firefox windows first
cgexec -g net_cls:novpn firefox
অথবা আপনি যদি ইতিমধ্যে একটি চলমান প্রক্রিয়াটি সিগ্রুপে স্থানান্তর করতে চান তবে ভাল ... আপনি পারবেন না! এটি NAT (মাস্ক্রেড) ফাংশনের কারণে বলে মনে হচ্ছে: iptables -nvL -t nat
সিগ্রুপটি স্যুইচ করা অবস্থায় মেলে না তবে iptables -nvL -t mangle
মিলছে।
# Get PID of the process (we'll then suppose it's 1234)
pidof firefox
# Add to cgroup - THIS DOESN'T WORK! Silently fails to produce the final result.
sudo echo 1234 > /sys/fs/cgroup/net_cls/novpn/tasks
# Remove - but this works...
sudo echo 1234 > /sys/fs/cgroup/net_cls
ক্রেডিট: কোন উত্তর আশানুরূপ কাজ করছিল, কিন্তু তাদের একটি মিশ্রণ নি: chripell evolware নিবন্ধ উত্তর রাউটিং Cgroups, iptables ও নীতি ব্যবহার করে: রাউটিং 2 প্রক্রিয়া প্রতি , আমি একটি নির্দিষ্ট প্রক্রিয়া একটি VPN খুলুন সংযোগ মাধ্যমে যাচ্ছেন না কিভাবে করতে পারি? , Iptables এর ভিত্তিতে ওপেনভিপিএন এর জন্য কিল স্যুইচ করুন
cgexec -g net_cls:novpn apache2
এবং আমাকে ভেরিয়েবল অপরিবর্তিত এরোরগুলির পুরো তালিকা দিয়েছি!