Những cổng nào tôi cần mở trong tường lửa để sử dụng NFS?


73

Tôi đang chạy Ubuntu 11.10 - thiết lập NFS để chia sẻ một thư mục giữa nhiều máy chủ khác. Những cổng nào được yêu cầu mở trên tường lửa?


6
Nó phụ thuộc vào phiên bản của giao thức bạn định sử dụng. NFS 4 chỉ yêu cầu 2049 trong khi các phiên bản cũ yêu cầu nhiều hơn.
lzap

Câu trả lời:


97
$ rpcinfo -p | grep nfs

Cổng 111 (TCP và UDP) và 2049 (TCP và UDP) cho máy chủ NFS.

Ngoài ra còn có các cổng cho trạng thái Cụm và máy khách (Cổng 1110 TCP cho trước và 1110 UDP cho sau) cũng như một cổng cho trình quản lý khóa NFS (Cổng 4045 TCP và UDP). Chỉ bạn mới có thể xác định cổng nào bạn cần cho phép tùy thuộc vào dịch vụ nào là cổng chéo cần thiết.


4
Tôi không biết về rpcinfo, điều đó khá hữu ích. Tôi đã không thấy cổng 111 với grep nfs, nhưng tôi đã rời khỏi grep để biết rằng 111 là dành cho portmapper. Cũng tốt để biết! (và như bạn đã đề cập, cần thiết)
kenny

@KennyYounger rpcinfo cũng hữu ích. Nếu điều này trả lời câu hỏi của bạn, đừng quên đánh dấu nó là câu trả lời vì lợi ích của người xem trong tương lai.
Wesley

6
Bạn cần mountd mở khi lần đầu tiên gắn kết hệ thống tập tin. Nó chạy trên một cổng động, vì vậy nó sẽ không giống nhau. Tôi đặt một liên kết đến một hướng dẫn trong câu trả lời của tôi.
bonsaiviking

1
Cảm ơn @bottoviking. Thông tin quan trọng cho quá trình này. Tôi nêu lên câu trả lời của bạn!
kenny

Bạn có thể mô tả ngắn gọn về những dịch vụ đó ("trạng thái cụm và máy khách", "Trình quản lý khóa NFS") làm gì và khi nào chúng có thể cần thiết? Nếu các dịch vụ đó bị chặn bởi tường lửa, các máy chủ và máy khách NFS sẽ xuống cấp một cách duyên dáng hay chỉ khóa để chờ phản hồi?
Nathan Craike

27

Ngoài 111 cho portmapper và 2049 cho nfs, bạn sẽ cần cho phép cổng mountd và có thể rquotad, lockd và statd, tất cả đều có thể động. Hướng dẫn bảo mật NFS tuyệt vời này khuyên bạn nên thay đổi tập lệnh khởi động và cấu hình mô-đun hạt nhân để buộc chúng sử dụng các cổng tĩnh.

Ngoài hướng dẫn ở trên, có một phần trên tường lửa , hãy xem câu trả lời của tôi cho một câu hỏi khác về việc làm cứng NFS.


7
Chúng tôi thực sự thích nội dung, không phải con trỏ đến nội dung. Một précis của nội dung với một liên kết là ok quá và được ưa thích cho một liên kết.
user9517

2
Không chắc chắn về năm 2012 nhưng các khuyến nghị trong các liên kết dường như đã lỗi thời. NFS trên TCP được ưa thích vì nhiều lý do và NFS trên UDP có thể gây ra hỏng dữ liệu thầm lặng trên liên kết nhanh do giới hạn giao thức. Hướng dẫn bảo mật không đề cập đến Kerberos / GSS, v.v.
Maciej Piechotka

Đối với mountd, cuộc sống sẽ dễ dàng hơn rất nhiều nếu bạn cấu hình lại để đảm bảo cổng mountd được cố định. Trên các hệ thống debian, chỉnh sửa giá trị RPCMOUNTDOPTS thành một cái gì đó giống như RPCMOUNTDOPTS="--port 34567"và sau đó khởi động lại với sysctl --system/etc/init.d/nfs-kernel-server restart
user45793

14

Tôi tìm thấy hướng dẫn hữu ích cho vấn đề của mình trên trang này, nhưng không dễ để làm theo công thức. Vì vậy, đây là công thức của tôi.

TL; DR - cần cho phép cả cổng nfs (111, 2049) và cổng mountd sau khi sửa.

