RHEL 7 (CentOS 7) IP Network Yapılandırması

RHEL 7 network ayarlarını yaparken yardımcı olabileceğini düşündüğüm bazı bilgileri paylaşmak istedim. Bu yazıdaki adımları takip ederek Red Hat Enterprise Linux 7, CentOS 7 ve benzer tabanlı dağıtımlarda gerek statik IP yapılandırması, gerekse DHCP üzerinden dinamik IP yapılandırması yapabilirsiniz.

Bu yazıda, NIC konfigürasyon dosyaları kullanılarak tanımlamalar yapılacaktır. Ancak network konfigürasyonu yapmak için farklı araçlar da – nmcli, nmtui gibi – mevcuttur.

Statik IP vs Dinamik IP

İsimlerinden de anlaşılabileceği üzere; statik IP yapılandırması, elle değiştirilmediği takdirde hep sabit kalacaktır. Ancak dinamik IP yapılandırması, zaman içerisinde kendiliğinden değişebilir.

Hangi Durumlarda Statik IP Kullanmalıyım?

  • Ortamınızda bir DNS sunucusu varsa, tutarlılığı sağlamak için client’larınızda statik IP’yi tercih edebilirsiniz.
  • DNS kullanmasanız bile, birbirleriyle iletişim hâlinde olması gereken cihazlarınız varsa, bu cihazların IP adreslerinde yaşanacak değişiklikler sisteminize zarar verecekse, statik IP kullanmalısınız.
  • Genelde servis veren (authentication server, web server, database server vs.) cihazlarda, statik IP tercih edilir.
  • Örneğin, bu web sitesinin çalıştırıldığı sunucunun, kullandığı database’in IP adresleri statik. Şayet bu adreslerde bir değişiklik yaşanırsa, DNS yeni adresleri yayana kadar siteye erişim sağlanamayacaktır. Benzer şekilde, database sunucusunda gerçekleşecek bir IP değişikliği ile, burada kullanılan WordPress uygulaması problem yaşayacaktır.

Hangi Durumlarda Dinamik IP Kullanmalıyım?

  • Eğer cihazınız sadece network’e katılmayı amaçlıyorsa, dinamik IP kullanabilirsiniz.
  • Network üzerindeki diğer cihazlar, client’ınıza bağımlı çalışmıyorsa dinamik IP tercih edebilirsiniz.
  • Evinizdeki ağınızda yüksek ihtimalle dinamik IP yapılandırması kullanıyorsunuz. Yeni gelen bir client, DHCP üzerinden bir IP adresi alıyor ve network’ünüze dâhil oluyor.
  • Kişisel cihazlarınız, ev ağınızda fazla bir yoğunluk olmadığı için sürekli aynı IP’leri almaya devam ediyor olabilir. Ancak bir production ortamında, bunun garantisi yoktur.

RHEL 7 NIC Konfigürasyon Dosyaları

RHEL 7 ve CentOS 7 dağıtımlarında network konfigürasyon dosyaları varsayılan olarak “/etc/sysconfig/network-scripts” dizininde bulunur.

[root@gnuadmin ~]# ls /etc/sysconfig/network-scripts/
ifcfg-enp0s3  ifdown-bnep  ifdown-isdn    ifdown-sit       ifup          ifup-ippp  ifup-plusb   ifup-sit       ifup-wireless
ifcfg-enp0s8  ifdown-eth   ifdown-post    ifdown-Team      ifup-aliases  ifup-ipv6  ifup-post    ifup-Team      init.ipv6-global
ifcfg-lo      ifdown-ippp  ifdown-ppp     ifdown-TeamPort  ifup-bnep     ifup-isdn  ifup-ppp     ifup-TeamPort  network-functions
ifdown        ifdown-ipv6  ifdown-routes  ifdown-tunnel    ifup-eth      ifup-plip  ifup-routes  ifup-tunnel    network-functions-ipv6

Bu dizin altında “ifcfg-*” isimli dosyalar, ilgili interface’in konfigürasyon dosyasını belirtir. Örneğin, “enp0s3” interafece’i için, “ifcfg-enp0s3” dosyasnı kullanacağız.

RHEL 7 Statik IP Yapılandırması

“enp0s3” interface’ini statik IP ile yapılandırmak istediğimizi düşünelim. Aşağıda, dosyanın içeriğini görebilirsiniz:

