Ba thay đổi luôn bị trộn lẫn mỗi khi VPN gặp OpenWrt: mở một cổng, cho phép chuyển tiếp và bật giả mạo địa chỉ. Chúng trả lời những câu hỏi khác nhau, và thường chỉ một trong số đó là yêu cầu thực sự. Đọc từng điều khiển theo vai trò lưu lượng mà nó quản lý biến phỏng đoán thành quyết định, và cũng cho biết triệu chứng nào cần mong đợi khi thay đổi sai. Hãy bắt đầu bằng cách gọi tên vai trò đã thất bại, không phải ô kiểm bạn nhớ.

Gọi tên vai trò lưu lượng trước khi chạm vào một điều khiển

Đầu vào vùng quyết định điều gì có thể đến chính bộ định tuyến. Đầu ra vùng bao gồm lưu lượng do bộ định tuyến tự tạo, chuyển tiếp vùng là giá trị mặc định cho lưu lượng đi qua một vùng, và giả mạo địa chỉ quyết định địa chỉ nguồn có được viết lại khi ra ngoài hay không. Đó là bốn câu hỏi khác nhau, và một chính sách vùng trả lời cả bốn cùng lúc bằng cùng một giá trị, vì thế thay đổi trên toàn vùng là công cụ thô. Một quy tắc có tên có thể trả lời một trong số đó mà không chạm vào các cái còn lại.

Bản đồ hữu ích là theo vai trò lưu lượng, vì đó là điều bạn có thể quan sát khi có gì đó thất bại. Mỗi vai trò bên dưới có một điều khiển quyết định nó và một triệu chứng chỉ về nó:

Traffic roleControl that decides itWhere it lives in the configSymptom when it is wrong
A client reaching a listener on the routerInput policy of the zone that carries the connection, or a rule for the portoption input in the zone stanza, or a named ruleThe handshake never completes and the tunnel log says nothing
A tunnel client reaching the router itselfInput policy of the tunnel zoneoption input in the VPN zoneA ping to the gateway fails
A tunnel client reaching another LAN hostForwarding from the tunnel zone to the LAN zoneconfig forwarding plus the zone assignmentThe gateway answers and the file share times out
The router's own traffic leaving the WANOutput policy, and translation if the far side needs itoption output and option masqThe tunnel never establishes, or replies vanish

Dịch vụ lắng nghe trên bộ định tuyến cần một quy tắc đầu vào hẹp

Máy chủ OpenVPN trên bộ định tuyến nhận lưu lượng được gửi đến bộ định tuyến, nên kết nối bên ngoài của nó phụ thuộc vào chính sách đầu vào của vùng mang nó. Cho phép giao thức vận chuyển và cổng đã cấu hình và để mọi thứ khác trong vùng đó bị từ chối. Một quy tắc cổng duy nhất là thay đổi nhỏ hơn nhiều so với cho phép toàn vùng, và đó là thứ bạn vẫn có thể giải thích sau một năm.

Hai điều khiến quy tắc đó an toàn để giữ: nó gọi tên cổng mà dịch vụ thực sự dùng, và nó nằm cạnh định nghĩa vùng để người tiếp theo thấy vì sao nó tồn tại. Các dòng bên dưới chỉ là hình thức, cổng thay cho giá trị được cấu hình trên máy chủ. Hãy đổi cổng đó ở cả hai nơi khi dịch vụ chuyển đi, vì một quy tắc còn lại trên cổng cũ sẽ vô hình cho đến khi kiểm toán.

config zone
    option name 'wan'
    option input 'REJECT'
    option forward 'REJECT'
    option output 'ACCEPT'
    option masq '1'

config rule
    option name 'allow-openvpn'
    option src 'wan'
    option proto 'udp'
    option dest_port '1194'
    option target 'ACCEPT'

Hãy kiểm tra trước khi tải lại, vì lỗi cú pháp trong tệp tường lửa có thể để bộ định tuyến không còn bộ quy tắc hoạt động. Trên bản phát hành dùng fw4, việc kiểm tra là một lệnh riêng, và nó thất bại ồn ào thay vì âm thầm chấp nhận một khối hỏng. Chỉ tải lại sau khi kiểm tra đạt, và giữ tệp trước đó ở nơi bạn có thể đặt lại.