Hướng dẫn:


Thiết lập một cổng cố định cho mountd

gksudo gedit /etc/default/nfs-kernel-server
  • bình luận ra dòng này: RPCMOUNTDOPTS=--manage-gids
  • thêm cái này thay vào đó: RPCMOUNTDOPTS="--port 33333"

Hoặc bất kỳ số cổng khác.

Bây giờ hãy thử thiết lập lại nfs bằng cách sử dụng:

sudo service nfs-kernel-server restart

Và kiểm tra nếu nó giúp sử dụng:

rpcinfo -p | grep "tcp.*mountd"

Đối với tôi nó không đủ, nhưng khởi động lại đầy đủ đã khắc phục vấn đề.

( tín dụng )


Thiết lập tường lửa

(1) xóa các quy tắc cũ, thực hiện thủ công hoặc đặt lại nếu đây là cách sử dụng duy nhất cho tường lửa:

sudo ufw reset
sudo ufw enable

(2) thêm cổng nfs & mountd

sudo ufw allow in from 10.0.0.1/20 to any port 111 
sudo ufw allow in from 10.0.0.1/20 to any port 2049
sudo ufw allow in from 10.0.0.1/20 to any port 33333

(Thay đổi thành IP cục bộ của bạn hoặc thành " any" thay vì 10.0.0.1/20)

Đó là tất cả để có nó.


3
Bạn không cần phải khởi động lại toàn bộ hộp. Một đơn giản sudo service nfs-config restarttrước khi khởi động lại nfs-kernel-serversẽ làm tốt.
showp1984

@ showp1984 cảm ơn, tôi sẽ thử điều đó vào lần tới
Amir Uval

Hoặc nếu hệ thống của bạn sử dụng systemctl, nó systemctl restart nfs-kernel-server.service.
fbicknel

Bạn cũng có thể làm tất cả trong một lần sưng: sudo nfs allow proto tcp from 10.0.0.1/20 to any port 111,2049,33333tiếp theo (ok, hai lá phồng) sudo nfs allow proto udp from 10.0.0.1/20 to any port 111,2049,33333. Lưu ý cổng 33333 là theo ví dụ trên. Bạn có thể sử dụng một cổng khác như câu trả lời chỉ ra.
fbicknel

5

Điều này sẽ đưa ra một danh sách tất cả các cổng được sử dụng bởi tất cả các chương trình liên quan đến NFS:

rpcinfo -p | awk '{print $3" "$4}' | sort -k2n | uniq

3

Với FERM, người ta có thể sử dụng Backticks để lấy các cổng từ rpcinfo, ví dụ:

Người phục vụ:

proto tcp {saddr ($CLIENT) {
  dport (`rpcinfo -p | perl -e 'while(<>){/\s+\d+\s+\d\s+(?:tcp)\s+(\d+)/ and $ports{$1}=1}; $, = " "; print sort(keys(%ports)),"\n"'`) ACCEPT; # NFS
}}
proto udp {saddr ($CLIENT) {
  dport (`rpcinfo -p | perl -e 'while(<>){/\s+\d+\s+\d\s+(?:udp)\s+(\d+)/ and $ports{$1}=1}; $, = " "; print sort(keys(%ports)),"\n"'`) ACCEPT; # NFS
}}

Khách hàng:

proto udp {saddr ($SERVER) {ACCEPT;}}  # NFS

(Nếu bạn chỉ sử dụng TCP thì bạn chỉ cần proto tcpmột phần).


1

Đối với các bản ghi, tôi đã phải thêm quyền cho các cổng 111, 2049 1048 cho cấu hình trong đó chia sẻ NFS được xuất bởi máy chủ Windows 2008 R2 và các máy khách là Ubuntu 12.04.4.

Tôi hi vọng điêu nay se giup được ai đo.


2
Nó có thể giúp giải thích lý do tại sao bạn cần cổng 1048 và cách bạn xác định điều đó.
HBruijn

3
Thành thật mà nói, tôi không biết tại sao tôi cần thêm quyền cho 1048, nhưng thêm vào đó đã giải quyết vấn đề của tôi. Tôi chỉ muốn chia sẻ nếu điều đó có thể tiết kiệm thời gian cho người khác trong tương lai. Tôi xin lỗi vì không thể trả lời câu hỏi.
Erdem KAYA
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.