route
route komutu, ifconfig gibi eski net-tools paketinin bir parçasıdır ve Linux çekirdeğinin IP yönlendirme (routing) tablosunu görüntülemek ve yönetmek için kullanılırdı. Bu komut da artık geliştirilmemektedir ve modern sistemlerde yerini iproute2 paketindeki ip route komutuna bırakmıştır.
ip route komutu daha esnek, daha güçlüdür ve modern ağ kavramlarını (policy routing, multiple routing tables vb.) daha iyi destekler. Bu bölümde route komutu tarihsel bilgi amacıyla anlatılacaktır. Yeni yapılandırmalar ve betikler için ip route kullanmanız şiddetle tavsiye edilir.
Mevcut Route Tablosunu Görmek
Komutu doğrudan çalıştırdığınızda route tablosunu gösterir.
eaydin@dixon ~ $ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.99.1 0.0.0.0 UG 0 0 0 wlan0
172.16.77.0 * 255.255.255.0 U 0 0 0 vmnet1
172.16.148.0 * 255.255.255.0 U 0 0 0 vmnet8
192.168.99.0 * 255.255.255.0 U 9 0 0 wlan0-n parametresiyle adreslerin nümerik değerleri gösterilir.
eaydin@dixon ~ $ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.99.1 0.0.0.0 UG 0 0 0 wlan0
172.16.77.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
172.16.148.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
192.168.99.0 0.0.0.0 255.255.255.0 U 9 0 0 wlan0Route Tablosuna Müdahale Etmek (Geçici Ayarlar)
route komutu ile yapılan değişiklikler, tıpkı ifconfig gibi, geçicidir ve sistem yeniden başlatıldığında kaybolur. Kalıcı ayarlar için NetworkManager, systemd-networkd veya /etc/network/interfaces gibi araçlar kullanılmalıdır.
Default Gateway Eklemek
Belirli bir ağ aralığında (network range) bulunmayan paketler default gateway'e yönlenir. Örneğin yukarıdaki routing tablosunda, 172.16.77.0/24, 172.16.148.0/24 ve 192.168.99.0/24 dışındaki adreslere yönlendirilecek bütün paketler, 192.168.99.1 adresine gönderilir. Burası bulunduğumuz ağdaki router'dır, kendisi de gelen paketleri Internet Servis Sağlayıcıya iletir. Default gateway'in kendisi olduğunu, Flags kolonundaki G ifadesi belirtmektedir.
sudo route add default gw 192.168.99.5Modern Karşılığı:
sudo ip route add default via 192.168.99.5
Default Gateway Silmek
Varsayılan ağ geçidini silmek için:
sudo route del defaultModern Karşılığı:
sudo ip route del default
NOT: Bazı durumlarda sistemde birden fazla default gateway tanımlanabilir. Teorik olarak gerekmiyor olsa da pratikte nadiren rastlanılan bir durumdur. Bu özel durumlar kapsamımız dışında olduğundan incelemiyoruz. Sadece böyle senaryoların karşılaşılabildiğini belirtme ihtiyacı hissettik.
Belirli Bir Ağa Route Eklemek
Belirli bir ağa (örn. 192.168.59.0/25) giden trafiği belirli bir arayüz (örn. eth0) veya ağ geçidi (gateway) üzerinden yönlendirmek için:
Arayüz Belirterek:
sudo route add -net 192.168.59.0 netmask 255.255.255.0 dev eth0Modern Karşılığı:
sudo ip route add 192.168.59.0/24 dev eth0
Ağ Geçidi Belirterek:
sudo route add -net 192.168.55.0 netmask 255.255.255.0 gw 192.168.55.1Modern Karşılığı:
sudo ip route add 192.168.55.0/24 via 192.168.55.1
Bu satırı yazdıktan sonra önceki route tablomuz şöyle oldu:
eaydin@dixon ~ $ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.99.1 0.0.0.0 UG 0 0 0 wlan0
172.16.77.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
172.16.148.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
192.168.59.128 0.0.0.0 255.255.255.128 U 0 0 0 eth0
192.168.99.0 0.0.0.0 255.255.255.0 U 9 0 0 wlan0Route Silmek
Eklenmiş bir route'u silmek için add yerine del kullanılır:
sudo route del -net 192.168.59.0 netmask 255.255.255.0 dev eth0Modern Karşılığı:
sudo ip route del 192.168.59.0/24 dev eth0
sudo route del -net 192.168.55.0 netmask 255.255.255.0 gw 192.168.55.1Modern Karşılığı:
sudo ip route del 192.168.55.0/24 via 192.168.55.1
Bir IP veya Ağı Engellemek (reject)
reject)Belirli bir hedefe giden paketleri yönlendirmek yerine doğrudan engellemek (ICMP "unreachable" mesajı ile) için reject kullanılır:
sudo route add -host 192.168.59.5 rejectModern Karşılığı:
sudo ip route add prohibit 192.168.59.5(veyablackhole- sessizce yok sayar)
eaydin@dixon ~ $ ping 192.168.59.5
connect: Network is unreachable
eaydin@dixon ~ $ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.99.1 0.0.0.0 UG 0 0 0 wlan0
172.16.77.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
172.16.148.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
192.168.59.5 - 255.255.255.255 !H 0 - 0 -
192.168.99.0 0.0.0.0 255.255.255.0 U 9 0 0 wlan0Engellemeyi kaldırmak için:
sudo route del -host 192.168.59.5 rejectModern Karşılığı:
sudo ip route del prohibit 192.168.59.5
Bir ağı engellemek:
sudo route add -net 192.168.59.0 netmask 255.255.255.0 rejectModern Karşılığı:
sudo ip route add prohibit 192.168.59.0/24
eaydin@dixon ~ $ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.99.1 0.0.0.0 UG 0 0 0 wlan0
172.16.77.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
172.16.148.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
192.168.59.0 - 255.255.255.0 ! 0 - 0 -
192.168.99.0 0.0.0.0 255.255.255.0 U 9 0 0 wlan0Engellemeyi kaldırmak için:
sudo route del -net 192.168.59.0 netmask 255.255.255.0 rejectModern Karşılığı:
sudo ip route del prohibit 192.168.59.0/24
Örnek Route Senaryosu (Modern ip route ile)
ip route ile)Aşağıdaki örneği dikkate alalım. VT isminde bir Linux sunucumuz (router) olsun. Üzerinde 3 ağ arayüzü var:
eth0: İnternet bağlantısı (IP:94.103.32.80/28, Gateway:94.103.32.81)eth1: Teknik Ekip Ağı (IP:192.168.59.1/24)eth2: Muhasebe Ekibi Ağı (IP:10.0.42.1/24)
Amacımız, hem teknik hem de muhasebe ekibinin birbirleriyle ve internetle konuşabilmesini sağlamak. Bunun için VT sunucusunda IP yönlendirmeyi (IP forwarding) etkinleştirmek ve istemcilerde doğru ağ geçidini ayarlamak gerekir.
1. VT Sunucusunda IP Yönlendirmeyi Etkinleştirme:
# Geçici olarak etkinleştirme
sudo sysctl -w net.ipv4.ip_forward=1
# Kalıcı hale getirmek için /etc/sysctl.conf veya /etc/sysctl.d/ içinde:
# net.ipv4.ip_forward = 1
# Ardından: sudo sysctl -p2. Uçbirimlerin Ağ Geçidi Ayarları:
Teknik Ekip (
192.168.59.0/24): Varsayılan ağ geçidi olarak VT sunucusunun bu ağdaki IP'sini (192.168.59.1) kullanmalıdırlar.Muhasebe Ekibi (
10.0.42.0/24): Varsayılan ağ geçidi olarak VT sunucusunun bu ağdaki IP'sini (10.0.42.1) kullanmalıdırlar.
3. VT Sunucusunda Yönlendirme Tablosu:
VT sunucusunun yönlendirme tablosu genellikle şöyle görünmelidir (ip route komutu ile):
# İnternete çıkış için varsayılan yol
default via 94.103.32.81 dev eth0
# Muhasebe ağına doğrudan bağlı
10.0.42.0/24 dev eth2 proto kernel scope link src 10.0.42.1
# İnternet bağlantısının olduğu ağ
94.103.32.70/28 dev eth0 proto kernel scope link src 94.103.32.80
# Teknik ekip ağına doğrudan bağlı
192.168.59.0/24 dev eth1 proto kernel scope link src 192.168.59.1 Doğrudan bağlı ağlar (
proto kernel scope link) genellikle otomatik olarak eklenir.Varsayılan ağ geçidi (
default via ...) genellikle DHCP ile alınır veya manuel olarak eklenir:sudo ip route add default via 94.103.32.81 dev eth0
Bu yapılandırma ile:
Teknik ekipteki bir bilgisayar (
192.168.59.X), muhasebedeki bir bilgisayara (10.0.42.Y) paket gönderdiğinde, paket önce VT'nin192.168.59.1adresine gider. VT, hedef IP'nin10.0.42.0/24ağına ait olduğunu tablosundan bilir ve paketieth2arayüzünden dışarı yönlendirir.Teknik ekipteki bir bilgisayar internete (örn.
8.8.8.8) paket gönderdiğinde, paket VT'nin192.168.59.1adresine gider. VT, hedefin kendi bildiği ağlarda olmadığını görür ve paketi varsayılan ağ geçidi (94.103.32.81) üzerindeneth0arayüzünden dışarı yönlendirir. (NAT yapılandırması da gerekebilir).
route komutu eski sistemlerde yönlendirme tablosunu yönetmek için kullanılırdı, ancak ip route komutu modern Linux sistemlerinde daha yetenekli ve standart bir alternatiftir.
Last updated