Bloğa geri dön

Ubuntu 20.04 Üzerinde NFS Mount Kurulumu

Ubuntu 20.04 Üzerinde NFS Mount Kurulumu

The Ağ Dosya Sistemi (NFS), dağıtık bir depolama çözümüdür. Yerel sunucuda uzak dizinlerin bağlanmasına izin veren ve bunu yerel depolama alanıymış gibi kullanan bir dosya sistemi protokolüdür. NFS, birden fazla istemcinin uzak depolama alanını paylaşmasına olanak tanır. Düzenli olarak paylaşılan kaynaklar gerektiren ortamlar için son derece uygundur. NFS, ONC RPC (Open Network Computing Remote Procedure Call) sistemi üzerine kurulmuştur. RFC (Request for Comments) içinde tanımlanmış açık bir standarttır. Bu, herkesin protokolü uygulayabilmesini sağlar.

Bu kılavuzda, Ubuntu 20.04 üzerinde bir NFS bağlama (mount) işlemi kurma ve yapılandırma adımlarını inceleyeceğiz.

Gereksinimler

NFS tanımının da belirttiği gibi, NFS yapılandırmasının iki bölümü vardır:

  • Host: Verileri fiziksel olarak depolar ve depolama alanını “istemci” (client) sistemlerle paylaşır.

  • Client: “Host” sisteme bağlanan ve uzak depolama alanını yerelmiş gibi kullanan sistem.

Gösterimimiz için her ikisi de Ubuntu 20.04 ile yapılandırılmış iki sunucu kullanacağız. İşte Ubuntu sunucunuzu nasıl kuracağınıza dair kolay bir kılavuz. Kılavuz boyunca bu sunucular host ve client olarak adlandırılacaktır. Birden fazla olsa bile client için yapılacak işlemin aynı olacağını unutmayın.

Sunuculara aşağıdaki IP adresleri atanmıştır. Bu sunucular CloudSigma tarafından barındırılmaktadır:

  • host: 31.171.240.79

  • client: 31.171.250.109

Bunları uygun IP adresleriyle değiştirdiğinizden emin olun.

NFS Kurulumu

NFS, resmi Ubuntu depolarında kolayca mevcuttur. host ve client sistemleri için farklı yazılım paketleri vardır.

  • Host üzerinde NFS Kurulumu

Host üzerinde, makinenin bir NFS host olarak hizmet vermesini sağlayacak bileşenlere ihtiyacımız var. Bu, nfs-kernel-server paketi biçiminde gelir. Ubuntu, paket yöneticisi olarak APT kullanır. İlk olarak terminali başlatın ve APT paket veritabanını güncelleyin:

Server Apt Update

Ardından, nfs-kernel-server paketini kurun. Gerekirse, APT ek bağımlılıkları otomatik olarak halledecektir:

Install nfs kernel server

  • İstemci (Client) üzerinde NFS Kurulumu

On the client sisteminde, ağ üzerinden host dizinlerine bağlanma işlevselliğine ihtiyacımız var. NFS sunucu işlevselliği gerektirmez. Ubuntu'da bu, nfs-common paketinde bir araya getirilmiştir. APT paket veritabanını güncelleyin:

Client apt update

Ardından, nfs-common paketini kurun:

Install nfs common

Host Üzerindeki Paylaşılan Dizinler

Sırada, her biri farklı bir yapılandırmaya sahip iki ayrı dizini paylaşacağız. NFS bağlamalarının süper kullanıcı (superuser) erişimi açısından nasıl çalıştığına dair iki temel yöntemi göstereceğiz. Varsayılan olarak, süper kullanıcılar tüm sistem üzerinde her şeyi yapma yetkisine sahiptir. Ancak, NFS ile bağlanan dizinler, bağlandıkları sistemin bir parçası değildir. NFS sunucusu, süper kullanıcı ayrıcalığı gerektiren herhangi bir işlemi gerçekleştirmeyi reddedecektir. Bu kısıtlama, istemcilerin NFS bağlamaları üzerinde yazma, sahiplikleri yeniden atama ve diğer süper kullanıcı görevlerini gerçekleştirme yetkisinin olmaması anlamına gelir.

