NFS sunucuları ve firewalld


16

Bu konuda çarpık bir belge bulamadım, hadi başlayalım.

Bir CentOS 7.1 ana bilgisayarında, girişler de dahil olmak üzere linuxconfig NASIL YAPILDIfirewall-cmd , ve ihraç edilebilir bir dosya sistemi var.

[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

Ancak, showmountmüşteriden gelirsem, hala bir sorunum var.

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

Şimdi, bunun bir güvenlik duvarı sorunu olduğundan nasıl emin olabilirim? Kolay. Güvenlik duvarını kapatın. Sunucu tarafı:

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

Ve müşteri tarafı:

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

Firewalld'i yeniden başlatın. Sunucu tarafı:

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

Ve müşteri tarafı:

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

Öyleyse, RHEL 6 NFS sunucusundan iptables komutlarını adapte ederek şehre gidelim NASIL YAPILIR ...

[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: 

Bu sefer, istemciden biraz farklı bir hata mesajı alıyorum:

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

Yani, doğru yolda olduğumu biliyorum. Bunu söyledikten sonra, neden bu konuda kesin bir öğretici bulamıyorum? Bunu anlaması gereken ilk kişi olamam!

Hangi firewall-cmdgirişleri kaçırıyorum?

Bir not daha. Benim /etc/sysconfig/nfsCentOS 6 istemci ve CentOs 7 sunucuda dosyaları şimdiye kadar değiştirilmemiş bulunmaktadır. Mümkünse, onları değiştirmek (ve korumak!) Zorunda kalmamayı tercih ederim.

Yanıtlar:


40

Bu yeterli olmalı:

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

Benim durumumda yeterli değil. İki NFS sunucum var, birincisi doğru yayın yapıyor ve müşterileri tarafından abone oluyor, ikincisi görünüşte iyi yayın yapıyor, ancak istemcisi (ilk sunucu) 'showmount' (rpc mount export: RPC: almak; errno = Barınacak yol yok). Bunu çözersem / çözersem buraya geri döneceğim.
Urhixidur

SUNUCU, güvenlik duvarına eklenen üç hizmete (nfs, mountd, rpc-bind) ihtiyaç duyduğu ortaya çıktı (istemcinin üçüne de ihtiyacı varsa dunno; benim durumumda üçüne de sahip). Benim durumumda, istemci (ilk NFS sunucusu) vardı ama sunucu (ikinci NFS sunucusu) mountd eksikti.
Urhixidur

@Urhixidur istemcinin bunlara ihtiyacı yoktur çünkü firewalld giden bağlantılara izin verir.
T0xicCode

Rpc-bind yazımını not edin. Her ne kadar systemctl enable rpcbindve ile etkinleştirsem de systemctl start rpcbind, güvenlik duvarı-cmd söyledi Error: INVALID_SERVICE: rpcbind. Yakında bu bağlamda bir tire işareti gerektiğini anladım! Gerçekten aynı hizmet mi?
Qwertie

5

NFS sunucusunu yapılandırdıktan sonra üç hizmeti etkinleştirmeli ve başlatmalıyız:

  1. nfs server.service
  2. rpcbind.service
  3. nfs-mountd.service (yalnızca başlatma gerekir)

Ayrıca sunucu güvenlik duvarında şu hizmetlere izin verin:

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

4

Bunu buldum - ve sorun SELinux giriş sırasında ~ / .ssh / yetkili_anahtarlarının okunmasını engelliyorsa işe yarıyor! İlk olarak, ~ / .ssh / yetkili_anahtarlar dosyanızı doğru şekilde doldurun ve izinleri ile klasörün izinleri doğru şekilde ayarlanmalıdır. Daha sonra SSH hedef ana bilgisayarında "setenforce 0" komutunu çalıştırırsanız ve parola girmeden bu ana bilgisayara oturum açabiliyorsanız, ancak aynı hedef ana bilgisayara "setenforce 1" girdikten sonra bunu yapamazsanız, aşağıdakiler sorununuzu çözebilir:

setsebool -P use_nfs_home_dirs 1

ref: https://cassjohnston.wordpress.com/2015/06/12/selinux-nfs-home-directories/


0

Nfsv4 kullanıyorum ve bu hatlarla iyi çalışıyor, bölgenizin "genel" olduğunu ve varsayılan bağlantı noktaları 2049 ve 4001'i kullandığınızı varsayalım

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.