Ubuntu 11.10 kullanıyorum - NFS'yi diğer birçok sunucu arasında bir dizin paylaşacak şekilde ayarlıyorum. Güvenlik duvarında hangi portların açılması gerekiyor?
Ubuntu 11.10 kullanıyorum - NFS'yi diğer birçok sunucu arasında bir dizin paylaşacak şekilde ayarlıyorum. Güvenlik duvarında hangi portların açılması gerekiyor?
Yanıtlar:
$ rpcinfo -p | grep nfs
NFS sunucusu için Bağlantı Noktası 111 (TCP ve UDP) ve 2049 (TCP ve UDP).
NFS kilitleme yöneticisi için bir bağlantı noktasının yanı sıra, Küme ve istemci durumu için bağlantı noktaları (birincisi için bağlantı noktası 1110 TCP ve ikincisi için 1110 UDP) ve bağlantı noktaları vardır. Ağ geçidi için hangi servislerin gerekli olduğuna bağlı olarak hangi portlara izin vermeniz gerektiğini belirleyebilirsiniz.
grep nfs
, ancak 111'in ne olduğunu öğrenmek için engebeyi bıraktım portmapper
. Ayrıca bilmek güzel! (ve bahsettiğiniz gibi, gerekli)
Portmapper için 111'e ve nfs için 2049'a ek olarak, bağlantı noktası portuna izin vermeniz ve muhtemelen tümü dinamik olabilen rquotad, lockd ve statd seçeneklerine ihtiyacınız olacaktır. Bu mükemmel NFS güvenlik kılavuzu , başlangıç komut dosyalarınızı ve çekirdek modülü yapılandırmalarınızı statik bağlantı noktaları kullanmaya zorlamak için değiştirmenizi önerir.
Güvenlik duvarlarında bir bölümü olan yukarıdaki kılavuza ek olarak, NFS'nin sertleştirilmesiyle ilgili başka bir soruya cevabımı görün .
RPCMOUNTDOPTS="--port 34567"
ve ardından sysctl --system
ve ile yeniden /etc/init.d/nfs-kernel-server restart
Sorunumla ilgili bu sayfada faydalı talimatlar buldum, ancak tarifi takip etmek kolay olmadı. İşte tarifim.
TL; DR - sabitleme işleminden sonra hem nfs bağlantı noktalarına (111, 2049) hem de bağlantı noktalarına izin vermeniz gerekir.
Talimatlar:
gksudo gedit /etc/default/nfs-kernel-server
RPCMOUNTDOPTS=--manage-gids
RPCMOUNTDOPTS="--port 33333"
Veya başka bir port numarası.
Şimdi nfs kullanarak sıfırlamayı deneyin:
sudo service nfs-kernel-server restart
Ve kullanımına yardımcı olup olmadığını sınayın:
rpcinfo -p | grep "tcp.*mountd"
Benim için yeterli değildi, ancak tam bir yeniden başlatma sorunu çözdü.
( kredi )
(1) eski kuralları silin, bunu el ile yapın veya güvenlik duvarı için tek kullanımlıksa sıfırlayın:
sudo ufw reset
sudo ufw enable
(2) nfs ve mountd portları ekle
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
(Yerel IP’lerinize veya any
yerine " " olarak değiştirin 10.0.0.1/20
)
Hepsi bu kadar.
sudo service nfs-config restart
başlatmadan önce basit olan nfs-kernel-server
sadece iyi olacaktır.
systemctl
, öyle systemctl restart nfs-kernel-server.service
.
sudo nfs allow proto tcp from 10.0.0.1/20 to any port 111,2049,33333
bunu takiben (tamam, iki kabarcıklı foop) sudo nfs allow proto udp from 10.0.0.1/20 to any port 111,2049,33333
. Not 33333 numaralı bağlantı noktası yukarıdaki örnektir. Cevabın gösterdiği gibi başka bir port kullanabilirsiniz.
Bu, NFS ile ilgili tüm programların kullandığı tüm portların bir listesini verecektir:
rpcinfo -p | awk '{print $3" "$4}' | sort -k2n | uniq
FERM ile portları rpcinfo'dan almak için Backticks'i kullanabilirsiniz , örneğin:
Sunucu:
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
}}
Müşteri:
proto udp {saddr ($SERVER) {ACCEPT;}} # NFS
(Yalnızca TCP'yi kullanacaksanız, yalnızca proto tcp
parçaya ihtiyacınız vardır ).
Kayıtlar için, NFS paylaşımının bir Windows 2008 R2 sunucusu tarafından ihraç edildiği ve istemcilerin Ubuntu 12.04.4 olduğu bir yapılandırma için 111, 2049 AND 1048 bağlantı noktaları için izinler eklemek zorunda kaldım.
Umarım bu birine yardımcı olur.