एनएफएस सर्वर और फ़ायरवॉल


16

मुझे इस पर एक स्लैम-डंक दस्तावेज़ नहीं मिला है, तो चलिए शुरू करते हैं।

एक सेंटोस 7.1 होस्ट पर, मैं प्रविष्टियों सहित लिनक्सकोन्फिग एचओडब्ल्यू-टू के माध्यम से चला गया firewall-cmdहूं, और मेरे पास एक निर्यात योग्य फाइल सिस्टम है।

[root@<server> ~]# firewall-cmd --list-all
internal (default, active)
  interfaces: enp5s0
  sources: 192.168.10.0/24
  services: dhcpv6-client ipp-client mdns ssh
  ports: 2049/tcp
  masquerade: no
  forward-ports: 
  rich rules: 

[root@<server> ~]# showmount -e localhost
Export list for localhost:
/export/home/<user> *.localdomain

हालांकि, अगर मैं showmountग्राहक से, मुझे अभी भी एक समस्या है।

[root@<client> ~]# showmount -e <server>.localdomain
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

अब, मुझे कैसे यकीन है कि यह एक फ़ायरवॉल समस्या है? आसान। फ़ायरवॉल बंद करें। सर्वर साइड:

[root@<server> ~]# systemctl stop firewalld

और ग्राहक पक्ष:

[root@<client> ~]# showmount -e <server>.localdomain
Export list for <server>.localdomain:
/export/home/<server> *.localdomain

फ़ायरवॉल को पुनरारंभ करें। सर्वर साइड:

[root@<server> ~]# systemctl start firewalld

और ग्राहक पक्ष:

[root@<client> ~]# showmount -e <server>.localdomain
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

तो, आइए एक RHEL 6 NFS सर्वर HOW-TO से iptables कमांड को अडॉप्ट करके, शहर में जाएं ।

[root@ ~]# firewall-cmd \
>  --add-port=111/tcp \
>  --add-port=111/udp \
>  --add-port=892/tcp \
>  --add-port=892/udp \
>  --add-port=875/tcp \
>  --add-port=875/udp \
>  --add-port=662/tcp \
>  --add-port=662/udp \
>  --add-port=32769/udp \
>  --add-port=32803/tcp
success

[root@<server> ~]# firewall-cmd \
>  --add-port=111/tcp \
>  --add-port=111/udp \
>  --add-port=892/tcp \
>  --add-port=892/udp \
>  --add-port=875/tcp \
>  --add-port=875/udp \
>  --add-port=662/tcp \
>  --add-port=662/udp \
>  --add-port=32769/udp \
>  --add-port=32803/tcp \
>  --permanent
success

[root@<server> ~]# firewall-cmd --list-all
internal (default, active)
  interfaces: enp5s0
  sources: 192.168.0.0/24
  services: dhcpv6-client ipp-client mdns ssh
  ports: 32803/tcp 662/udp 662/tcp 111/udp 875/udp 32769/udp 875/tcp 892/udp 2049/tcp 892/tcp 111/tcp
  masquerade: no
  forward-ports: 
  rich rules: 

इस बार, मुझे क्लाइंट से थोड़ा अलग त्रुटि संदेश मिलेगा:

[root@<client> ~]# showmount -e <server>.localdomain
rpc mount export: RPC: Unable to receive; errno = No route to host

इसलिए, मुझे पता है कि मैं सही रास्ते पर हूं। ऐसा कहने के बाद, मुझे इस पर एक निश्चित ट्यूटोरियल क्यों नहीं मिल सकता है? मैं यह पता लगाने वाला पहला व्यक्ति नहीं हो सकता!

मुझे कौन सी firewall-cmdप्रविष्टियाँ याद आ रही हैं?

ओह, एक और नोट। /etc/sysconfig/nfsCentOS 6 क्लाइंट और CentOS 7 सर्वर पर मेरी फाइलें अब तक अनमॉडिफाइड हैं। यदि संभव हो तो मैं उन्हें बदलना (और बनाए रखना) नहीं करना चाहूंगा।

जवाबों:


40

यह पर्याप्त होना चाहिए:

firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --reload

