Điểm:0

tiếp cận url virtualhost proxy công khai của apache từ máy chủ cục bộ phía sau NAT bằng cách sử dụng iptables

lá cờ bo

Tôi gặp sự cố với một khách đang sử dụng virsh phía sau máy chủ chạy bằng tường lửa iptables. Vị khách này lưu trữ các trang web, một trang web quan trọng nhất với proxy ngược.

Mọi thứ đang hoạt động tốt. sau đó tôi đã cài đặt cộng tác trực tuyến 1: https://www.collaboraoffice.com/code/. Thật tuyệt khi mở tài liệu và họ có một cắm vào cho quan trọng nhất

Tôi đã thử nghiệm plugin này từ một máy chủ từ xa cũng đang chạy quan trọng nhất, tiếp cận với hộp cục bộ này phía sau iptables của tôi và nó đang hoạt động hoàn hảo. Tuy nhiên, khi tôi kiểm tra plugin này từ chính máy chủ cục bộ của khách, đằng sau iptables, vì vậy về cơ bản NAT, nó không thể tự tìm thấy. Tôi đã hết thời gian.

Vì vậy, khách của tôi đằng sau iptables, với thiết lập quy tắc phù hợp để truyền lưu lượng truy cập, giữ quan trọng nhất VÀ CollaboraOnline, nhưng nếu tôi trỏ URL công khai từ quan trọng nhất để tìm nạp CollaboraOnline, thì cả hai máy chủ cục bộ đều không thể tìm thấy nhau. Tôi không thể thực hiện localhost:9980 hoặc 127.0.0.1:9980 (là vị trí của CollaboraOnline) trong plugin, nó không giống như cổng trong địa chỉ...

Nếu tôi làm cong https://CollaboraOnline.domain.ca Tôi có thể thấy nó hết thời gian.

Nếu tôi chỉnh sửa tệp /etc/hosts trên máy chủ localhost thành 127.0.0.1 CollaboraOnline.domain.ca, thì curl hoạt động, plugin quan trọng nhất tìm thấy CollaboraOnline, nhưng nó vẫn không hoạt động vì tôi kết thúc với lỗi xác minh loại SSL như thế này.

AH02032: Tên máy chủ được cung cấp qua SNI và tên máy chủ được cung cấp qua HTTP không có thiết lập SSL tương thích cách bỏ qua

Vì vậy, bây giờ tôi đang cạn kiệt những ý tưởng sáng suốt. Tôi có một hộp công khai khác không phía sau virsh với iptables, nếu tôi chuyển sang một trong các máy chủ cục bộ của nó, mọi thứ đều ổn. Điều này chỉ khiến tôi tin rằng iptables có thể cần một quy tắc để khách của tôi chạy quan trọng nhất và CollaboraOnline có thể tự quay lại khi yêu cầu một URL công khai mà nó tự phục vụ?!?

Có ai có bất cứ ý tưởng về điều này?

VM khách của tôi là 192.168.122.126 và máy chủ mẹ của tôi lưu trữ khách Vrish và iptables là 192.168.122.1

Đây là các quy tắc iptables (đã loại bỏ một số thứ lộn xộn như fail2ban)

