Menentukan alamat ip untuk koneksi keluar pada host multi-ip

15

salah satu server saya (Debian 5.0.6) memiliki dua alamat ip publik pada antarmuka yang sama. Ini digunakan untuk bekerja dengan baik selama berbulan-bulan tetapi tiba-tiba ia menggunakan alamat ip yang "salah" untuk koneksi keluar. Ini adalah masalah karena pencarian sebaliknya tidak akan cocok dan karenanya email mendapatkan poin spam.

eth0      Link encap:Ethernet  Hardware Adresse 00:1b:21:14:8e:9c  
          inet Adresse:81.169.180.51  Bcast:81.169.180.51  Maske:255.255.255.255
          inet6-Adresse: fe80::21b:21ff:fe14:8e9c/64 Gültigkeitsbereich:Verbindung

eth0:0    Link encap:Ethernet  Hardware Adresse 00:1b:21:14:8e:9c  
          inet Adresse:85.214.157.120  Bcast:85.214.157.120  Maske:255.255.255.255


Kernel-IP-Routentabelle
Destination     Router          Genmask         Flags Metric Ref    Use Iface
81.169.180.1    0.0.0.0         255.255.255.255 UH    0      0        0 eth0
0.0.0.0         81.169.180.1    0.0.0.0         UG    0      0        0 eth0

Saat ini menggunakan 85.214.157.120 untuk koneksi keluar. Bagaimana cara mendapatkannya menggunakan 81.169.180.51?

Sunting : Netmask dari 255.255.255.255 konsisten dengan dokumentasi dan respons DHCP dari perusahaan hosting. Memanggil /etc/init.d/networking restart beberapa kali pada akhirnya akan berakhir dengan alamat ip yang benar untuk koneksi outbount. Tapi itu jelas bukan solusi yang stabil. / Edit

Sunting 2 : Untuk memastikan bahwa rute host tidak terkait dengan masalah saya, saya menyiapkan jaringan pengujian lokal:

eth0      inet Adresse:192.168.0.2  Bcast:192.168.0.255  Maske:255.255.255.0
eth0:0    inet Adresse:192.168.0.3  Bcast:192.168.0.255  Maske:255.255.255.0

192.168.0.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0        192.168.0.1     0.0.0.0         UG    0      0        0 eth0

Jika ada yang punya ide bagaimana memastikan bahwa sumber ip-address 192.168.0.2 digunakan pada koneksi tcp keluar, saya akan berterima kasih. / Edit 2

Hendrik Brummermann
sumber

Jawaban:

24

Pembaruan bawaan:

ip route change default via 81.169.180.1 src 81.169.180.51

Periksa konfigurasi:

ip route list
bindbn
sumber
1
Bagaimana membuat ini permanen setelah reboot?
dezhi
3

Jawaban bindbn bagus, tetapi saya menemukan beberapa komplikasi.

1) Anda harus memeriksa "daftar rute ip" seperti yang dikatakan bindbn. Beberapa aturan lain dalam daftar mungkin didahulukan dari rute default. Anda mungkin perlu menghapus aturan itu, atau membuat aturan yang sedikit berbeda.

2) Semua perubahan yang dilakukan melalui perintah ip hanya berfungsi sampai reboot berikutnya. Jawaban ini Secara permanen menambahkan aturan perutean kebijakan sumber menjelaskan cara membuatnya terus-menerus.

Singkatnya, Anda dapat menambahkan perintah ip route yang perlu Anda jalankan sebagai baris "up" atau "post-up" ke / etc / network / interfaces. Anda bisa menambahkan baris "down" yang sesuai untuk menghapus rute.

AdamS
sumber
1

Coba ubah

 allow-hotplug eth0

untuk

 auto eth0

Itu akan memaksa antarmuka fisik Anda untuk muncul lebih dulu. Anda mungkin atau mungkin tidak perlu mengubah entri allow-hotplug untuk eth0: 0 juga.

Bill B
sumber
1

Karena penasaran, mengapa alamat IP Anda memiliki netmask 255.255.255.255? Itu benar-benar tidak layak, karena itu berarti seluruh alamat adalah jaringan. Tidak ada ruang untuk tuan rumah. Fakta bahwa alamat broadcast Anda sama dengan IP host Anda juga mengkhawatirkan, tetapi kemungkinan karena masalah netmask. Sepertinya netmask Anda seharusnya 255.255.255.0.

Apakah ini dilakukan untuk memberi Anda dua host pada subnet yang sama? Mungkin lebih baik untuk membuat perubahan sehingga setiap antarmuka berada pada subnet yang berbeda. 255.255.255.128 akan menempatkan eth0 dan gateway Anda (dari 81.169.180.1) pada subnet yang sama, dengan eth0: 0 pada subnet yang terpisah. Namun, itu berarti bahwa eth0 hanya bisa berkomunikasi dengan 81.169.180.1-81.169.180.127. Dan eth0: 0 pergi dari 129-254. Tapi itu dikatakan, saya tidak bisa melihat mengapa pengaturan Anda saat ini bekerja sama sekali.

Sekarang, apakah ini akan menyebabkan masalah yang Anda lihat di atas? Saya tidak dapat melihat tautan langsung, tetapi itu mungkin.
Itu pasti sesuatu yang akan saya sesuaikan. Jika itu tidak membantu, mungkin Anda bisa menjelaskan mengapa Anda memiliki pengaturan seperti ini.


