ম্যাক ওএস এক্সে পিএফ.কনফ ব্যবহার করে ওপেনভিপিএন সংযোগ সক্রিয় না হলে বহির্গামী ট্র্যাফিক প্রতিরোধ করুন


19

Pf.conf ব্যবহার করে আমার ওপেনভিপিএন সংযোগ সক্রিয় না হলে আমি বাহ্যিক নেটওয়ার্কগুলিতে সমস্ত সংযোগ অস্বীকার করতে সক্ষম হয়েছি। তবে, ল্যাপটপের idাকনাটি বন্ধ করে এবং খোলার মাধ্যমে বা আবার Wi-Fi টগল করে যদি সংযোগটি ভেঙে যায় তবে আমি Wi-Fi সংযোগটি হারাব।

  • আমি ম্যাক ওএস 10.8.1 এ আছি।
  • আমি ওয়েবে-ফাইয়ের মাধ্যমে ওয়েবে সংযোগ করি (সর্বজনীন Wi-Fi সহ বিভিন্ন অবস্থান থেকে)।
  • ওপেনভিপিএন সংযোগটি ভিসোসিটি দিয়ে সেট আপ করা হয়েছে।

আমার নিচের প্যাকেট ফিল্টার নিয়মগুলি সেট আপ হয়েছে /etc/pf.conf

# Deny all packets unless they pass through the OpenVPN connection
wifi=en1
vpn=tun0

block all

set skip on lo
pass on $wifi proto udp to [OpenVPN server IP address] port 443
pass on $vpn

আমি প্যাকেট ফিল্টার পরিষেবাটি চালু sudo pfctl -eকরে নতুন নিয়মগুলি দিয়ে লোড করি sudo pfctl -f /etc/pf.conf

পড়ার জন্য আমি /System/Library/LaunchDaemons/com.apple.pfctl.plistলাইনটি সম্পাদনা করেছি এবং পরিবর্তন করেছি যাতে প্যাকেট ফিল্টার সিস্টেম শুরু হওয়ার পরে শুরু হয়।<string>-f</string><string>-ef</string>

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

তবে, আমি যদি আমার ল্যাপটপের idাকনাটি বন্ধ করে আবার খুলি বা Wi-Fi বন্ধ করি এবং আবার চালু করি তবে Wi-Fi সংযোগটি নষ্ট হয়ে যায় এবং আমি স্থিতি বারে ওয়াই-ফাই আইকনটিতে একটি উদ্দীপনা চিহ্ন দেখতে পাই। Wi-Fi আইকনটি ক্লিক করা একটি "সতর্কতা: কোনও ইন্টারনেট সংযোগ নেই" বার্তাটি দেখায়:

কোনও ইন্টারনেট সংযোগ বার্তা নেই

সংযোগটি পুনরুদ্ধার করতে, আমাকে "সতর্কতা: কোনও ইন্টারনেট সংযোগ নেই" বার্তাটি অদৃশ্য হওয়ার আগে কখনও কখনও পাঁচ বা ছয়বার ওয়াই-ফাই সংযোগ বিচ্ছিন্ন করে পুনরায় সংযোগ করতে হবে এবং আমি আবার ভিপিএন সংযোগটি খুলতে সক্ষম হয়েছি। অন্যান্য সময়, ওয়াই-ফাই সতর্কতা তার নিজস্ব একমত থেকে অদৃশ্য হয়ে যায়, উদ্দীপনা চিহ্নটি পরিষ্কার হয়ে যায় এবং আমি আবার সংযোগ করতে সক্ষম হয়েছি। যে কোনও উপায়ে, আবার সংযোগ পেতে পাঁচ মিনিট বা তার বেশি সময় লাগতে পারে, যা হতাশ হতে পারে।