iptables -L
Chuỗi FORWARD (chính sách CHẤP NHẬN)
đích prot opt ​​nguồn đích         
CHẤP NHẬN tất cả -- mọi nơi trạng thái 192.168.122.126 MỚI, LIÊN QUAN, THÀNH LẬP
CHẤP NHẬN tất cả -- mọi nơi 192.168.122.0/24 ctstate LIÊN QUAN, THÀNH LẬP
CHẤP NHẬN tất cả -- 192.168.122.0/24 mọi nơi            
CHẤP NHẬN tất cả -- mọi nơi mọi nơi            
TỪ CHỐI tất cả -- mọi nơi mọi nơi từ chối-với icmp-port-không truy cập được
TỪ CHỐI tất cả -- mọi nơi mọi nơi từ chối-với icmp-port-không truy cập được
iptables -L -t nat 
PREROUTING chuỗi (CHẤP NHẬN chính sách)
đích prot opt ​​nguồn đích         
DNAT tcp -- bất cứ đâu 148.59.149.79 tcp dpt:9980 đến:192.168.122.126:9980
DNAT tcp -- bất cứ đâu 148.59.149.79 tcp dpt:12000 đến:192.168.122.126:12000
DNAT tcp -- bất cứ đâu 148.59.149.79 tcp dpt:11000 đến:192.168.122.126:11000
DNAT tcp -- bất cứ đâu 148.59.149.79 tcp dpt:submission to:192.168.122.126:587
DNAT tcp -- bất cứ đâu 148.59.149.79 tcp dpt:imap2 đến:192.168.122.126:143
DNAT tcp -- bất cứ đâu 148.59.149.79 tcp dpt:smtp tới:192.168.122.126:25
DNAT tcp -- bất cứ đâu 148.59.149.79 tcp dpt:webmin đến:192.168.122.126:10000
DNAT tcp -- bất cứ đâu 148.59.149.79 tcp dpt:4443 đến:192.168.122.126:4443
DNAT udp -- bất cứ đâu 148.59.149.79 udp dpt:10000 tới:192.168.122.126:10000
DNAT tcp -- bất cứ đâu 148.59.149.79 tcp dpt:http tới:192.168.122.126:80
DNAT tcp -- bất cứ đâu 148.59.149.79 tcp dpt:https đến:192.168.122.126:443
Martin avatar
lá cờ kz
Nếu tôi hiểu bạn một cách chính xác, hệ thống máy chủ lưu trữ của bạn giữ các quy tắc iptables và chuyển hướng chính xác lưu lượng truy cập đến máy ảo của bạn. Bạn đã thực hiện các lệnh cuộn tròn bên trong VM hoặc trên hệ thống máy chủ chưa?
gstlouis avatar
lá cờ bo
@Martin Tôi đã cuộn tròn từ máy ảo khách chứ không phải máy chủ chứa iptables và lưu trữ khách của tôi. Vì vậy, khách của tôi là 192.168.122.126 và máy chủ/iptables/vrish của tôi là 192.168.122.1
Martin avatar
lá cờ kz
À được rồi, VM và máy chủ nằm trong cùng một mạng con... bạn có thể đăng các quy tắc iptables của mình không?
gstlouis avatar
lá cờ bo
@Martin đã cập nhật bài gốc
Martin avatar
lá cờ kz
và VM không có bất kỳ quy tắc tường lửa nào? bởi vì nếu nat đang diễn ra trên máy chủ, tôi không thấy bất kỳ lý do nào khiến việc cuộn tròn từ bên trong VM sang localhost không thành công ...
gstlouis avatar
lá cờ bo
@Martin VM có iptables cho mục đích fail2ban. Chuỗi FORWARD không chứa gì và tất cả các chuỗi bảng tự nhiên đều trống. trừ khi tôi cần nói với iptables trên VM điều gì đó về việc lặp lại yêu cầu công khai url về chính nó, iptables không giữ gì tùy chỉnh từ cấu hình ban đầu của nó, ngoại trừ các chuỗi fail2ban bổ sung. Tôi có thể đăng nếu bạn nghĩ nó có liên quan.
Martin avatar
lá cờ kz
Hãy để chúng tôi [tiếp tục cuộc thảo luận này trong cuộc trò chuyện](https://chat.stackexchange.com/rooms/136222/discussion-between-martin-and-gstlouis).
gstlouis avatar
lá cờ bo
Đã phải rời đi. Có lẽ ngày mai? @martin
Martin avatar
lá cờ kz
chắc chắn rồi, tôi nghĩ chuỗi INPUT/OUTPUT có liên quan - có thể fail2ban đã khóa bạn...
gstlouis avatar
lá cờ bo
@Martin Tôi đã tắt cả f2b và nó vẫn không hoạt động. Tôi đã đăng nhập vào trò chuyện, nhưng có thể không phản hồi nhanh
Điểm:1
lá cờ kz

Thủ phạm ở đây là một quy tắc NAT bị lỗi/không đầy đủ. Trong quá trình kết nối TCP, mỗi điểm cuối có IP nguồn/đích cố định và nếu một gói IP được nhận trên cổng này với một IP nguồn/đích khác, thì gói đó sẽ bị hủy. Điều này đúng cho cả hai điểm cuối: máy khách ( curl ) và máy chủ.

Để hiểu vấn đề, tôi sẽ theo dõi luồng gói, bắt đầu từ máy khách:

  • curl từ bên trong VM sẽ gửi một gói đến địa chỉ IP công cộng. IP nguồn: 192.168.122.126, IP đích: 148.59.149.79
  • Nhân của VM kiểm tra bảng định tuyến của nó và gửi gói ip đến cổng mặc định của nó, đó là 192.168.122.1
  • hạt nhân của máy chủ nhận gói và chuyển nó qua chuỗi iptables (hãy nhớ chuỗi nào được duyệt trước - PREROUTING đi trước POSTROUTING )
  • bên trong chuỗi PREROUTING, IP đích được thay thế bằng 192.168.122.126
  • ở đây, chuỗi POSTROUTING sẽ được duyệt qua.
  • vì IP đích, gói sẽ quay trở lại VM
  • tại ổ cắm máy chủ, gói IP đến. IP đích VÀ IP nguồn là 192.168.122.126. Không có vấn đề cho đến nay.
  • Ổ cắm máy chủ gửi trả lời - lần này, vì IP đích là giao diện riêng của nó, các quy tắc NAT của máy chủ lưu trữ sẽ KHÔNG được áp dụng.
  • Ổ cắm máy khách nhận được phản hồi từ 192.168.122.126 - không phải là IP mà ổ cắm máy khách đã gửi yêu cầu kết nối của nó, do đó gói bị hủy.

Giải pháp là thay đổi địa chỉ IP nguồn theo cách mà phản hồi từ ổ cắm máy chủ của VM phải vượt qua các quy tắc NAT của máy chủ:

iptables -t nat -I POSTROUTING 1 -s 192.168.122.126 -d 192.168.122.126 -j SNAT --to-source 192.168.122.1

Hãy nhớ rằng mục tiêu SNAT chỉ được áp dụng bên trong chuỗi POSTROUTING - do đó, DNAT từ chuỗi PREROUTING đã được áp dụng.

Với quy tắc này, ổ cắm máy chủ bên trong VM nhận được yêu cầu kết nối đến từ 192.168.122.1 - gửi câu trả lời và câu trả lời sẽ được áp dụng ngược quy tắc SNAT / DNAT ngay khi đến máy chủ: nguồn tới 192.168. 122.126 và đích đến 148.59.149.79.

Câu trả lời này phù hợp với yêu cầu kết nối ban đầu và nỗ lực kết nối thành công.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.