Máy chủ NFS và tường lửa


16

Tôi chưa tìm thấy tài liệu nào về vấn đề này, vì vậy hãy bắt đầu một tài liệu.

Trên máy chủ CentOS 7.1, tôi đã trải qua linuxconfig CÁCH , bao gồm các firewall-cmdmục và tôi có một hệ thống tệp có thể xuất được.

[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

Tuy nhiên, nếu tôi showmounttừ khách hàng, tôi vẫn có vấn đề.

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

Bây giờ, làm thế nào tôi chắc chắn rằng đây là một vấn đề tường lửa? Dễ dàng. Tắt tường lửa. Phía máy chủ:

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

Và phía khách hàng:

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

Khởi động lại tường lửa. Phía máy chủ:

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

Và phía khách hàng:

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

Vì vậy, hãy đi đến thị trấn, bằng cách điều chỉnh các lệnh iptables từ máy chủ RHEL 6 NFS CÁCH ...

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

Lần này, tôi nhận được một thông báo lỗi hơi khác từ máy khách:

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

Vì vậy, tôi biết tôi đang đi đúng hướng. Đã nói rằng, tại sao tôi không thể tìm thấy một hướng dẫn dứt khoát về điều này ở bất cứ đâu? Tôi không thể là người đầu tiên phải tìm ra điều này!

Những firewall-cmdmục tôi đang thiếu?

Ồ, một lưu ý khác. Các /etc/sysconfig/nfstệp của tôi trên máy khách CentOS 6 và máy chủ CentOS 7 vẫn chưa được sửa đổi. Tôi muốn không phải thay đổi (và duy trì!) Chúng, nếu có thể.

Câu trả lời:


40

Điều này là đủ:

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

Không đủ trong trường hợp của tôi. Tôi đã có hai máy chủ NFS, máy chủ đầu tiên phát chính xác và được khách hàng của nó đăng ký, máy chủ thứ hai rõ ràng đang phát sóng nhưng máy khách của nó (máy chủ đầu tiên) không thể 'hiển thị' (xuất khẩu rpc mount: RPC: Không thể nhận; errno = Không có tuyến đường đến máy chủ). Tôi sẽ trở lại đây nếu / khi tôi giải quyết điều này.
Urhixidur

Hóa ra SERVER cần ba dịch vụ (nfs, mountd, rpc-bind) được thêm vào tường lửa của nó (dunno nếu máy khách cũng cần cả ba; nó chỉ có cả ba trong trường hợp của tôi). Trong trường hợp của tôi, máy khách (máy chủ NFS đầu tiên) đã có nó nhưng máy chủ (máy chủ NFS thứ hai) bị thiếu mountd.
Urhixidur

@Urhixidur khách hàng không cần những thứ này vì tường lửa cho phép kết nối đi.
T0xicCode

Lưu ý chính tả của rpc-bind. Mặc dù tôi đã kích hoạt nó systemctl enable rpcbindsystemctl start rpcbind, tường lửa-cmd nói với tôi Error: INVALID_SERVICE: rpcbind. Ngay sau đó tôi nhận ra rằng nó cần một dấu gạch ngang trong bối cảnh này! Họ thực sự là cùng một dịch vụ?
Qwertie

5

Sau khi cấu hình máy chủ NFS, chúng ta sẽ kích hoạt và bắt đầu ba dịch vụ:

  1. nfs-server.service
  2. dịch vụ rpcbind.s
  3. nfs-mountd.service (chỉ cần bắt đầu)

Và cũng cho phép các dịch vụ này trên tường lửa máy chủ:

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

4

Chỉ cần tìm thấy điều này - và nó hoạt động khi vấn đề là SELinux chặn việc đọc ~ / .ssh / ủy quyền trong khi đăng nhập! Đầu tiên, enxure tệp ~ / .ssh / ủy quyền của bạn được điền chính xác và các quyền và quyền của thư mục của nó được đặt chính xác. Nếu sau đó bạn chạy "setenforce 0" trên máy chủ đích SSH và có thể đăng nhập vào máy chủ đó mà không cần nhập mật khẩu, nhưng không thể làm như vậy sau khi nhập "setenforce 1" trên cùng máy chủ đích đó, điều sau đây có thể khắc phục sự cố của bạn:

setsebool -P use_nfs_home_dirs 1

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


0

Tôi sử dụng nfsv4 và hoạt động tốt với các dòng đó, giả sử vùng của bạn là "công khai" và bạn đang sử dụng các cổng mặc định 2049 và 4001

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.