[root@gnuadmin ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3
DEVICE=enp0s3
BOOTPROTO=none
ONBOOT=yes
IPADDR=10.0.10.10
NETMASK=255.255.255.0
GATEWAY=10.0.10.1
USERCTL=no
RHEL 7 (CentOS 7) Network Yapılandırması
RHEL 7 (CentOS 7) Network Yapılandırması

Şimdi bu dosya içindeki satırları inceleyelim:

  • DEVICE: Fiziksel portun adı.
  • BOOTPROTO: Boot sırasında kullanılacak olan protokolü belirtir. “none”, herhangi bir protocol kullanılmayacağını belirtir. Burada, DHCP kullanılmasını isteseydik “dhcp”, BOOTP kullanılmasını isteseydik “bootp” yazacaktık.
  • ONBOOT: “yes” ya da “no” değerlerini alır. Portun, cihaz boot edildiğinde aktif edilip edilmeyeceğini belirtir.
  • IPADDR: Cihazın kullanacağı IP adresi.
  • NETMASK: Network’ün subnet bilgisi.
    • PREFIX: Eğer adres yerine prefix belirtmek isterseniz bunu kullanabilirsiniz. Bizim örneğimizde /24 network kullandığımız için “PREFIX=24” ile değiştirebiliriz.
  • GATEWAY: Network’ün gateway adresi.
  • USERCTL: “yes” ise, root dışındaki kullanıcılar da bu interface’i kontrol edebilir. “no” ise kontrol hakkını yalnızca root kullanıcısına bırakır.

Eklenebilecek opsiyonlar bunlardan ibaret değil. Burada port bonding, master-slave yapısı, IPv6 gibi konulardan hiç bahsetmedik.

Dosya içeriğini yazıp kaydettikten sonra, “systemctl restart network” komutunu çalıştırarak servisi yeniden başlatmanız durumunda, yeni konfigürasyonunuzu görebilirsiniz.

RHEL 7 Dinamik IP Yapılandırması

Yukarıda da belirttiğimiz gibi, işleri değiştiren kısım “BOOTPROTO” olacak. Burayı “dhcp” yapacağız. Ayrıca “IPADDR”, “NETMASK”, “GATEWAY”, “PREFIX” gibi opsiyonlara da ihtiyacımız kalmayacak. Çünkü bu bilgiler bize DHCP sunucusundan gelecek.

Örnek yapılandırma dosyası:

DEVICE=enp0s3
BOOTPROTO=dhcp
ONBOOT=yes

RHEL 7 DNS Yapılandırması

Network interface’imizi DHCP ile yapılandırdığımızda, kuvvetle muhtemel DNS adres(ler)i de bize DHCP tarafından sağlanacak. Ancak statik IP yapılandırmasını tercih ediyorsak, kullanılacak DNS server bilgilerini de yapılandırmamıza eklememiz gerekiyor.

Şu an elimizdeki yapılandırma, domain isimlerini çözemiyor:

[root@gnuadmin ~]# ping alisezisli.com.tr
ping: alisezisli.com.tr: İsim ya da servis bilinmiyor
[root@gnuadmin ~]# ping gnuadm.in
ping: gnuadm.in: İsim ya da servis bilinmiyor
[root@gnuadmin ~]# cat /etc/resolv.conf 
# Generated by NetworkManager

/etc/resolv.conf” dosyası, kullanacağımız DNS sunucuları ile ilgili bilgileri barındırır ve gördüğünüz üzere yalnızda bir yorum satırı içeriyor. Başka hiçbir şey yok.

Statik IP yapılandırma dosyamıza şu satırları ekleyelim:

DNS1=208.67.222.222
DNS2=1.1.1.1
DNS3=4.4.4.4

Bu satırlar sayesinde, sırasıyla, hangi DNS sunucularını kullanacağımızı belirtiyoruz. Network servisini yeniden başlattığımızda ise (systemctl restart network), “/etc/resolv.conf” dosyamızdaki değişiklik göze çarpıyor:

[root@gnuadmin ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 208.67.222.222
nameserver 1.1.1.1
nameserver 4.4.4.4

Ufak bir not. Biz, DNS adreslerini interface’in yapılandırmasına yazdık. Ancak syntax’ı gördünüz. Bu girdileri, “/etc/resolv.conf” dosyasına gerekirse kendiniz de ekleyebilirsiniz.

[root@gnuadmin ~]# ping gnuadm.in
PING gnuadm.in (164.90.162.32) 56(84) bytes of data.
64 bytes from 164.90.162.32 (164.90.162.32): icmp_seq=1 ttl=52 time=71.5 ms
64 bytes from 164.90.162.32 (164.90.162.32): icmp_seq=2 ttl=52 time=62.7 ms
^C
--- gnuadm.in ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1005ms
rtt min/avg/max/mdev = 62.798/67.163/71.528/4.365 ms
[root@gnuadmin ~]# ping alisezisli.com.tr
PING alisezisli.com.tr (5.2.84.66) 56(84) bytes of data.
64 bytes from hypnos.alastyr.com (5.2.84.66): icmp_seq=1 ttl=50 time=33.6 ms
64 bytes from hypnos.alastyr.com (5.2.84.66): icmp_seq=2 ttl=50 time=29.6 ms
^C
--- alisezisli.com.tr ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 29.688/31.670/33.652/1.982 ms