Điều này đã làm tôi bối rối:
Tôi có một tường lửa pfSense (hãy gọi nó là pfs
) và đằng sau nó là một số máy chủ.
Tôi NAT một số dịch vụ từ IP công cộng của mình đến các máy chủ khác nhau trên mạng LAN mà không gặp sự cố nào.
Trên một trong các máy chủ (hãy gọi nó là s1
) Tôi đang chạy một lang thang
(với libvirt
) VM (hãy gọi nó là v1
) với một công cộng mạng được cấu hình, nhận IP 192.168.1.159
qua pfs
máy chủ DHCP.
Bây giờ tôi cấu hình một NAT đơn giản trên pfs
để truy cập s1
's SSH, nói <wan>:6622 -> s1:22
và truy cập nó trên mydomain.com:6622
. Không vấn đề gì.
Tôi cũng có thể truy cập v1:22
(hoặc tương đương 192.168.1.159:22
) với người dùng ssh hợp lệ từ trong mạng LAN không có vấn đề.
Bây giờ tôi thêm một NAT đơn giản vào pfs
, Nói <wan>:6722 -> v1:22
. Bây giờ cố gắng truy cập mydomain.com:6722
không làm công việc?!
Mục tiêu là thêm cả "lớp khác": chạy các container có cổng công khai, ví dụ: --xuất bản 9980:80
trên v1
và truy cập chúng dưới dạng ví dụ: v1:9980
và từ mydomain.com:9980
với NAT tương ứng trên pfs
Thích <wan>:9980 -> v1:9980
. Từ mạng LAN điều này cũng hoạt động như mong đợi (tức là tôi có thể truy cập v1:9980
từ mạng LAN), nhưng NAT thông qua pfs
không phải.
Tôi có các thiết lập tương tự hoạt động trong cùng một mạng trên các máy khác nhau mà không gặp sự cố. Tôi thậm chí còn có một người khác (không lang thang, nhưng cũng libvirt
) VM bật s1
mà tôi có thể ssh qua NAT thông qua IP công cộng của mình một cách hoàn toàn ổn. Nhưng bằng cách nào đó ở trên không hoạt động với lang thang
máy và tôi thực sự không biết điều gì có thể gây ra sự cố này. (FWIW tôi có net.ipv4.forward
bật trên v1
).
CHỈNH SỬA:
Tôi đã tiến gần hơn một bước: nếu tôi tấn công NIC hiện có đầu tiên của lang thang
máy ảo sử dụng quản lý đức hạnh
và đặt VM thứ hai thành rtl8139
thay vì tài năng
(và sau đó khởi động lại), tôi thua ssh lang thang
khả năng nhưng NAT sau đó hoạt động. Vì vậy, câu hỏi sau đó trở thành: làm thế nào để cấu hình thông qua lang thang
cung cấp sao cho chúng tôi có cấu hình tương tự, tôi cho rằng điều đó có nghĩa là mạng công cộng phải ở trên giao diện mặc định?