Giriş
Linux tabanlı sistemlerde ağ yapılandırması, sunucuların, iş istasyonlarının ve IoT cihazlarının diğer sistemlerle iletişim kurabilmesi için temel bir gerekliliktir. Geleneksel olarak komut satırı araçları ile yapılan bu işlemler, günümüzde NetworkManager ve Netplan gibi daha modern ve otomatikleştirilmiş araçlarla da yönetilebilmektedir. Bu rehberde, Linux ağ yapılandırmasının temellerini, sık kullanılan komutları, yapılandırma dosyalarını ve sorun giderme yöntemlerini ayrıntılı bir şekilde ele alacağız. Amacımız, hem yeni başlayanlar hem de deneyimli kullanıcılar için kapsamlı bir başvuru kaynağı oluşturmaktır.
Linux'un modüler yapısı sayesinde, ağ ayarlarınızı ihtiyaçlarınıza göre ince ayar yapma esnekliğine sahipsiniz. İster basit bir DHCP istemcisi ayarlıyor olun, ister karmaşık bir statik IP yönlendirme tablosu oluşturun, doğru araçları ve bilgiyi kullanarak her şeyi başarabilirsiniz. Bu rehber, ağ arayüzlerinin yönetimi, IP adreslerinin atanması, yönlendirme tablolarının düzenlenmesi, DNS çözünürlüğü ve temel güvenlik duvarı yapılandırması gibi konuları adım adım açıklayacaktır.
1. Ağ Arayüzlerini Tanıma ve Yönetme
Linux sistemlerdeki ağ arayüzleri genellikle `eth0`, `wlan0` gibi isimlerle veya modern sistemlerde `enp0s3`, `wlp2s0` gibi daha kalıcı ve tahmin edilebilir isimlerle anılır. Bu arayüzleri tanımak ve durumlarını kontrol etmek, ağ yapılandırmasının ilk adımıdır.
1.1. `ip` Komutu (Önerilen)
`ip` komutu, `net-tools` paketindeki `ifconfig`, `route`, `netstat` gibi eski komutların yerini almıştır ve daha kapsamlı işlevsellik sunar. Modern Linux dağıtımlarında ağ yönetimi için tercih edilen araçtır.
Bir sistemdeki tüm ağ arayüzlerini ve durumlarını görmek için:
Çıktı örneği:
Belirli bir arayüzü etkinleştirmek veya devre dışı bırakmak için:
1.2. `ifconfig` Komutu (Eski)
Bazı eski sistemlerde veya alışkanlıktan dolayı hala kullanılabilen `ifconfig` komutu, arayüzlerin IP adresleri, MAC adresleri ve durumları hakkında bilgi sağlar.
Çıktı örneği:
Belirli bir arayüzü etkinleştirmek veya devre dışı bırakmak için:
2. IP Adreslerini Yapılandırma
Ağ arayüzlerine IP adresi atamak, ağ üzerinden iletişim kurabilmek için hayati önem taşır. IP adresleri statik (elle) veya dinamik (DHCP sunucusundan) atanabilir.
2.1. Statik IP Yapılandırması (`ip` ile)
Bir arayüze statik IP adresi atamak için:
Bu komutla eklenen IP adresi sistem yeniden başlatıldığında kaybolur. Kalıcı yapılandırma için dosya tabanlı yöntemler kullanılır.
2.2. DHCP İstemcisi Yapılandırması
Çoğu masaüstü sistemi ve bazı sunucular, IP adresini bir DHCP sunucusundan otomatik olarak alır. Bu genellikle `dhclient` veya `NetworkManager` tarafından yönetilir. Bir arayüze DHCP ile adres atamak için:
3. Ağ Yönlendirme (Routing) Tabloları
Linux sistemi, paketleri doğru hedeflere ulaştırmak için bir yönlendirme tablosu kullanır. Bu tablo, hangi ağların hangi arayüzden veya ağ geçidinden erişilebileceğini belirtir.
3.1. Yönlendirme Tablosunu Görüntüleme (`ip` ile)
Çıktı örneği:
3.2. Varsayılan Ağ Geçidi Ekleme
İnternet'e veya diğer harici ağlara erişim için bir varsayılan ağ geçidi (default gateway) tanımlamanız gerekir:
Mevcut varsayılan ağ geçidini silmek için:
4. DNS Çözümlemesi
Domain Name System (DNS), insan tarafından okunabilen alan adlarını (örneğin `google.com`) makine tarafından okunabilen IP adreslerine çevirir. Linux'ta DNS çözümlemesi genellikle /etc/resolv.conf dosyası tarafından yönetilir.
4.1. `/etc/resolv.conf` Dosyası
Bu dosya, sistemin kullanacağı DNS sunucularını listeler. DHCP istemcileri veya NetworkManager gibi servisler bu dosyayı otomatik olarak güncelleyebilir. Elle düzenleme yaparken dikkatli olun, çünkü değişiklikler üzerine yazılabilir.
Örnek `/etc/resolv.conf` içeriği:
Bu dosyadaki `nameserver` satırları, kullanılacak DNS sunucularının IP adreslerini belirtir.
4.2. DNS Sorgulama Araçları
Bir alan adının IP adresini sorgulamak veya DNS çözümlemesini test etmek için `dig` veya `nslookup` komutları kullanılır.
5. Kalıcı Ağ Yapılandırması (Dosya Tabanlı)
Yukarıdaki `ip` komutları ile yapılan değişiklikler geçicidir ve sistem yeniden başlatıldığında kaybolur. Kalıcı yapılandırma için, kullanılan dağıtıma ve ağ yönetim aracına bağlı olarak farklı yapılandırma dosyaları düzenlenir.
5.1. Debian/Ubuntu ( `/etc/network/interfaces`)
Bu dağıtımlarda klasik yöntem, `/etc/network/interfaces` dosyasını düzenlemektir.
DHCP istemcisi için:
Statik IP yapılandırması için:
Değişiklikleri uygulamak için ağı yeniden başlatın (veya sistemi):
5.2. Red Hat/CentOS ( `/etc/sysconfig/network-scripts/ifcfg-enp0s3`)
Red Hat tabanlı sistemlerde arayüz başına bir yapılandırma dosyası bulunur.
DHCP için (`/etc/sysconfig/network-scripts/ifcfg-enp0s3`):
Statik IP için:
Değişiklikleri uygulamak için ağ servisini yeniden başlatın:
5.3. Netplan (Modern Ubuntu)
Modern Ubuntu sürümleri Netplan'ı kullanır. Yapılandırma dosyaları `/etc/netplan/` altında `.yaml` uzantısıyla bulunur.
Örnek Netplan yapılandırması (`/etc/netplan/01-netcfg.yaml`):
Değişiklikleri uygulamak için:
6. Güvenlik Duvarı Yapılandırması (Firewall)
Linux sistemlerde güvenlik duvarı, ağ trafiğini filtrelemek ve sistemi yetkisiz erişimden korumak için kritik öneme sahiptir. En yaygın kullanılan güvenlik duvarı araçları `iptables` ve `ufw` (basit bir iptables arayüzü)dir.
6.1. `ufw` (Uncomplicated Firewall)
`ufw`, iptables kurallarını basitleştiren bir araçtır ve kullanımı kolaydır.
`ufw`'yi etkinleştirme:
Belirli portları açma (örneğin SSH - port 22):
Belirli bir IP adresinden gelen trafiği engelleme:
`ufw` durumunu kontrol etme:
6.2. `iptables`
`iptables`, Linux çekirdeğinin netfilter modülü için gelişmiş bir kullanıcı alanı programıdır. Çok güçlü ancak karmaşıktır.
Tüm mevcut kuralları listeleme:
SSH (port 22) trafiğine izin veren bir kural ekleme:
Tüm diğer gelen trafiği engelleme (dikkatli kullanın!):
`iptables` kuralları varsayılan olarak kalıcı değildir. Kalıcı hale getirmek için `iptables-persistent` gibi paketler veya özel scriptler kullanılır.
7. Ağ Sorun Giderme (Troubleshooting)
Ağ sorunları yaygın olabilir ve doğru araçlarla hızlıca teşhis edilebilir. İşte temel sorun giderme adımları ve araçları:
7.1. Bağlantı Kontrolü (`ping`, `traceroute`)
* `ping`: Bir ana bilgisayara ulaşılabilirliği ve gecikmeyi test eder.
* `traceroute` / `tracepath`: Bir paketin hedefe ulaşana kadar geçtiği tüm yönlendiricileri (hop) gösterir. Bağlantı sorunlarının nerede olduğunu belirlemekte yardımcı olur.
7.2. Ağ Durumu ve Port Kontrolü (`netstat`, `ss`)
* `netstat` (Eski): Aktif bağlantıları, dinleyen portları, yönlendirme tablolarını gösterir.
Bu komut, TCP (`t`), UDP (`u`) bağlantılarını, dinleyen (`l`) portları, sayısal (`n`) adresleri ve program (`p`) isimlerini gösterir.
* `ss` (Önerilen): `netstat`'tan daha hızlı ve modern bir alternatiftir. Benzer bilgileri sağlar.
7.3. IP Adresi ve Arayüz Kontrolü (`ip addr`, `ip link`)
Sisteminizin doğru IP adresini alıp almadığını veya ağ arayüzlerinin etkin olup olmadığını kontrol edin.
7.4. DNS Sorunları (`dig`, `nslookup`)
Bir web sitesine IP adresiyle erişebiliyor ancak alan adıyla erişemiyorsanız, DNS sorunları yaşıyor olabilirsiniz. `/etc/resolv.conf` dosyasını ve DNS sunucularınızın erişilebilirliğini kontrol edin.
İkinci komut, belirtilen DNS sunucusunu (burada Google DNS) kullanarak sorgu yapar. Bu, varsayılan DNS sunucunuzun sorunlu olup olmadığını anlamanıza yardımcı olur.
7.5. Ağ Servislerinin Durumu
NetworkManager, systemd-networkd gibi ağ servislerinin veya DHCP istemcisi gibi yardımcı servislerin çalışıp çalışmadığını kontrol edin:
Sonuç
Linux ağ yapılandırması, başlangıçta karmaşık görünebilse de, doğru araçlar ve bilgilerle oldukça yönetilebilir bir süreçtir. Bu rehberde ele aldığımız `ip` komutları, yapılandırma dosyaları ve sorun giderme teknikleri, Linux sistemlerinizde sağlam ve güvenli ağ bağlantıları kurmanız için size yol gösterecektir. Ağ yapılandırması dinamik bir alandır ve farklı dağıtımlar ile araçlar arasında küçük farklılıklar olabilir, ancak burada sunulan temel prensipler evrensel olarak geçerlidir. Unutmayın ki pratik yapmak, en iyi öğrenme yöntemidir. Güvenli ve verimli ağlar dileriz!
Linux Vakfı
Linux Çekirdeği
Red Hat Linux Bilgileri
Linux tabanlı sistemlerde ağ yapılandırması, sunucuların, iş istasyonlarının ve IoT cihazlarının diğer sistemlerle iletişim kurabilmesi için temel bir gerekliliktir. Geleneksel olarak komut satırı araçları ile yapılan bu işlemler, günümüzde NetworkManager ve Netplan gibi daha modern ve otomatikleştirilmiş araçlarla da yönetilebilmektedir. Bu rehberde, Linux ağ yapılandırmasının temellerini, sık kullanılan komutları, yapılandırma dosyalarını ve sorun giderme yöntemlerini ayrıntılı bir şekilde ele alacağız. Amacımız, hem yeni başlayanlar hem de deneyimli kullanıcılar için kapsamlı bir başvuru kaynağı oluşturmaktır.
Linux'un modüler yapısı sayesinde, ağ ayarlarınızı ihtiyaçlarınıza göre ince ayar yapma esnekliğine sahipsiniz. İster basit bir DHCP istemcisi ayarlıyor olun, ister karmaşık bir statik IP yönlendirme tablosu oluşturun, doğru araçları ve bilgiyi kullanarak her şeyi başarabilirsiniz. Bu rehber, ağ arayüzlerinin yönetimi, IP adreslerinin atanması, yönlendirme tablolarının düzenlenmesi, DNS çözünürlüğü ve temel güvenlik duvarı yapılandırması gibi konuları adım adım açıklayacaktır.
1. Ağ Arayüzlerini Tanıma ve Yönetme
Linux sistemlerdeki ağ arayüzleri genellikle `eth0`, `wlan0` gibi isimlerle veya modern sistemlerde `enp0s3`, `wlp2s0` gibi daha kalıcı ve tahmin edilebilir isimlerle anılır. Bu arayüzleri tanımak ve durumlarını kontrol etmek, ağ yapılandırmasının ilk adımıdır.
1.1. `ip` Komutu (Önerilen)
`ip` komutu, `net-tools` paketindeki `ifconfig`, `route`, `netstat` gibi eski komutların yerini almıştır ve daha kapsamlı işlevsellik sunar. Modern Linux dağıtımlarında ağ yönetimi için tercih edilen araçtır.
Bir sistemdeki tüm ağ arayüzlerini ve durumlarını görmek için:
Kod:
ip link show
Kod:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:1c:1d:2e brd ff:ff:ff:ff:ff:ff
Kod:
sudo ip link set enp0s3 up
sudo ip link set enp0s3 down
1.2. `ifconfig` Komutu (Eski)
Bazı eski sistemlerde veya alışkanlıktan dolayı hala kullanılabilen `ifconfig` komutu, arayüzlerin IP adresleri, MAC adresleri ve durumları hakkında bilgi sağlar.
Kod:
ifconfig
Kod:
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::a00:27ff:fe1c:1d2e prefixlen 64 scopeid 0x20<link>
ether 08:00:27:1c:1d:2e txqueuelen 1000 (Ethernet)
RX packets 1234 bytes 123456 (120.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 567 bytes 67890 (66.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Kod:
sudo ifconfig enp0s3 up
sudo ifconfig enp0s3 down
2. IP Adreslerini Yapılandırma
Ağ arayüzlerine IP adresi atamak, ağ üzerinden iletişim kurabilmek için hayati önem taşır. IP adresleri statik (elle) veya dinamik (DHCP sunucusundan) atanabilir.
2.1. Statik IP Yapılandırması (`ip` ile)
Bir arayüze statik IP adresi atamak için:
Kod:
sudo ip addr add 192.168.1.10/24 dev enp0s3
2.2. DHCP İstemcisi Yapılandırması
Çoğu masaüstü sistemi ve bazı sunucular, IP adresini bir DHCP sunucusundan otomatik olarak alır. Bu genellikle `dhclient` veya `NetworkManager` tarafından yönetilir. Bir arayüze DHCP ile adres atamak için:
Kod:
sudo dhclient enp0s3
3. Ağ Yönlendirme (Routing) Tabloları
Linux sistemi, paketleri doğru hedeflere ulaştırmak için bir yönlendirme tablosu kullanır. Bu tablo, hangi ağların hangi arayüzden veya ağ geçidinden erişilebileceğini belirtir.
3.1. Yönlendirme Tablosunu Görüntüleme (`ip` ile)
Kod:
[u]ip route show[/u]
Kod:
default via 192.168.1.1 dev enp0s3 proto dhcp metric 100
192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.10
3.2. Varsayılan Ağ Geçidi Ekleme
İnternet'e veya diğer harici ağlara erişim için bir varsayılan ağ geçidi (default gateway) tanımlamanız gerekir:
Kod:
sudo ip route add default via 192.168.1.1 dev enp0s3
Kod:
sudo ip route del default
4. DNS Çözümlemesi
Domain Name System (DNS), insan tarafından okunabilen alan adlarını (örneğin `google.com`) makine tarafından okunabilen IP adreslerine çevirir. Linux'ta DNS çözümlemesi genellikle /etc/resolv.conf dosyası tarafından yönetilir.
4.1. `/etc/resolv.conf` Dosyası
Bu dosya, sistemin kullanacağı DNS sunucularını listeler. DHCP istemcileri veya NetworkManager gibi servisler bu dosyayı otomatik olarak güncelleyebilir. Elle düzenleme yaparken dikkatli olun, çünkü değişiklikler üzerine yazılabilir.
Örnek `/etc/resolv.conf` içeriği:
Kod:
# Generated by NetworkManager
search example.com
nameserver 8.8.8.8
nameserver 8.8.4.4
4.2. DNS Sorgulama Araçları
Bir alan adının IP adresini sorgulamak veya DNS çözümlemesini test etmek için `dig` veya `nslookup` komutları kullanılır.
Kod:
dig google.com
nslookup example.com
5. Kalıcı Ağ Yapılandırması (Dosya Tabanlı)
Yukarıdaki `ip` komutları ile yapılan değişiklikler geçicidir ve sistem yeniden başlatıldığında kaybolur. Kalıcı yapılandırma için, kullanılan dağıtıma ve ağ yönetim aracına bağlı olarak farklı yapılandırma dosyaları düzenlenir.
5.1. Debian/Ubuntu ( `/etc/network/interfaces`)
Bu dağıtımlarda klasik yöntem, `/etc/network/interfaces` dosyasını düzenlemektir.
DHCP istemcisi için:
Kod:
auto enp0s3
iface enp0s3 inet dhcp
Statik IP yapılandırması için:
Kod:
auto enp0s3
iface enp0s3 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
Kod:
sudo systemctl restart networking
5.2. Red Hat/CentOS ( `/etc/sysconfig/network-scripts/ifcfg-enp0s3`)
Red Hat tabanlı sistemlerde arayüz başına bir yapılandırma dosyası bulunur.
DHCP için (`/etc/sysconfig/network-scripts/ifcfg-enp0s3`):
Kod:
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=enp0s3
UUID=...
DEVICE=enp0s3
ONBOOT=yes
Statik IP için:
Kod:
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=enp0s3
UUID=...
DEVICE=enp0s3
ONBOOT=yes
IPADDR=192.168.1.10
PREFIX=24
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
Kod:
sudo systemctl restart network
5.3. Netplan (Modern Ubuntu)
Modern Ubuntu sürümleri Netplan'ı kullanır. Yapılandırma dosyaları `/etc/netplan/` altında `.yaml` uzantısıyla bulunur.
Örnek Netplan yapılandırması (`/etc/netplan/01-netcfg.yaml`):
Kod:
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: no
addresses: [192.168.1.10/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
Kod:
sudo netplan apply
6. Güvenlik Duvarı Yapılandırması (Firewall)
Linux sistemlerde güvenlik duvarı, ağ trafiğini filtrelemek ve sistemi yetkisiz erişimden korumak için kritik öneme sahiptir. En yaygın kullanılan güvenlik duvarı araçları `iptables` ve `ufw` (basit bir iptables arayüzü)dir.
6.1. `ufw` (Uncomplicated Firewall)
`ufw`, iptables kurallarını basitleştiren bir araçtır ve kullanımı kolaydır.
`ufw`'yi etkinleştirme:
Kod:
sudo ufw enable
Kod:
sudo ufw allow 22/tcp
sudo ufw allow OpenSSH
Kod:
sudo ufw deny from 192.168.1.100
Kod:
sudo ufw status verbose
6.2. `iptables`
`iptables`, Linux çekirdeğinin netfilter modülü için gelişmiş bir kullanıcı alanı programıdır. Çok güçlü ancak karmaşıktır.
Tüm mevcut kuralları listeleme:
Kod:
sudo iptables -L -v -n
Kod:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Kod:
sudo iptables -P INPUT DROP
Güvenlik duvarı kuralları uygularken her zaman dikkatli olun. Yanlış yapılandırma, sisteminizle ağ bağlantısını kaybetmenize neden olabilir.
7. Ağ Sorun Giderme (Troubleshooting)
Ağ sorunları yaygın olabilir ve doğru araçlarla hızlıca teşhis edilebilir. İşte temel sorun giderme adımları ve araçları:
[li]Ağ arayüzlerinin durumunu kontrol edin: `ip link` ve `ip addr`.[/li]
[li]Bağlantıyı test edin: `ping` ve `traceroute`.[/li]
[li]Ağ bağlantılarını ve dinleyen portları inceleyin: `ss` veya `netstat`.[/li]
[li]DNS çözümlemesini doğrulayın: `dig` veya `nslookup`.[/li]
[li]Ağ servislerinin durumunu kontrol edin: `systemctl status NetworkManager` veya ilgili servis.[/li]
7.1. Bağlantı Kontrolü (`ping`, `traceroute`)
* `ping`: Bir ana bilgisayara ulaşılabilirliği ve gecikmeyi test eder.
Kod:
ping google.com
ping 192.168.1.1
Kod:
traceroute google.com
7.2. Ağ Durumu ve Port Kontrolü (`netstat`, `ss`)
* `netstat` (Eski): Aktif bağlantıları, dinleyen portları, yönlendirme tablolarını gösterir.
Kod:
netstat -tulnp
* `ss` (Önerilen): `netstat`'tan daha hızlı ve modern bir alternatiftir. Benzer bilgileri sağlar.
Kod:
ss -tulnp
7.3. IP Adresi ve Arayüz Kontrolü (`ip addr`, `ip link`)
Sisteminizin doğru IP adresini alıp almadığını veya ağ arayüzlerinin etkin olup olmadığını kontrol edin.
Kod:
ip addr show
ip link show
7.4. DNS Sorunları (`dig`, `nslookup`)
Bir web sitesine IP adresiyle erişebiliyor ancak alan adıyla erişemiyorsanız, DNS sorunları yaşıyor olabilirsiniz. `/etc/resolv.conf` dosyasını ve DNS sunucularınızın erişilebilirliğini kontrol edin.
Kod:
dig example.com
dig @8.8.8.8 example.com
7.5. Ağ Servislerinin Durumu
NetworkManager, systemd-networkd gibi ağ servislerinin veya DHCP istemcisi gibi yardımcı servislerin çalışıp çalışmadığını kontrol edin:
Kod:
sudo systemctl status NetworkManager
sudo systemctl status systemd-networkd
sudo systemctl status dhclient
Sonuç
Linux ağ yapılandırması, başlangıçta karmaşık görünebilse de, doğru araçlar ve bilgilerle oldukça yönetilebilir bir süreçtir. Bu rehberde ele aldığımız `ip` komutları, yapılandırma dosyaları ve sorun giderme teknikleri, Linux sistemlerinizde sağlam ve güvenli ağ bağlantıları kurmanız için size yol gösterecektir. Ağ yapılandırması dinamik bir alandır ve farklı dağıtımlar ile araçlar arasında küçük farklılıklar olabilir, ancak burada sunulan temel prensipler evrensel olarak geçerlidir. Unutmayın ki pratik yapmak, en iyi öğrenme yöntemidir. Güvenli ve verimli ağlar dileriz!
Linux Vakfı
Linux Çekirdeği
Red Hat Linux Bilgileri