मैं अपने कस्टम एप्लिकेशन के लिए पोर्ट की सूची कैसे आरक्षित करूं?
विशिष्ट होने के लिए, मैं जो उत्पाद बना रहा हूं उसमें बहुत सारी प्रक्रियाएं हैं और उनके बीच बहुत अधिक अंतर है।
मुझे जो समस्या हो रही है, वह है - हर एक बार एक समय में - ओएस मेरे बंदरगाहों को चुरा लेता है। यह दुर्लभ है, लेकिन ऐसा होता है।
ऐसा इसलिए हो सकता है क्योंकि एक अलग एप्लिकेशन ने ":: बाइंड" का उपयोग किया है जिसमें कोई पोर्ट निर्दिष्ट नहीं है।
या कभी-कभी मेरे स्वयं के अनुप्रयोग पोर्ट को चोरी करते हैं जब मैं एक अनबाउंड सॉकेट के साथ ":: कनेक्ट" कहता हूं। जैसा कि मैन पेज से देखा गया है:
यदि सॉकेट पहले से ही एक स्थानीय पते से जुड़ा हुआ नहीं है, तो कनेक्ट करें () इसे एक पते पर बाँध देगा, जो कि सॉकेट के पते का परिवार AF_UNIX नहीं है, एक अप्रयुक्त स्थानीय पता है।
तो मेरा सवाल है, क्या मैं उन बंदरगाहों को आरक्षित कर सकता हूं जिनकी मुझे आवश्यकता है ताकि ओएस उनका उपयोग न करे? क्या इसे / etc / सेवाओं के साथ पूरा किया जा सकता है? या कोई अलग तरीका है?
SELinux
एनफोर्सिंग मोड आपकी आवश्यकता को पूरा कर सकता है, तो मैं अभी भी उस पर सीख रहा हूं। तो बस एक अनुमान है, हो सकता है कि आप अपने बंदरगाहों SELinux
को आरक्षित करने के लिए अपनी नीति को परिभाषित कर सकें , जैसे my_server_port_t tcp 1111, 2222, 3333, 4444-4600
। यदि आपका एप्लिकेशन हर जगह चलेगा (सर्वर एप्लिकेशन नहीं), तो मुझे डर है कि आप नियंत्रित नहीं कर सकते हैं कि SELinux
चालू है या बंद।