Linux Network; IP, ifconfig

Linux Kernel ve Network

Linux network konusunda çok başarılı bir çekirdektir. TCP/IP, OSI, IPX, gibi protokol kümelerini destekleyebilmektedir. Linux sistemler ile, bugün bir sunucuyu router gibi çalıştırmak mümkündür.
Hatta çekirdek ile bütünleşik olarak gelen iptables, firewall yazılımı ile paketleri filtreleyebilirsiniz.
Unix sistemler de router ve firewall olarak kullanılabilir. Bsd kernel kullanan router ve firewall olarak, bsdrp ve pfsense kullanabilirsiniz.
Pfsense popüler bir firewall ve router’dır. Freebsd tabanlı bir dağıtım olup, openbsd packet filter’ını kullanır.

IP komutu, uzunca bir süredir geliştirilmesi durdurulmuş olan bir takım komutların modern network notasyonları ile harmanlanıp tekrar sunulmuş halidir.

NIC: Network Interface Controller, Ağ kartımız üzerinde değişiklik yapabilmemizi sağlar.
MTU: Maximum Transmission Unit, Maksimum aktarım birimi. Bu ayarı her kart desteklemeyebilir, çoğunlukla değiştirmenize de gerek kalmaz. MTU byte cinsindendir.
Promiscous Mode: Ethernet kartınız destekliyorsa, kartınıza gelen ancak sizi ilgilendirmeyen paketleri’de CPU ya gönderip işlemenize olanak sağlar. Network’ü takip etmek için güzel bir şey. Network trafiği hakkında bilgi sahibi olabiliriz. :)
Link: NIC üzerinde yapabileceğimiz değişiklikler için.
Address: IP adresi ataması, görüntüleme için kullanılır.
Route: Route tablosunu, gw tanımlaması ve görüntüleme için kullanılır.

Linux üzerinde her şey bir dosyadır. Network ayarlarının yapılabileceği dosyalar dağıtımlara göre farklılık göstermektedir. Bu işletim sisteminin organizasyonal değişiklikler ve fikirlerden dolayı farklıdır. Linux çekirdeği, dosya organizasyonuna karışmaz.

RHEL / CentOS / Fedora
Redhat tabanlı işletim sistemlerinde, network ayar dosyaları /etc/sysconfig/network-scripts/ dizini altındadır. Network-scripts dizini altında, her NIC cihazı için özel config dosyaları bulunmaktadır.
Redhat tabanlı sistemler, isimlendirme olarak ethernet için, eth kısaltmasını kullanır. Örneğin; eth0
NIC cihazı için, config dosyasının ismi ifcfg-eth0 şeklinde olacaktır.
İçinde, bazı tanımlamalar yer almaktadır: onboot, type, hwaddr, name, ipaddr gibi.
Ubuntu / Debian / Linux Mint
Debian tabanlı işletim sistemlerinde, network ayar dosyaları /etc/network/interfaces dizini altında yer almaktadır. Debian dağıtımlarda, her NIC için ayrı bir dosya bulunmamaktadır. Tüm NIC cihazları için yapılması istenilen ayarlar bu dosyaya yazılır. Ardından yapılan ayarların geçerli olabilmesi için, networking servisi yeniden ayağa kaldırılır.

IP ADDRESS — ip addr

ip address komutu, sistem üzerindeki NIC cihazlarının IP adreslerinin görüntülenmesi, yenilerinin eklenmesi, kaldırılması ve NIC cihazının durumuna göre görüntüleme ve silme yapılmasını sağlar.
Komutu kullanırken, tamamını yazmamıza gerek yoktur, “ip ad” yazmak bile yeterli olacaktır.*Sistemsel değişiklik yaptığımız için, read-only işlemler izin gerektirmez ancak yeni tanımlamalar root yetkisi gerektirir.

$ ip ad
Sistemdeki tüm NIC cihazlarını ip adresleri ile listeler.
$ ip addr show enp1s0
— enp1s0 NIC cihazına ait bilgileri görüntüler.
$ ip addr sh up
— Sistemdeki çalışan NIC cihazlarına ait bilgileri görüntüler.
$ ip addr add 192.168.1.100/24 dev enp1s0
— enp1s0 NIC cihazına yeni ip adresi tanımlar.
$ ip addr add 192.168.1.101/24 dev enp1s0
— NIC cihazımıza 2. kez yeni ip adresi ekler. Bir NIC cihaza, birden fazla IP adresi atanabilir.
$ ip addr del 192.168.1.100/24 dev enp1s0
— ip adresini kaldırır.
$ ip addr flush dev enp1s0
— tüm ip adreslerini kaldırır.
$ ip addr add 10.67.45.23 dev enp1s0 label “enp1s0_WAN”
— ip adresi ekler. Ve ona bir label ekler. Label, device name ile başlamalıdır.
$ ip addr add 192.168.10.1/28 dev enp1s0 broadcast 192.168.10.127
— ip adresi ekler. Broadcast tanımlamak için kullanılabilir.

