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 route show to match 8.8.8.8
dikatakan?
ip route get
mencetak hasil dari algoritma pemilihan rute, dan mencetak alamat sumber dari src
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?)
ip rule list
? Dan untuk setiap tabel yang tercantum, apa outputnyaip route list table $table
?