fw4 check
service firewall reload

Yêu cầu của máy khách đi qua chuyển tiếp, không phải đầu vào

Sau khi xác thực, yêu cầu của máy khách đường hầm đến một dịch vụ LAN tạo ra một luồng được chuyển tiếp, nên điều khiển quyết định nó là quan hệ chuyển tiếp giữa vùng đường hầm và vùng LAN. Gán giao diện đường hầm cho vùng mong muốn, rồi khai báo hướng, nguồn và dịch vụ. Việc gán vùng là thứ cho quy tắc chuyển tiếp ý nghĩa, và cả hai chỉ hiểu được khi đọc cùng nhau. Một quan hệ chuyển tiếp gọi vùng đường hầm là nguồn và vùng LAN là đích được đọc như một quyết định có chủ đích, trong khi hai lần cho phép toàn vùng được đọc như một tai nạn.

Việc đến chính bộ định tuyến vẫn dùng đường đầu vào, vì thế ping tới cổng không nói gì về chia sẻ tệp phía sau nó. Hai thất bại đó sống trong các khối khác nhau và được sửa bằng những thay đổi khác nhau. Hãy viết cả hai đường riêng ra trước khi đổi bất kỳ đường nào.

Giả mạo địa chỉ là quyết định định tuyến, không phải sự cho phép

Giả mạo địa chỉ viết lại địa chỉ nguồn của lưu lượng ra đã chọn. Nó có thể cứu một thiết kế ra ngoài mà phía xa không có đường về, và nó cũng giấu địa chỉ của từng máy khách khỏi mọi dịch vụ ghi nhật ký hoặc cấp quyền theo địa chỉ. Tắt nó là một lựa chọn định tuyến về đường về, không phải công tắc bảo mật đóng một lỗ vào. Một đường hầm chạy được khi bật dịch địa chỉ và hỏng ngay khi tắt thường thiếu đường về, chứ không phải thiếu quy tắc tường lửa.

Phương án định tuyến cần một đường về ở phía xa thay vì dịch địa chỉ. Cả hai lựa chọn đều không cung cấp quyền của tường lửa hay tài khoản ứng dụng, vì thế tắt giả mạo địa chỉ gần như không bao giờ sửa được một máy khách đường hầm không đến được đâu. Hãy xử lý chính sách IPv4 và IPv6 riêng, vì một thiết lập dịch địa chỉ không mô tả cả hai họ.

Chứng minh quyết định bằng một yêu cầu được phép và một bị từ chối

Gửi một yêu cầu đáng lẽ được phép và một yêu cầu đáng lẽ bị từ chối, rồi xác định điều khiển đã ra mỗi quyết định. Một trang tình cờ tải được không phải bằng chứng; bằng chứng là quy tắc đã khớp, trong chuỗi mà nó đã khớp. Việc từ chối quan trọng ngang với thành công, vì nó cho thấy chính sách đang làm gì đó thay vì mọi thứ đều được phép.

Hai lệnh cho bạn bằng chứng đó trên bản phát hành hiện tại. Bộ đếm trên quy tắc khớp sẽ nhích khi yêu cầu được chấp nhận, và nhật ký hiển thị việc bỏ nếu bạn đã bật ghi nhật ký cho quy tắc:

nft list chain inet fw4 forward_wan
logread -f | grep -i -E 'DROP|REJECT'

Hãy giữ một đường quản trị mà bạn vẫn dùng được trước khi đổi bất kỳ chính sách tường lửa nào, và theo quy trình kiểm tra cùng khôi phục của chủ sở hữu cấu hình. Một thay đổi khóa bạn ra ngoài bộ định tuyến không phải kết quả kiểm thử, mà là sự cố thứ hai. Ghi vùng và vai trò lưu lượng bên cạnh mỗi quan sát, để cặp kết quả giải thích chính sách thay vì mô tả một lần tải trang may mắn.

Bài viết liên quan