Belirli güvenilir kullanıcıların bağlı dosya sistemlerinde bu görevleri gerçekleştirmesine izin vermek mümkündür. Ancak bu durum bir risk unsuru taşır, çünkü böyle bir client potansiyel olarak host üzerinde tam erişim elde edebilir. Bu risk, uygun kullanıcı izni yönetimi ile azaltılabilir. Linux'ta sudoers dosyası, sistemdeki tüm kullanıcı ayrıcalıklarını kontrol eder. Daha fazla bilgi için, Linux sudoers dosyasının nasıl yapılandırılacağına.

  • Genel amaçlı bağlama (mount)

İlk örnek, varsayılan NFS davranışlarına sahip genel amaçlı bir NFS bağlaması olacaktır. Bu yaklaşımda, istemcinin bağlamalar üzerinde süper kullanıcı işlemleri gerçekleştirmesi son derece zordur. Bu tür NFS bağlamaları genellikle dosya depolama, bir CMS (İçerik Yönetim Sistemi) kullanarak yükleme yapma veya proje dosyalarını paylaşma vb. işlemler için yaygın olarak dağıtılır.

Aşağıdaki adımlar host sisteminde gerçekleştirilecektir. İlk olarak, paylaşım için nfs:

Create nfs general dir

Dizin sudo yetkisiyle oluşturulduğu için sahibi root:

List nfs general

Varsayılan yapılandırma olarak NFS, güvenlik önlemleri nedeniyle istemci tarafındaki herhangi bir root işlemini nobody:nogroup kimlik bilgilerine çevirecektir. Tutarlılık için, dizin sahipliğini bu kimlik bilgileriyle eşleşecek şekilde değiştirin:

Change owner nogroup

  • Ev dizini

İkinci örnek, host kullanıcısının ev dizinini istemciler için kullanılabilir hale getirmektir. Seçilen istemcilerden güvenilen yöneticiler, kullanıcıları kolayca yönetmek için erişebilirler. /home dizini varsayılan olarak mevcuttur, bu nedenle herhangi bir dizin oluşturmaya gerek yoktur. Dizin izinlerine gelince, faydadan çok soruna yol açacağı için herhangi bir değişiklik yapmaya gerek yoktur.

NFS Dışa Aktarımlarını Yapılandırma

Paylaşılacak dizinler artık oluşturuldu. Sırada, bunları istemciler için kullanılabilir hale getirmek üzere NFS'nin yapılandırılması var. NFS, hangi dizinlerin paylaşılacağını takip etmek için bir yapılandırma dosyası kullanır. Tercih ettiğiniz metin düzenleyicide aşağıdaki NFS yapılandırma dosyasını açın:

exports file

Dosyanın yorum bölümü, yapılandırmanın genel sözdizimi yapısını açıklar. Kısacası, herhangi bir dizin aşağıdaki biçimde bildirilmelidir:

Paylaşmaya karar verdiğimiz iki dizin için yapılandırma şu şekilde görünecektir. Her iki dizin de neredeyse aynı yapılandırma seçeneklerine sahiptir:

exports file mod