লাইনটি সরিয়ে ফেলা সমস্যার block allসমাধান করে (তবে অনিরাপদ সংযোগগুলিকে মঞ্জুরি দেয়), সুতরাং মনে হচ্ছে এমন কোনও পরিষেবা আছে যা আমি ব্লক করছি যা কোনও অ্যাপল ওয়াই-ফাই সংযোগ পুনরুদ্ধার এবং নিশ্চিত করার জন্য প্রয়োজন requires আমি চেষ্টা করেছি:

  • Pf.conf এ যোগ pass on $wifi proto icmp allকরে আইসিএমপি সক্ষম করা
  • যোগ করে ডিএনএস রেজোলিউশন সক্ষম করা pass on $wifi proto udp from $wifi to any port 53
  • অবরুদ্ধ প্যাকেটগুলিতে লগ ইন করে (আরও পরিবর্তন block allকরে block log all) আরও শিখার চেষ্টা করা হচ্ছে, তবে ওএস এক্স এর অধীনে লগিং নিষ্ক্রিয় বলে মনে হচ্ছে, কারণ sudo tcpdump -n -e -ttt -i pflog0"tcpdump: pflog0: এ জাতীয় কোনও ডিভাইস নেই" -এ লগের ফলাফলগুলি দেখার জন্য করছেন ।

এর কোনওটিই দ্রুত কোনও Wi-Fi সংযোগ পুনরায় প্রতিষ্ঠিত করতে সহায়তা করে।

Wi-Fi সংযোগ পুনরুদ্ধার করার জন্য কোন পরিষেবাটি উপলব্ধ থাকতে হবে তা নির্ধারণ করার জন্য আমি আর কী করতে পারি বা Wi-Fi পুনরায় সংযোগগুলি আরও নির্ভরযোগ্য করে তুলতে pf.conf এ আমার কোন নিয়ম যুক্ত করা উচিত?


1
এটি পরে যারা আসবেন তাদের ক্ষেত্রে এটি প্রাসঙ্গিক হতে পারে: স্পার্কল্যাবস
প্রিভেঞ্জনিং_ নেট

উত্তর:


14

লিটল স্নিচ ব্যবহার করে নেটওয়ার্ক সংযোগগুলি পর্যবেক্ষণ করে, আমি দেখতে পেয়েছি যে অ্যাপল Wi-Fi সংযোগ উপলব্ধ কিনা তা ব্যাকগ্রাউন্ডে এমডিএনএসআরএসপন্ডার অ্যাপ্লিকেশনটি ব্যবহার করে। এমডিএনএসআরসপন্ডার সংযোগটি পরীক্ষা করতে এবং আইপিগুলিতে হোস্টনামগুলি সমাধান করার জন্য ইউএসডি প্যাকেটগুলি নেমসার্ভারগুলিতে প্রেরণ করে।

ইউডিপি নিয়মটি পরিবর্তন করার আগে আমি ওয়াই-ফাইয়ের মাধ্যমে সমস্ত ইউডিপি প্যাকেটগুলিকে এমডিএনএসরেসপন্ডারকে সংযোগ করার অনুমতি দেয়, যার অর্থ ওয়াই-ফাই এখন সংযোগ বিচ্ছিন্ন হওয়ার পরে প্রথমবার পুনরায় সংযোগ স্থাপন করে। যদি ভবিষ্যতে এটি অন্যকে সহায়তা করে তবে মাউন্টেন সিংহের জন্য অ্যাপলের ডিফল্ট নিয়মগুলি সহ আমার চূড়ান্ত pf.conf এর মত দেখাচ্ছে:

#
# com.apple anchor point
#
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"as
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"

#
# Allow connection via Viscosity only
#
wifi=en1 #change this to en0 on MacBook Airs and other Macs without ethernet ports
vpn=tun0
vpn2=tap0

block all

set skip on lo          # allow local traffic

pass on p2p0            #allow AirDrop
pass on p2p1            #allow AirDrop
pass on p2p2            #allow AirDrop
pass quick proto tcp to any port 631    #allow AirPrint

pass on $wifi proto udp # allow only UDP packets over unprotected Wi-Fi
pass on $vpn            # allow everything else through the VPN (tun interface)
pass on $vpn2           # allow everything else through the VPN (tap interface)

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


এটি এমন কিছু যা আমি আকস্মিকভাবে আগ্রহী হয়েছি, আপনার ফলাফলগুলি দেখে আমাকে বাড়ি গিয়ে চেষ্টা করার জন্য অনুপ্রাণিত করা হয়েছে! ধন্যবাদ!
জাকেরভ

