Tôi có một máy ảo được tạo bằng libvirt/qemu/kvm được gắn TAP vào cầu nối Linux (virbr1).
Bên trong VM có IP là 10.99.0.9
.
Và có thiết lập định tuyến sau.
mặc định qua 10.99.0.1 dev enp1s0 liên kết tĩnh proto
10.99.0.1 qua 10.99.0.1 dev enp1s0 liên kết tĩnh nguyên mẫu
Đây 10.99.0.1 là IP của cây cầu
Tôi muốn tất cả lưu lượng truy cập đến từ máy ảo đó đi đến một tuyến VPN (wg0) mà tôi đã thiết lập, vì vậy trên máy chủ tôi đã làm
tuyến ip thêm bảng dev wg0 mặc định 42
thêm quy tắc ip từ 10.99.0.9 bảng 42
Điều này hoạt động tốt, nhưng tôi nhận thấy rằng bên trong VM, tôi vẫn có thể ping địa chỉ IP của máy chủ 192.168.2.1
.
Cuối cùng tôi nhận ra điều này là do tra cứu cục bộ
quy tắc ip có tùy chọn 0 cao hơn quy tắc tôi đã thêm.
Tôi nghĩ rằng tôi chỉ cần trao đổi thứ tự, và tất cả sẽ ổn thôi.
quy tắc ip thêm tùy chọn 300 tra cứu cục bộ # 300 ở đây cao hơn 0 tùy ý
quy tắc ip del tùy chọn 0
quy tắc ip thêm từ 10.99.0.9 bảng 42 tùy chọn 0
Tuy nhiên, khi thực hiện việc này, tôi hiện không có kết nối nào trong VM.
Nếu tôi đánh hơi trên linux bridge, tôi thấy nó liên tục gửi yêu cầu ARP để tìm xem ai có 10.99.0.1
, và không có phản hồi sắp tới.
Tôi không nghĩ rằng các quyết định định tuyến này sẽ ảnh hưởng đến ARP chút nào, vì nó hoạt động cùng với IP, vì vậy điều này đã bị nhầm lẫn.
Tôi đã xác nhận chính xác những dòng đó gây ra sự cố
Tại sao các phản hồi ARP không quay trở lại giao diện VM?