Alamat IP tidak mengarah ke port atau aplikasi. Mereka menunjuk ke mesin (virtual), atau wadah, atau konteks.
Aplikasi mendengarkan pada port, yang dapat (tergantung pada apa yang dilewatinya bind
) pada semua alamat IP pada mesin, atau pada satu alamat IP. Jadi hal terbaik yang harus dilakukan adalah meminta aplikasi Anda untuk memanggil bind dengan IP yang benar. Anda dapat memiliki dua program berbeda mendengarkan pada port 80 (misalnya) selama mereka mendengarkan pada alamat IP yang berbeda. Banyak program memungkinkan Anda menentukan IP untuk didengarkan, karena terkadang menggunakan sintaks di 10.0.0.1:1234
mana 10.0.0.1 adalah IP dan port 1234. Ketika Anda meninggalkan IP, mereka default ke 0.0.0.0 yang merupakan semua alamat pada mesin.
Jika aplikasi Anda tidak bisa melakukan itu, Anda bisa — seperti yang ditunjukkan goldilocks — mengatasinya menggunakan NAT. Pada dasarnya, Anda memiliki setiap aplikasi mendengarkan pada port yang berbeda, katakanlah 8080 dan 8081. Kemudian Anda mengatur aturan NAT untuk mengarahkan ulang port 80:
iptables -t nat -A PREROUTING -d 10.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 8080
iptables -t nat -A PREROUTING -d 10.0.0.2 -p tcp --dport 80 -j DNAT --to-destination 8081
Anda dapat menambahkan aturan firewall tambahan untuk memblokir akses langsung ke port 8080 dan 8081, tentu saja.
Anda juga dapat menggunakan ipv untuk melakukan ini. Atau server proxy. Mungkin ada beberapa cara lagi.