Saya memiliki mesin dengan antarmuka yang memiliki dua alamat IP:
inet 192.168.1.15/32 scope global eth0
inet 10.10.118.45/24 brd 10.10.118.255 scope global eth0:hosts4
Jika saya mengeksekusi misalnya ip -s route get 8.8.8.8
, maka menurut ini, paket egress akan memiliki alamat IP sumber 10.10.118.45
:
8.8.8.8 via 10.10.118.254 dev eth0 src 10.10.118.45
cache users 1 used 1
Namun, ketika saya misalnya ping
atau SSH
untuk 8.8.8.8
, maka sumber IP adalah 192.168.1.15
:
15:19:38.092508 IP 192.168.1.15 > 8.8.8.8: ICMP echo request, id 9135, seq 2, length 64
15:19:38.097962 IP 8.8.8.8 > 192.168.1.15: ICMP echo reply, id 9135, seq 2, length 64
Apa alasan bahwa dalam kasus ip route get
ini tidak menunjukkan alamat IP sumber yang benar?
ip rule list
? Dan untuk setiap tabel yang tercantum, apa outputnyaip route list table $table
?ip route show to match 8.8.8.8
dikatakan?ip route get
mencetak hasil dari algoritma pemilihan rute, dan mencetak alamat sumber darisrc
bidang entri tabel routing yang cocok. Namun, aplikasi dapat mengikat alamat ke soket, yang kemudian digunakan sebagai alamat sumber dalam paket IP. Lihat Pemilihan Alamat Sumber . Mungkin program ping Anda melakukan ini? (Ada beberapa program ping; dari paket mana Anda?)Jawaban:
Mesin hanya dapat memiliki satu gateway default. Anda bisa menggunakan ping -i untuk memilih antarmuka yang Anda inginkan dari paket. Dari informasi yang Anda berikan, tampak bahwa IP default Anda adalah 192.168.1.15. 10.10.118.45 tampaknya merupakan alias. Periksa
/etc/networks
,/etc/sysconfig/network
, serta di dalam konfigurasi antarmuka/etc/network-scripts/ifcfg-*
Berikut adalah contoh output dari konfigurasi serupa.
sumber
{}
untuk teks yang dapat dibaca lebih baik.Mungkin
10.10.118.45/24
alamat dhcp Anda mungkin ? Anda dapat mencoba menghapus alamat statissumber