IFCONFIG

ifconfig deprecated olmasına rağmen halen bir çok sistemde kullanılmaktadır.
$ ifconfig -a
— Tüm NIC’leri listeler. RX ve TX download ve upload boyutlarıdır.
$ ifconfig enp1s0
— Belirli bir NIC’e ait network bilgilerini listeler.
$ ifconfig enp1s0 10.0.0.88
— ip adresi tanımlaması
$ ifconfig enp1s0 netmask 255.255.255.224
— Netmask tanımlaması yapmak için.
$ ifconfig enp1s0 broadcast 172.16.25.63
— Broadcast tanımlaması yapmak için.
$ ifconfig enp1s0 del 10.0.0.88
— ip adresini silmek için.

NIC cihazlarının çalışma şekillerini belirler. NIC cihazını ayağa kaldırmak ve durdurmak için kullanılır.
$ ip link sh
— Tüm NIC cihazlarını listeler.
$ ip link set enp1s0 up
— NIC cihazını ayağa kaldırır.
$ ip link set enp1s0 down
— NIC cihazını durdurur.
$ ip link set enp1s0 mtu 1465
— NIC cihazının MTU değerini 1465 byte olarak ayarlar.
$ ip link set enp1s0 promisc on
— NIC cihazının Promiscous mode’unu aktif eder.
$ ip link set enp1s0 multicast off
— Multicast yapmayı engeller.
$ ip link set enp1s0 arp off
— ARP isteklerini engeller.

IFCONFIG

$ ifconfig enp1s0 up
— NIC cihazını ayağa kaldırır.
$ ifconfig enp1s0 down
— NIC cihazını durdurur.
$ ifconfig enp1s0 mtu 1465
— MTU değeri 1465 byte olarak ayarlar.
$ ifconfig enp1s0 promisc
— NIC cihazının Promiscous mode’unu açar.
$ ifconfig enp1s0 -promisc
— NIC cihazının Promiscous mode’unu kapatır.
$ ifconfig enp1s0 hw ether AA:BB:CC:DD:EE:FF
— ARP istekleri için, MAC adresi değiştirme.

IP ROUTE

NIC cihazlarının yönlendirme tablosunu yönetmek için kullanılır. Yeni bir yönlendirme eklemek, silmek için kullanılır. Route tablosunu görüntülemek için kullanılır ve default gateway tanımlamasında kullanılır.
* Route işlemi yapılırken, NIC cihazlarının UP oldukları ve networklerin erişilebilir olduklarından emin olunmalıdır.
$ ip route sh
— Route tablosunu gösterir.
$ ip route list dev enp1s0
— enp1s0 NIC cihazı için tanımlanmış olan yönlendirmeleri gösterir.
$ ip route add 10.0.1.0/24 via 10.0.2.56 dev enp1s0
— 10.0.1.0/24 networkünden gelen tüm istekleri, 10.0.2.56 ip adresli node’a yönlendirir.
$ ip route add default via 192.168.1.1 dev enp1s0
— Default gateway tanımlaması. Eğer hedef node ile aynı ağda değilsek, paketi default olarak 192.168.1.1 node’una yönlendir. Bu da genellikle router’dır.
$ ip route del 10.0.1.0/24
— Route tablosundan kaynağı bu olan girdiyi kaldırır.
$ ip ro del default
— Default gateway tanımlamasını kaldırır.
$ ip route flush
— Tüm route tablosunu temizler.

ROUTE

Kernel IP routing table.
$ route -n
— -n: don’t resolve names. Route tablosunu görüntüler.
$ route -n | grep enp1s0
— belirli bir interface için route tablosunu görüntüler.
$ route add default gw 192.168.4.1
— Default gateway tanımlaması yapar.
$ route add -net 10.0.1.0 netmask 255.255.255.0 gw 192.168.1.1 dev enp1s0
— 10.0.1.0/24 lük networkünden gelen tüm istekleri 192.168.1.1 node’una yönlendirir.
$ route del default
— Default gateway kaldırılır.
$ route del -net 10.0.1.0 netmask 255.255.255.0 gw 192.168.1.1 dev enp1s0
— Yönlendirmeyi kaldırır.
$ route add -host 192.168.59.5 reject
— Belirli bir IP’ye gidecek paketleri route tablosundan engelledik.