@ সিক্সস্লেয়ার মনে হচ্ছে এটি বেশ ভাল কাজ করছে! আমার কাছে স্টার্টআপ এবং ড্রপড সংযোগগুলিতে স্বতঃসংযোগ স্থাপনের জন্য ভিসোসিটি সেট আপ করা হয়েছে, যা পুরো জিনিসটিকে বেশ বিরামবিহীন করে তোলে। প্রধান বিষয় লক্ষনীয় যে pf.conf এবং com.apple.pfctl.plist ওএস আপডেটের পরে ডিফল্টটিতে রিসেট হয়ে যায়, স্পষ্টতই, সুতরাং এটি উভয়ের ব্যাকআপ রাখা ভাল।
নিক

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

এটি দুর্দান্ত - ধন্যবাদ!
কেও

আপনি কি একই সাথে অনেকগুলি ওপেনভিপিএন সংযোগ খোলা এবং সমান্তরালে সেগুলি দিয়ে রাউটিং পরিচালনা করতে পারবেন? (ব্যান্ডউইথ অর্জন করতে এবং যুক্ত করতে)
কেও

11

আপনাকে সমস্ত ইউডিপিকে অনুমতি দেওয়ার দরকার নেই । MDNS মানে 'মাল্টিকাস্ট' থেকে 'এম', এবং এটি একটি নির্দিষ্ট মাল্টিকাস্ট গন্তব্য IP ঠিকানা "লিঙ্কটি স্থানীয় মাল্টিকাস্ট ঠিকানা" বলা, এবং একটি ব্যবহার UDPপোর্ট নম্বর 5353

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

পরিবর্তে এই নিয়মটি কেন ব্যবহার করবেন না:

pass on $wifi proto udp to 224.0.0.251 port 5353

ফায়ারওয়াল কনফিগারেশন সহ থাম্বের একটি খুব গুরুত্বপূর্ণ নিয়ম - আপনার ফায়ারওয়ালের মাধ্যমে ব্যতিক্রম করার সময়, সর্বদা সর্বাধিক সুনির্দিষ্ট নিয়মটি ব্যবহার করার চেষ্টা করুন। বৈশিষ্ট্যটি কখনও কখনও সুবিধার্থে এবং সহজেই ব্যবহারের ব্যয়ে আসে, অর্থাত্ আপনি তখন খুঁজে পেতে পারেন যে আরও কিছু লিঙ্ক-লোকাল প্রোটোকল রয়েছে যার মাধ্যমে আরও কিছু নির্দিষ্ট নিয়ম যুক্ত করা দরকার add

আপনি যদি উপরের নিয়মটিতে অদলবদল করে এবং দেখতে পেয়েছেন যে আসল ওয়াইফাই সমস্যাটি ফিরে এসেছে, তবে আপনার পিএফ আপনার নেটওয়ার্ক ডিভাইসের আইপি ঠিকানাগুলি স্বতঃরূপকরণের জন্য ব্যবহৃত প্রোটোকল ডিএইচসিপি ব্লক করে দিচ্ছে। (কোনও হোম নেটওয়ার্কে, সাধারণত আপনার ব্রডব্যান্ড রাউটারটি আপনার ডিএইচসিপি সার্ভার হবে)। আপনাকে ডিএইচসিপি অনুমতি দেওয়ার যে নিয়মটি দরকার তা হ'ল:

pass on $wifi proto udp from 0.0.0.0 port 68 to 255.255.255.255 port 67

* দ্রষ্টব্য: আপনি প্রতিস্থাপন করার প্রয়োজন হতে পারে 0.0.0.0জন্য anyDHCPREQUESTআপনার কম্পিউটারটি প্রথমে যে প্যাকেটটি প্রেরণ করে, তার উত্সের ঠিকানা রয়েছে 0.0.0.0কারণ সেই পর্যায়ে আপনার কম্পিউটারে এখনও কোনও আইপি ঠিকানা নেই।
সত্যি কথা বলতে, আমি ব্যবহারের দিকে আরও ঝুঁকতে চাই any। অন্য বিকল্পটি হ'ল যে কোনও উত্সের স্পেসিফিকেশন ছিন্ন করা, অর্থাত্ pass on $wifi proto udp to 255.255.255.255 port 67, তবে এর অর্থ আমরা নিয়মের উত্স-বন্দর অংশটি হারাতে পারি এবং যথাসম্ভব সুনির্দিষ্ট হওয়া সর্বদা সর্বাধিক সুরক্ষিত বিকল্প।

