# ip

`ip` komutu, modern Linux sistemlerinde ağ yapılandırmasını yönetmek için kullanılan temel araçtır. `iproute2` paketinin bir parçasıdır ve `ifconfig`, `route`, `arp`, `netstat -r` gibi eski `net-tools` paketindeki komutların yerini almıştır. `ip` komutu daha tutarlı bir sözdizimine sahiptir ve IPv6, policy routing, network namespaces gibi modern ağ özelliklerini daha iyi destekler.

`ip` komutu, yönetilecek nesneye (object) göre alt komutlar alır. En sık kullanılan nesneler şunlardır:

* `link`: Ağ arayüzlerini (fiziksel veya sanal) yönetir.
* `address` (veya `addr`): Arayüzlere atanan IP adreslerini (IPv4/IPv6) yönetir.
* `route`: Yönlendirme tablosunu yönetir.
* `neighbour` (veya `neigh`): ARP (IPv4) ve NDP (IPv6) komşu tablolarını yönetir.
* `rule`: Policy routing kurallarını yönetir.
* `tunnel`: IP tünellerini yönetir.
* `tuntap`: TUN/TAP sanal arayüzlerini yönetir.
* `netns`: Ağ isim alanlarını (network namespaces) yönetir.

## Temel Kullanım Örnekleri

**Arayüzleri Listeleme (`ip link`)**

Sistemdeki tüm ağ arayüzlerini ve durumlarını listeler:

```bash
ip link show
# veya kısaca:
ip link
```

Renkli çıktı için `-c` seçeneği eklenebilir: `ip -c link show`.

**IP Adreslerini Gösterme (`ip addr`)**

Tüm arayüzlere atanmış IP adreslerini (IPv4 ve IPv6) gösterir:

```bash
ip addr show
# veya kısaca:
ip addr
# veya sadece belirli bir arayüz için:
ip addr show eth0 
```

Sistem üzerindeki NIC cihazlarının IP adreslerini öğrenmek için:

```bash
ip addr show
```

Örnek Çıktı:

```bash
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:12:34:56 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic enp0s3
       valid_lft 86300sec preferred_lft 86300sec
    inet6 fe80::a00:27ff:fe12:3456/64 scope link 
       valid_lft forever preferred_lft forever
```

**IP Adresi Ekleme/Silme (`ip addr add/del`)**

Bir arayüze geçici olarak IP adresi eklemek veya silmek için kullanılır (kalıcı ayarlar için NetworkManager, systemd-networkd veya `/etc/network/interfaces` gibi araçlar kullanılmalıdır). IP adresi CIDR notasyonu ile (örn. `/24`) belirtilmelidir.

```bash
# enp0s3 cihazına 192.168.1.150/24 IP'sini ekle
sudo ip addr add 192.168.1.150/24 dev enp0s3

# Aynı IP'yi sil
sudo ip addr del 192.168.1.150/24 dev enp0s3
```

Bir arayüzdeki tüm IP adreslerini temizlemek için `flush` kullanılabilir: `sudo ip addr flush dev enp0s3`.

**Arayüzü Açma/Kapatma (`ip link set up/down`)**

Bir ağ arayüzünü etkinleştirmek veya devre dışı bırakmak için:

```bash
sudo ip link set enp0s3 up
```

```bash
sudo ip link set enp0s3 down
```

**Yönlendirme Tablosunu Gösterme/Yönetme (`ip route`)**

Çekirdeğin IP yönlendirme tablosunu göstermek için:

```bash
ip route show
# veya kısaca:
ip route
```

Örnek Çıktı:

```bash
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.100 metric 100 
```

Geçici olarak yönlendirme kuralı eklemek veya silmek için (kalıcı ayarlar için ağ yönetim aracı kullanılmalıdır):

```bash
# 10.0.0.0/8 ağına 192.168.1.254 ağ geçidi üzerinden git
sudo ip route add 10.0.0.0/8 via 192.168.1.254

# Belirli bir route'u sil
sudo ip route del 10.0.0.0/8

# Varsayılan ağ geçidini (default route) ekle/değiştir
sudo ip route add default via 192.168.1.1 dev enp0s3 
# veya (mevcutu değiştirmek için):
# sudo ip route replace default via 192.168.1.1 dev enp0s3
```

**Komşu Tablosunu Gösterme (`ip neigh`)**

ARP (IPv4) veya NDP (IPv6) tablosunu (IP-MAC adresi eşleşmeleri) göstermek için:

```bash
ip neigh show
# veya kısaca:
ip neigh
```

`ip` komutu, `iproute2` paketinin sunduğu birçok alt komut ve seçenekle ağ yönetiminin hemen her yönünü kontrol etme imkanı sunar. Daha fazla bilgi için `man ip` veya `ip <nesne> help` (örn. `ip route help`) komutlarına bakılabilir.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://linux-yonetimi.veriteknik.net.tr/gelismis-network-komutlari/ip.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