मेरे मामले में पर्याप्त नहीं है। मुझे दो एनएफएस सर्वर मिले हैं, पहला एक सही ढंग से प्रसारित होता है और उसके ग्राहकों द्वारा सब्सक्राइब किया जाता है, दूसरा जाहिर तौर पर सभी सही प्रसारित कर रहा है लेकिन इसका ग्राहक (पहला सर्वर) 'शो-माउन्ट' (आरपीसी माउंट एक्सपोर्ट: आरपीसी: असमर्थ है) प्राप्त; इरनो = होस्ट करने का कोई मार्ग नहीं)। अगर मैं इसे हल करता / करती हूँ तो मैं यहाँ वापसी करूँगी।
उरिखीदुर

SERVER को तीन सेवाओं की आवश्यकता होती है (nfs, mountd, rpc-bind) को अपने फ़ायरवॉल में जोड़ा जाता है (यदि ग्राहक को तीनों की भी आवश्यकता है, तो यह मेरे मामले में सभी तीनों के लिए आवश्यक है)। मेरे मामले में, क्लाइंट (पहले एनएफएस सर्वर) के पास यह था लेकिन सर्वर (दूसरा एनएफएस सर्वर) गायब था।
उरुखीदुर

@ ग्राहक को क्लाइंट की ज़रूरत नहीं पड़नी चाहिए क्योंकि फ़ायरवॉल आउटगोइंग कनेक्शन की अनुमति देता है।
T0xicCode

आरपीसी-बाइंड की वर्तनी पर ध्यान दें। हालाँकि मैंने इसे सक्षम किया systemctl enable rpcbindऔर systemctl start rpcbind, फ़ायरवॉल- cmd ने मुझे बताया Error: INVALID_SERVICE: rpcbind। जल्द ही मुझे एहसास हुआ कि इसे इस संदर्भ में एक डैश की जरूरत है! क्या वे वास्तव में एक ही सेवा हैं?
क्वर्टी

5

एनएफएस सर्वर को कॉन्फ़िगर करने के बाद हमें तीन सेवाओं को सक्षम और शुरू करना चाहिए:

  1. एनएफएस-server.service
  2. rpcbind.service
  3. nfs-Mountd.service (केवल प्रारंभ की आवश्यकता है)

और सर्वर फ़ायरवॉल पर भी इन सेवाओं की अनुमति दें:

# firewall-cmd --permanent --add-service=nfs
# firewall-cmd --permanent --add-service=rpcbind
# firewall-cmd --permanent --add-service=mountd
# firewall-cmd --reload

4

बस यह पाया गया - और यह काम करता है जब समस्या SELinux है लॉगिन के दौरान ~ / .ssh / अधिकृत_की की रीडिंग को ब्लॉक करना! सबसे पहले, अपनी ~ / .ssh / अधिकृत_की फ़ाइल को ठीक से आबाद करें और इसकी अनुमतियाँ और इसके फ़ोल्डर की अनुमतियाँ सही ढंग से सेट की गई हों। यदि आप SSH गंतव्य होस्ट पर "सेटेनफोर्स 0" चलाते हैं और पासवर्ड दर्ज किए बिना उस होस्ट में लॉगिन करने में सक्षम हैं, लेकिन उसी गंतव्य होस्ट पर "सेटेनफोर्स 1" दर्ज करने के बाद ऐसा नहीं कर सकते, तो निम्नलिखित आपके मुद्दे को ठीक कर सकता है:

setsebool -P use_nfs_home_dirs 1

रेफरी: https://cassjohnston.wordpress.com/2015/06/12/selinux-nfs-home-directories/


0

मैं nfsv4 का उपयोग करता हूं और उन पंक्तियों के साथ ठीक काम करता हूं, जो आपके ज़ोन को "सार्वजनिक" मान रहा है और आप डिफ़ॉल्ट पोर्ट 20494/1 का उपयोग कर रहे हैं

firewall-cmd --permanent --add-service=nfs --zone=public
firewall-cmd --permanent --add-service=mountd --zone=public
firewall-cmd --permanent --add-service=rpc-bind --zone=public
firewall-cmd --permanent --add-port=4001/udp --zone=public
firewall-cmd --permanent --add-port=4001/tcp --zone=public
firewall-cmd --permanent --add-port=2049/tcp --zone=public
firewall-cmd --permanent --add-port=2049/udp --zone=public
firewall-cmd --reload
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.