আশা করি এইটি কাজ করবে. এখানে কয়েকটি দরকারী লিঙ্ক রয়েছে:

এমডিএনএস: http://en.wikedia.org/wiki/ মাল্টিকাস্ট_ডিএনএস# প্যাকেট_ স্ট্রাকচার

ডিএইচএসপি: http://en.wikedia.org/wiki/ ডাইনামিক_হস্ত_ কনফিগারেশন_প্রোটোকল#DHCP_discovery


1

এটি আমাকে বড় লিপ করতে এবং পিএফ কোডফ ব্যবহার করার জন্য পর্যাপ্ত পটভূমির তথ্য দিয়েছে। ভিপিএন সংযোগ হ্রাসের পরে এটি পুনরায় সংযোগ তৈরি করতে আমি আমার 10.8 এ যা ব্যবহার করেছি তা এখানে:

(আমি কেবল ইথারনেট ব্যবহার করি তবে আপনি $ wifi এর জন্য ল্যান পরিবর্তন করতে পারেন এবং এটি কাজ করা উচিত)

lan=en0
wifi=en1
vpn=tun0
block all
set skip on lo
pass on $lan proto { udp,tcp } to 8.8.8.8
pass on $lan proto tcp to vpn.btguard.com port 1194
pass on $vpn

1

"সহজ" উপায়ে পিএফ বিধি তৈরি করার লক্ষ্যে , বর্তমান (ভিপিএন) ইন্টারফেস সহ এই ছোট কিলসুইচ প্রোগ্রামটি ব্যবহার করা যেতে পারে সহ বিদ্যমান সক্রিয় ইন্টারফেসগুলি সনাক্ত করে,

এখনও প্রক্রিয়াধীন রয়েছে তবে ফায়ারওয়াল নিয়মগুলি সঠিকভাবে তৈরি করার জন্য বাহ্যিক আইপি এবং সক্রিয় ইন্টারফেস সনাক্তকরণের জন্য একটি ভাল সূচনা হতে পারে।

উদাহরণ বা আউটপুট -i(তথ্য) বিকল্পটি ব্যবহার করে :

$ killswitch -i
Interface  MAC address         IP
en1        bc:57:36:d1:82:ba   192.168.1.7
ppp0                           10.10.1.3

public IP address: 93.117.82.123

সার্ভার আইপি পাস করছে -ip:

# --------------------------------------------------------------
# Sat, 19 Nov 2016 12:37:24 +0100
# sudo pfctl -Fa -f ~/.killswitch.pf.conf -e
# --------------------------------------------------------------
int_en1 = "en1"
vpn_ppp0 = "ppp0"
vpn_ip = "93.117.82.123"
set block-policy drop
set ruleset-optimization basic
set skip on lo0
block all
pass on $int_en1 proto udp to 224.0.0.251 port 5353
pass on $int_en1 proto udp from any port 67 to any port 68
pass on $int_en1 inet proto icmp all icmp-type 8 code 0
pass on $int_en1 proto {tcp, udp} from any to $vpn_ip
pass on $vpn_ppp0 all

নিখুঁত থেকে দূরে তবে কাজের অগ্রগতিতে আরও তথ্য / কোড এখানে পাওয়া যাবে: https://github.com/vpn-kill-switch/killswitch


0

- যোগ হিসাবে -

আপনি এই লাইনটি যুক্ত করতে চাইতে পারেন:

pass on $wifi inet6 proto udp from any to FF02:0000:0000:0000:0000:0000:0000:00FB port 5353

এমডিএনএসকে আইপিভি 6 এ পরিচালনা করার অনুমতি দেওয়ার জন্য

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