Tôi có một máy có giao diện có hai địa chỉ 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
Nếu tôi thực hiện chẳng hạn ip -s route get 8.8.8.8
, thì theo điều này, gói đầu ra sẽ có địa chỉ IP nguồn 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
Tuy nhiên, khi tôi lấy ví dụ ping
hoặc SSH
đến 8.8.8.8
, thì IP nguồn là 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
Lý do mà trong trường hợp ip route get
này không hiển thị địa chỉ IP nguồn chính xác là gì?
ip route show to match 8.8.8.8
nói gì
ip route get
in kết quả của thuật toán chọn định tuyến và in địa chỉ nguồn từ src
trường của mục nhập bảng định tuyến phù hợp. Tuy nhiên, một ứng dụng có thể liên kết một địa chỉ với ổ cắm, sau đó được sử dụng thay thế làm địa chỉ nguồn trong các gói IP. Xem lựa chọn địa chỉ nguồn . Có lẽ chương trình ping của bạn làm điều này? (Có một số chương trình ping; gói nào là của bạn?)
ip rule list
cái gì? Và đối với mỗi bảng được liệt kê, đầu ra của làip route list table $table
gì?