Sunting: Apakah ini berfungsi dengan baik pada host ini, atau apakah itu mesin / OS yang berbeda? Adakah yang tahu apa yang mungkin telah berubah? Alasan saya bertanya adalah karena Linux benar-benar tidak suka memiliki dua antarmuka pada subnet yang sama. Itu membuat saya gila mencoba untuk membuatnya bekerja di jaringan saya sendiri. Kedengarannya sangat mungkin bahwa Anda berhasil menggunakan IP yang tepat, hingga Anda mem-boot ulang / memulai kembali layanan jaringan. Kemudian muncul menggunakan antarmuka yang salah. Referensi: http://anders.com/cms/258

Anda juga dapat mencoba ifdownpada eth0: 0, lalu menambahkan rute, lalu ifupmengembalikannya. Itu mungkin menjamin IP yang benar digunakan.

Secara manual menambahkan dev eth0 mungkin membantu, tetapi tampaknya seolah-olah rute dilakukan dengan benar.


Edit Lebih Lanjut: Anda dapat mencoba menggunakan alat manajemen IP terbaru di Debian iproute 2,. ( Tautan sekunder ) Sepertinya ada sesuatu di sepanjang garis yang
membawa antarmuka: ip link set eth0 up

ip addr add 192.168.0.2/24 dev ethe0
ip addr add 192.168.0.3/24 dev eth0

Kemudian mengatur tabel routing dengan
ip route add 10.0.0.0/16 via 192.168.0.2


--Christopher Karel

Christopher Karel
sumber
Netmask dari 255.255.255.255 konsisten dengan dokumentasi perusahaan hosting dan respons DHCP. Menurut Google itu normal untuk memiliki 255.255.255.255 pada jaringan point to point. Sejauh yang saya tahu, itu akan agak bodoh dari perusahaan hosting untuk menggunakan jaringan point to point mengingat risiko keamanan memiliki host yang tidak dipercaya dalam domain broadcast layer 2 yang sama.
Hendrik Brummermann
Seperti yang dikatakan Wolfgangsz di atas, a / 32 bukanlah standar untuk tautan titik ke titik. Saya tahu / 31 dapat dilakukan, tetapi jelas mematikan siaran dan pengidentifikasi jaringan. 'Rute host' yang Anda lihat sebutkan merujuk padanya digunakan dalam tabel routing. misalnya: Ini adalah rute ke host tertentu, bukan ke jaringan. Oleh karena itu terjadi di RFC yang Anda tautkan pada OSPF, sebuah protokol perutean. Yang sedang berkata, jika Anda yakin ISP Anda memerintahkan Anda untuk melakukan itu dengan OS Anda, maka Anda mungkin tetap melakukannya.
Christopher Karel
OK, beberapa suntingan dibuat, yang mungkin membantu masalah asli Anda.
Christopher Karel
-1

Pengaturan Anda saat ini seharusnya tidak bekerja sama sekali. Karena netmask untuk kedua antarmuka adalah 255.255.255.255, tidak ada ruang untuk gateway. Namun, untuk mengirimkan lalu lintas yang berarti, server Anda memerlukan gateway. ISP yang menyediakan dua alamat IP publik juga harus memberi Anda pengaturan netmask dan gateway untuk kedua alamat IP.

Contoh (ini adalah server pribadi saya dan alamat IP asli):

Tabel routing IP kernel
Destination Gateway Genmask Flags Metric Ref Use Iface
217.10.144.208 0.0.0.0 255.255.255.248 U 0 0 0 eth0
0.0.0.0 217.10.144.209 0.0.0.0 UG 0 0 0 eth0

Server itu sendiri pada 217.10.144.210, yang terletak di subnet yang sama dengan gateway (harus, jika tidak, lalu lintas tidak dapat dialihkan). Agaknya ISP juga menyediakan subnet yang sama untuk beberapa pelanggan lain.

Jika Anda berada di server itu dan melakukan ping ke gateway Anda, Anda akan menerima pesan "no route to host".

Bicaralah dengan ISP dan dapatkan pengaturan yang benar, kemudian perbarui konfigurasi antarmuka Anda, restart jaringan dan periksa lagi.

wolfgangsz
sumber
2
Netmask dari 255.255.255.255 konsisten dengan dokumentasi perusahaan hosting dan respons DHCP. Menurut Google itu normal untuk memiliki 255.255.255.255 pada jaringan point to point. Sejauh yang saya tahu, itu akan agak bodoh dari perusahaan hosting untuk menggunakan jaringan point to point mengingat risiko keamanan memiliki host yang tidak dipercaya dalam domain broadcast layer 2 yang sama.
Hendrik Brummermann
Jika Anda memiliki jaringan point-to-point, maka netmask Anda akan menjadi 255.255.255.252. Ini akan memungkinkan dua host yang membentuk dua titik akhir, alamat jaringan dan alamat broadcast. Ini adalah skenario normal untuk koneksi semacam itu. Dalam kasus Anda, host lain kemudian akan menjadi gerbang Anda ke seluruh dunia. Saya tidak begitu peduli dengan apa yang Anda gali di google, tetapi ini adalah cara kerja jaringan TCP / IP. Dan jelas itu tidak bekerja untuk Anda. Saya menyerahkan kesimpulan untuk Anda.
wolfgangsz
Terima kasih, tetapi bagian ini berfungsi dengan baik untuk saya. Ngomong-ngomong itu disebut "host route" dalam standar Internet resmi: rfc-editor.org/rfc/rfc2328.txt
Hendrik Brummermann
Masalah saya dapat direproduksi di jaringan lokal, juga: ifconfig eth0 192.168.0.2 mask 255.255.255.0 / ifconfig eth0: 1 192.168.0.3 mask 255.255.255.0 / rute tambahkan default gw 192.168.0.1
Hendrik Brummermann