Vì sao máy chủ sau máy khách VPN lại trả lời qua đường hầm
Các kết nối đến thất bại khi câu trả lời đi theo tuyến mặc định của VPN thay vì đường đến. Định tuyến theo chính sách hoặc NAT nguồn khôi phục đường về.
Các kết nối đến một máy chủ cũng chạy máy khách VPN thất bại theo một cách rất đặc thù: bắt tay đến nơi, daemon trả lời, và máy khách không nhận được gì trở lại. Không có gì chặn cổng. Câu trả lời rời đi qua đường hầm, bởi vì đường hầm sở hữu tuyến mặc định và nhân hệ điều hành định tuyến câu trả lời theo đích đến, không theo ký ức về nơi yêu cầu bắt đầu. Chính một thiếu sót đó giải thích mọi triệu chứng tiếp theo.
Câu trả lời được định tuyến, không được ghi nhớ
Một máy khách VPN cài tuyến mặc định sẽ thêm một mục vượt qua cổng LAN, hoặc bằng mét, hoặc bằng cách chia không gian thành hai nửa cụ thể hơn. Các gói đi ra giờ chọn giao diện đường hầm. Nhân hệ điều hành không bao giờ hỏi gói đang được trả lời đã đến từ đâu ban đầu. Chính một thiếu sót đó giải thích mọi triệu chứng tiếp theo.
Hướng đi được định tuyến theo đích đến, và hướng về cũng vậy. Câu trả lời được gửi đến một máy khách công cộng, mà đường hầm sẽ sẵn lòng mang đi. Đầu xa nhận một gói mà nó không sở hữu nguồn, loại bỏ gói đó, và máy khách ban đầu chờ cho đến khi hết thời gian.
Lọc đường ngược nghiêm ngặt có thể loại bỏ gói đến trước khi daemon kịp đọc nó. Hãy kiểm tra bộ đếm đó trước, vì việc bị lọc loại bỏ và lỗi định tuyến trông giống nhau từ bên ngoài.
ip route show default sysctl net.ipv4.conf.all.rp_filter net.ipv4.conf.eth0.rp_filter nft list ruleset | grep -A3 'hook forward'
Lệnh đầu tiên cho thấy tuyến mặc định nào đang thắng. Lệnh thứ hai báo cáo liệu lọc nghiêm ngặt áp dụng toàn cục hay theo giao diện, và lệnh thứ ba hiển thị bất kỳ quy tắc chuỗi chuyển tiếp nào có thể liên quan.
Ba cách giữ đường về
Loại trừ đích của dịch vụ khỏi đường hầm là lựa chọn hẹp nhất. Một tuyến máy chủ trỏ đến cổng LAN, cùng với một daemon gắn với địa chỉ vật lý thay vì mọi địa chỉ, giữ luồng duy nhất đó bên ngoài đường hầm. Thay đổi là cục bộ và dễ hoàn tác.
Định tuyến theo chính sách là câu trả lời chung. Một quy tắc khóa theo địa chỉ nguồn hoặc theo dấu tường lửa chọn một bảng có tuyến mặc định trỏ đến cổng WAN, trong khi các kết nối của chính máy chủ tiếp tục dùng đường hầm. Giữ ưu tiên rõ ràng để quy tắc không bị che khuất về sau.
ip rule add from 203.0.113.25/32 table 100 priority 100 ip route add default via 192.0.2.1 dev eth0 table 100 ip route get 198.51.100.7 from 203.0.113.25
Hai lệnh đầu tiên xây dựng đường thay thế cho các câu trả lời có nguồn từ địa chỉ công cộng. Lệnh thứ ba hỏi nhân hệ điều hành xem chính xác nguồn và đích đó sẽ đi theo đường nào, và đó là cách bạn xác nhận quy tắc có tác dụng.
Dịch nguồn là lựa chọn thứ ba và là lựa chọn duy nhất sống sót trước một bộ định tuyến đã làm NAT trước dịch vụ. Câu trả lời phải quay về bộ định tuyến đó, và việc giả mạo địa chỉ ra giao diện WAN đạt được điều đó trong khi giấu máy khách khỏi nhật ký dịch vụ. Thay tuyến mặc định bằng tay sau khi kết nối là chẩn đoán, vì máy khách ghi lại bảng ở lần kết nối lại tiếp theo.
Khi chiếc hộp cũng định tuyến cho một LAN
Cùng một lỗi xuất hiện xa hơn một bước nhảy khi máy chủ định tuyến cho các thiết bị phía sau nó. Kết nối đến được chuyển tiếp tới một thiết bị nội bộ mà đường về duy nhất là đường hầm, và câu trả lời đến máy khách bên ngoài từ địa chỉ của nhà cung cấp. Thiết bị nội bộ luôn hoạt động đúng.
Việc theo dõi kết nối khi đó thấy một câu trả lời cho luồng mà nó chưa từng ghi nhận và loại bỏ nó. Dịch đích chuyển kết nối đến tới thiết bị, và dịch nguồn khiến câu trả lời trông như xuất phát từ chính bộ định tuyến.
Một tuyến chính sách giữ cổng được chuyển tiếp trên WAN trong khi lưu lượng của chính bộ định tuyến dùng đường hầm là tương đương gọn gàng hơn. Không có dịch nguồn, câu trả lời được gửi đến máy khách bên ngoài, và thiết bị nội bộ không có tuyến nào tới địa chỉ đó.
Ba phép thử phân tách nguyên nhân
Chạy ba phép thử: một kết nối vào chiếc hộp từ internet, một kết nối từ đó ra một máy chủ công cộng, và một lần tra tên. Khi hai phép đầu không khớp, đường về là thủ phạm. Khi tên thất bại cả hai chiều, bộ phân giải là lỗi khác chỉ chia sẻ đường hầm.
Sửa câu hỏi định tuyến trước, rồi xem tên. Trộn hai thứ đó là cách một máy chủ đang chạy tốt bị đổ lỗi cho bộ phân giải hỏng.
Ghi lại giao diện nào được ngoại lệ nêu tên và giữ cấu hình dưới kiểm soát phiên bản. Một quy tắc viết cho giao diện bị đổi tên sau khi nâng cấp sẽ qua hôm nay và thất bại sau lần khởi động lại tiếp theo.