Tôi không biết đó là một lỗi hay một hành vi dự phòng có chủ ý, nhưng từ những gì tôi có thể thấy ở đây, nó không liên quan gì đến wlan0
tuyến đường cục bộ mà bạn đã đề cập hoặc tất cả cổng mặc định blah blah (không có ý xúc phạm nhưng nó hầu như không có ý nghĩa gì đối với tôi) được nêu trong câu trả lời khác/"đúng".
bình thường như thế nào MẶT NẠ
hoạt động là, nó chọn địa chỉ được cấu hình trên hướng ngoại giao diện (được xác định bởi định tuyến, do đó SAU ĐƯỜNG
) cho NAT nguồn mà nó thực hiện. (Nếu nhiều địa chỉ được gán trên giao diện, nó có thể sẽ chọn địa chỉ đầu tiên hoặc địa chỉ được đặt làm địa chỉ nguồn ưu tiên trong tuyến đường tương ứng; tôi không quen thuộc với nó và điều đó nằm ngoài phạm vi ở đây dù sao). Nó không liên quan gì đến địa chỉ nexthop/gateway của route mặc định. (Đó không phải là cách NAT nguồn hoạt động.)
Tuy nhiên, khi nói đến giao diện lo
, mọi thứ dường như trở nên rắc rối một chút. Chính xác hơn, nó dường như không liên quan gì đến bản thân giao diện (ngoài thực tế là nó sẽ là giao diện gửi đi vì đích đến là một địa chỉ cục bộ), mà thực tế là, các địa chỉ trong 127.0.0.0/8
khối không thuộc phạm vi toàn cầu
. Mặc dù tôi không biết chuyện gì đang xảy ra đằng sau hiện trường, nhưng có vẻ như lưu lượng truy cập không thể "xuất hiện" nếu máy chủ không có phạm vi toàn cầu
Địa chỉ IP được định cấu hình nhưng cố gắng MẶT NẠ
.
Những gì tôi có thể thấy ở đây là, ngay cả khi bạn chỉ định cấu hình một địa chỉ hợp lệ cho phạm vi toàn cầu
(ví dụ. 192.168.0.10/32
) trên bất kỳ giao diện nào (bao gồm cả lo
), bạn sẽ thấy nó hoạt động trở lại. (Tuyến địa phương bạn đã đề cập sẽ được thêm tự động.Nhưng tôi không thấy rằng chỉ thêm tuyến đường hoạt động ở đây.)
Đối với giá trị của nó, các địa chỉ và giao diện không bị ràng buộc chặt chẽ với nhau trong Linux (không phải theo cách đơn giản như, nó sẽ chỉ trả lời các lượt truy cập nếu địa chỉ đích của chúng khớp với địa chỉ được định cấu hình trên giao diện gửi đến, ngay cả khi chuyển tiếp IP là không đáng quan tâm). Vì vậy, nó có thể liên quan đến điều đó: trong trường hợp MẶT NẠ
không thể chọn một phạm vi toàn cầu
địa chỉ từ những gì được định cấu hình trên giao diện gửi đi, nó chỉ chọn một từ bất kỳ (tôi nghi ngờ rằng quyền ưu tiên có liên quan đến tuyến đường mặc định), nếu vẫn không, nó chỉ từ chối hoạt động theo một cách nào đó.
Trong trường hợp bạn thực sự cần một quy tắc cho phép MẶT NẠ
trên tất cả các giao diện nhưng lo
, bạn có thể có:
iptables -t nat -A POSTROUTING ! -o lo -j MẶT MẠO