İşte yapılandırma seçeneklerinin hızlı bir açıklaması:

  • rw: İstemciye birim üzerinde hem okuma hem de yazma izni verilir.

  • sync: Yanıt vermeden önce NFS'yi değişiklikleri diske yazmaya zorlar. Daha kararlı ve tutarlı bir deneyim sunar. Yanıt, uzak birimin gerçek durumunu yansıtacaktır. Ancak dosya işlemleri daha yavaş olacaktır.

  • no_subtree_check: Alt ağaç kontrolünü engeller. Devre dışı bırakılmazsa, ana bilgisayarlar istemciden gelen her istek için dışa aktarılan ağaçta dosyanın varlığını kontrol etmeye zorlanacaktır. Bu durum, örneğin istemci dosyayı kullanırken dosyanın yeniden adlandırılması gibi birçok soruna yol açabilir. Çoğu durumda, alt ağaç kontrollerini devre dışı bırakmak en iyi yoldur.

  • no_root_squash: Daha önce belirtildiği gibi, NFS uzak root kullanıcısından gelen her isteği yetkisiz bir kullanıcıya çevirecektir. Bu, ana bilgisayar sistemine istenmeyen erişimi önlemek için tasarlanmış bir güvenlik özelliğidir. Ancak bu seçeneğin kullanılması bu davranışı devre dışı bırakacaktır.

Yapılandırma dosyasını kaydedin ve düzenleyiciden çıkın. Değişikliklerin geçerli olması için NFS sunucusunu yeniden başlatın:

Restart nfs kernel server

Güvenlik Duvarını Ayarlama

Herhangi bir sunucu için uygun güvenlik duvarı yapılandırması bir zorunluluktur. Ubuntu 20.04 sunucunuzu buna göre yapılandırdığınızı varsayarsak, UFW güvenlik duvarı aktif olmalıdır. Çoğu Linux dağıtımıyla birlikte gelen basit ama güçlü bir güvenlik duvarıdır. Yeni başlayanlar için, UFW'yi, nasıl çalıştığını ve örneklerle yaygın UFW kullanımını açıklayan hızlı bir kılavuz aşağıdadır.

Varsayılan olarak güvenlik duvarı gelen ve giden tüm trafiği engelleyecektir. NFS sunucusunun düzgün bir şekilde bağlanabilmesini ve trafik alışverişinde bulunabilmesini sağlamak için NFS protokolü için bir istisna eklememiz gerekir. İlk olarak, güvenlik duvarının durumunu kontrol edin. Bu işlem aynı zamanda mevcut tüm kuralları da yazdıracaktır:

ufw status

Gördüğümüz gibi, sisteme yalnızca SSH trafiğine izin veriliyor. NFS trafiğine izin vermek için bir istisna eklememiz gerekiyor.

Çoğu durumda, gerekli trafiğe izin veren en kısıtlayıcı kuralın kullanılması şiddetle tavsiye edilir. Bu nedenle, ana bilgisayara yalnızca seçilen istemcilerin bağlanmasına izin vereceğiz:

ufw allow ports

Bundan sonra, güvenlik duvarı durumunu tekrar kontrol edin:

ufw status after change

Bağlama Noktası Oluşturma

Sunucu artık istemci sisteminin NFS protokolüne bağlanmasına izin vermeye hazır. Sırada, istemciyi hazırlamamız gerekiyor. Uzak birime erişmek için, bunun yerel olarak istemci üzerine bağlanması gerekir. Bağlama noktası için özel bir boş dizin kullanılması önerilir.

İki uzak birim için iki ayrı bağlama noktası oluşturun:

Create client nfs general directory

Create client nfs home directory

Bağlama noktaları hazır olduğuna göre, uzak birimleri bağlamanız gerekir:

Mount general directory on client

Mount home directory on client

Bağlamaların başarılı olup olmadığını doğrulayabiliriz. Bağlı tüm birimlerin listesini kontrol edin:

Disk free in client

İşte bu kadar! Uzak birimler başarıyla bağlandı. Aşağıdaki komutu kullanarak alan kullanımını da kontrol edebiliriz:

Disk usage in client home

NFS Erişimini Test Etme

