Điểm:-1

Tại sao apache đăng nhập IP nội bộ khi sử dụng miền bên ngoài?

lá cờ cn

Tôi có một Raspberry Pi đang chạy mà chúng tôi đang sử dụng trong văn phòng cho các dự án thử nghiệm nhỏ mà chúng tôi không muốn trên máy chủ phát triển chính của mình. Nó đang chạy apache. DNS được xử lý qua Cloudflare, nhưng ở chế độ Chỉ DNS. Hiện tại, không có giới hạn IP nào được áp dụng khi tôi thử nghiệm. Kỷ lục A cho mysite.domain.tld đang trỏ đến địa chỉ IP tĩnh của tôi 123.123.123.123 và chỉ có một bộ định tuyến/modem cáp quang tiêu chuẩn dành cho doanh nghiệp nằm giữa Internet và Pi.

Khi tôi ghé thăm mysite.domain.tld ví dụ như từ điện thoại của tôi không có wifi, IP của nhà cung cấp dịch vụ di động sẽ hiển thị.Khi tôi quên đi từ một máy chủ từ xa, nó là' IP hiển thị trong nhật ký. Mọi thứ hoạt động như mong đợi.

Tuy nhiên, khi tôi đi đến mysite.domain.tld từ trong cùng một mạng mà Pi được đặt, apache ghi lại IP cổng bộ định tuyến 192.168.1.1. Tôi muốn thấy địa chỉ IP công cộng của mình, vì kết nối của tôi với tên miền được phân giải, qua Cloudflare, thành IP công cộng. Nhưng thay vào đó, tôi thấy một IP mạng cục bộ trong nhật ký.

Không có gì được thiết lập trong /etc/hosts (Tôi đang dùng macOS) và trên bộ định tuyến, chỉ chuyển tiếp cổng cho các kết nối từ cổng 443 là bộ định tuyến đến Pi trên cùng một cổng - không có gì liên quan đến tên miền được tham chiếu ở bất kỳ đâu. Khi tôi ping mysite.domain.tld nó mang lại cho tôi đám mây địa chỉ IP, đó là những gì tôi mong đợi.

Có vẻ như ở đâu đó dọc theo chuỗi, thực tế là địa chỉ IP của tôi và địa chỉ IP công khai của Pi đang được khớp nên nó ghi đè IP bằng IP cổng nội bộ. Điều gì đang thực sự xảy ra ở đây? Tôi không tâm trí về bản chất, tôi chỉ muốn đảm bảo rằng tôi có thể dựa vào thực tế là 192.168.* IP có thể được tin cậy khi thiết lập hạn chế IP trên tường lửa.

Lưu ý: CF-Connecting-IP và các tiêu đề tương tự không được gửi bởi Cloudflare tại đây, tôi cho rằng điều đó chỉ xảy ra khi không ở chế độ Chỉ DNS. Và nó dường như chỉ khi tôi sử dụng cùng một kết nối mạng mà Pi đang sử dụng.

Nikita Kipriyanov avatar
lá cờ za
Chính xác thì bộ định tuyến mà bạn đang nói đến là gì (bộ định tuyến có địa chỉ 192.168.1.1)? Nhiều khả năng điều này là do hành vi của nó gây ra. Ngoài ra, một câu hỏi phụ, thay vào đó bạn mong đợi thấy gì trong lĩnh vực đó và tại sao?
lá cờ cn
@NikitaKipriyanov Đó là Technicolor Cobalt - tức là một bộ định tuyến ISP có sẵn. Những gì tôi mong đợi để xem địa chỉ IP công cộng của kết nối là gì, bởi vì tôi không kết nối với 192.168.1.* (hoặc có bất kỳ miền nào phân giải thành IP nội bộ) nhưng tôi đang kết nối với miền đối mặt công khai qua Cloudflare. Vì vậy, tôi mong muốn IP công cộng hiển thị trong apache.
Điểm:2
lá cờ za

Bộ định tuyến của bạn đang chạy Linux và hành vi này rất dễ thực hiện trên bất kỳ bản phân phối Linux gốc nào. Tôi có thể đoán những quy tắc nào phải có trong tường lửa của bộ định tuyến để nó hoạt động như thế này. Nhưng hãy lưu ý rằng đây chỉ là suy đoán, chúng tôi không biết chính xác các quy tắc trông như thế nào trong thực tế.

Khi bạn chuyển tiếp một cổng tới máy chủ web của mình, nó đã thêm một quy tắc DNAT cụ thể, có thể giống như sau:

iptables -t nat -A PREROUTING -p tcp -d <your-external-address> --dport 443 -j DNAT --to-destination <raspberry-pi-address>

Nói cách khác, điều này có nghĩa là: "trước khi quyết định xem gói này được dành cho thiết bị hay phải được chuyển tiếp, hãy kiểm tra xem địa chỉ đích của gói có phải là địa chỉ bên ngoài của bạn không và cổng đích có phải là 443 hay không. Nếu trùng khớp, hãy thay đổi địa chỉ đích thành mạng LAN của raspberry pi Địa chỉ". Lưu ý, quy tắc này không lọc theo giao diện.

Ngoài ra, nó chắc chắn có quy tắc kiểu SNAT (để cung cấp quyền truy cập internet cho mạng LAN), có thể nó trông như thế này:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

Nói cách khác, sau khi bộ định tuyến quyết định gói phải đi đâu, trước khi gửi gói, nó sẽ thay đổi địa chỉ nguồn của nó thành bất kỳ địa chỉ nào mà giao diện gửi đi có (nếu gói được gửi từ mạng LAN). Một lần nữa, không có gì được lọc bởi một giao diện.

Bây giờ hãy xem xét kết nối HTTPS của bạn. Bạn đang chỉ định tên máy chủ trong trình duyệt, phải không? Bạn thiết lập nó để nó được phân giải thành địa chỉ bên ngoài của bộ định tuyến, địa chỉ này sẽ trở thành địa chỉ đích. Địa chỉ nguồn của bạn nằm trong mạng LAN. Vì vậy, có vẻ như cả hai quy tắc này đều áp dụng cho các gói kết nối của bạn.

Xử lý chúng, trước tiên, bộ định tuyến gặp quy tắc DNAT, kiểm tra địa chỉ đích và cổng và quyết định thay đổi địa chỉ đích thành địa chỉ của raspberry pi.Sau đó, nó phát hiện ra giao diện mà gói phải đi ra ngoài là mạng LAN. Sau đó, nó kiểm tra gói được dịch một phần theo quy tắc thứ hai và tìm ra địa chỉ nguồn là từ mạng LAN. Vì vậy, nó thay thế địa chỉ nguồn của gói bằng địa chỉ của giao diện LAN, 192.168.1.1. Đây là những gì mâm xôi pi của bạn nhìn thấy.

Hoạt động NAT có trạng thái, tức là nó cũng duy trì một bản ghi bảng cho biết cái nào được thay thế bằng cái gì và làm thế nào để phát hiện các gói chuyển tiếp và trả lời tiếp theo, vì vậy nó dịch tất cả chúng một cách chính xác. Vâng, hóa ra Linux có thể thực hiện DNAT và SNAT cùng lúc trong cùng một luồng.

Bạn có thể tin tưởng hành vi này? Tôi không biết. Nếu chương trình cơ sở của bộ định tuyến là nguồn mở, chúng tôi đã có cơ hội kiểm tra. Không có nguồn, chúng tôi không thể chắc chắn. Điều này luôn xảy ra khi nguồn đóng, đó là lý do tại sao phải tránh các sản phẩm nguồn đóng nếu bạn lo ngại về bảo mật.

Đă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.