Tôi có thiết lập sau:
Proxmox Chủ nhà máy chủ chuyên dụng với một IP công cộng và IPTables đã cài đặt và một loạt Máy ảo đã cài đặt docker.
Tôi sử dụng iptables để chuyển tiếp cổng 443 sang một trong các máy ảo thông qua DNAT và nó hoạt động tốt từ bên ngoài Chủ nhà tức là Internet. Nhưng nếu tôi cố truy cập tài nguyên trong VM đang chạy trên VM qua IP công cộng thì không thể truy cập được.
Trường hợp sử dụng: tôi có nginx với SSL làm proxy ngược cho các dịch vụ chạy trong docker trên VM (ứng dụng phụ trợ + giao diện người dùng) và cần truy cập phụ trợ từ giao diện người dùng thông qua "DNS, IP công cộng" vì chứng chỉ SSL được tạo cho dns công cộng trỏ đến IP và cổng công cộng được chuyển tiếp tới nginx của VM.
Tôi có giao diện công cộng được kết nối với vmbr0 và một cầu nối khác vmbr172 (172.20.0.0/16) cho VM
Quy tắc IPTables hiện tại của tôi:
iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to 172.20.2.9:443
iptables -t nat -A POSTROUTING -s '172.20.0.0/16' -o vmbr0 -j MASQUERADE
iptables -L -n -t nat -v
PREROUTING chuỗi (chính sách CHẤP NHẬN 58449 gói, 3018K byte)
pkts byte đích prot chọn không tham gia đích nguồn
1941 105K DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 đến:172.20.2.9:443
Chuỗi POSTROUTING (chính sách CHẤP NHẬN 5511 gói, 332K byte)
pkts byte đích prot chọn không tham gia đích nguồn
212K 18M MẶT MẠO tất cả -- * vmbr0 172.20.0.0/16 0.0.0.0/0
Tôi đã cố gắng thay đổi giao diện thành không tí nào nhưng kết nối dường như chỉ "treo" và hết thời gian chờ. Đoán rằng tôi cần một số quy tắc định tuyến sau nhưng không thể hình dung ra nó trông như thế nào.