Şimdiye kadar uzak birimler düzgün bir şekilde bağlandı. Ancak, istemci uzak birimdeki verileri okuyamaz/yazamazsa bunun hiçbir yararı olmayacaktır. Doğrulamak için, NFS bağlama noktalarında sahte bir dosya oluşturun. Burada dosya, root'a özgü yapılandırmaların düzgün çalışıp çalışmadığını test etmek için root yetkisiyle, root'a özgü yapılandırmaların düzgün çalışıp çalışmadığını test etmek için oluşturulacaktır:

Create file in nfs

Ardından, dosyanın sahipliğini kontrol edin:

Check ownership of file created

Gördüğümüz gibi, NFS dosya sahibini nobody:nogroup olarak çeviriyor. /var/nfs/ general dizini nobody:nogroup sahipliğine sahip olduğundan, NFS dosya sahipliğini çeviriyor. Diğer NFS bağlama noktasını test etme zamanı:

Create home file

Dosyanın varlığını ve sahipliğini kontrol edin:

Check ownership of home file

Bu durumda, NFS dosyanın sahipliğini çevirmedi. Bu istemci, yönetimsel eylemleri gerçekleştirebilecek şekilde yapılandırılmıştı. Dahası, orijinal host dizini /home, nobody:nogroup sahipliğine sahip değil..

Ek İpuçları

  • Açılışta Bağlama

Şimdiye kadar, NFS birimini yerel bir dizine manuel olarak bağlamamız gerekiyordu. Bağlantı kesilmezse, NFS bağlamaları sistem yeniden başlayana kadar devam eder. NFS birimi düzenli olarak kullanılıyorsa, manuel bağlama son derece zahmetli hale gelir. Birden fazla NFS bağlaması olması durumunda, bunları tek tek manuel olarak bağlamak pratik değildir.

Using the /etc/fstab dosyasını kullanarak süreci otomatikleştirebiliriz. Açılış sırasında bu betik, NFS birimlerini hedef bağlama noktalarına otomatik olarak bağlayacaktır. Dosyayı bir metin düzenleyicide açın:

fstab file

Host sistemin uzak birimlerini bağlamak için aşağıdaki satırları ekleyin:

fstab file after change

Betiği kaydedin ve metin düzenleyiciyi kapatın. Bir sonraki açılışta Linux, uzak birimleri otomatik olarak bağlayacaktır. Sistem bağlanırken ve birimleri bağlarken sistemin açılmasının biraz zaman alabileceğini unutmayın.

  • NFS Biriminin Bağlantısını Kesme

Uzak birim artık gerekli değilse, birimlerin bağlantısını kesmek onları istemci sisteminden kaldıracaktır. Ancak bağlantıyı kesmeden önce, hiçbir uygulamanın/betiğin uzak birimi kullanmadığından emin olun. NFS bağlamalarının bağlantısını kesmek, diğer bağlamaların bağlantısını kesmeye benzer. Bu durumda, /nfs/home ve /nfs/general birimlerinin bağlantısını kesin:

Unmount nfs

Ardından, işlemi doğrulayın:

Disks after unmount

Son Düşünceler

Bu kılavuzda, bir NFS sunucusu oluşturduk ve NFS uzaktan paylaşımının bazı temel özelliklerini gösterdik. NFS'yi bir üretim ortamında uygulamak istiyorsanız, NFS protokolünün şifrelenmediğini unutmayın. Bu durum, örneğin ortadaki adam (man-in-the-middle) saldırıları gibi bazı güvenlik endişelerine yol açabilir.

Keyifli bilişimler!

author

Pranay Kapgate

Yazar · CloudSigma

Preslav Dobrev, CloudSigma'da Kreatif Tasarımcı olarak görev yapmakta olup geleneksel ve yenilikçi pazarlama kanallarını kullanarak tutarlı bir kurumsal kimlik oluşturmaya odaklanmaktadır. Sanatsal vizyonu stratejik pazarlamayla harmanlayarak etkili marka anlatıları oluşturma konusunda oldukça yeteneklidir.

Yorumlar

Henüz yorum yapılmamış. İlk siz olun.