IPTables Üzerinden KVM Makinalarda ip ve port Yönlendirme

Doğukan Eren - Jul 11 '23 - - Dev Community

Host makinamızın sahip olduğu interface üzerinden KVM için oluşturduğmuz veya var olan sanal interfacemize port yönlendirmek için iptables üzerinden port yönlendirme işlemlerini yapabiliriz.

İlk olark makinamızdaki interfaceleri görelim. Bunun için aşağıdaki komutu çalıştırabiliriz.

ip a
Enter fullscreen mode Exit fullscreen mode

Benim bilgisayarımda komutun çıktısında kvm için default gelen ve benim oluşturduğum interfaceler aşağıdaki gibidir.

3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:17:20:d3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
Enter fullscreen mode Exit fullscreen mode

ve

25: deren: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 52:54:00:50:84:d9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.1/24 brd 192.168.100.255 scope global default2
       valid_lft forever preferred_lft forever
Enter fullscreen mode Exit fullscreen mode

virbr0 adlı interface default olarak kvm kurulumunda genel interface adıdır.

deren adlı interface ise benim sonradan oluşturduğun interface.

Şimdi gelelim nasıl yönlendirme yapacağımıza.

İlk önce port yönlendirmenin konfigürasyonunun açık olduğundan emin olalım.

sudo sysctl net.ipv4.ip_forward=1
Enter fullscreen mode Exit fullscreen mode

Sonrasında iptables kuralımızı yazabiliriz.

iptables -t nat -A PREROUTING -i <interface> -p tcp --dport <host_port> -j DNAT --to-destination <guest_ip>:<guest_port>

iptables -A FORWARD -p tcp -d <guest_ip> --dport <guest_port> -j ACCEPT
Enter fullscreen mode Exit fullscreen mode

Komut üzerinde:
host_port: kvm vmi host ettiğiniz ana makinanın portunu
guest_ip: kvm makinanızın ip adresi
guest_host: kvm makinanızda ana makinanıza yönlendirmek istediğiniz portunu yzıyoruz.
interface: kvm kurulumunda default gelen interface kullanılacaksa virbr0 veya kendinizin oluşturduğu interface adını yazabilirsiniz.

Not: tcp alanını udp yaparak udp olarak da forward yapabilirsiniz.

Kendi network interface yapınızı oluşturmak için buradan yararlanabilirsiniz

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .