Tôi đang thiết lập TPROXY trên bộ định tuyến VyOS của mình để chuyển tiếp một số lưu lượng truy cập nhất định tới một proxy trong suốt cục bộ. Nó hoạt động khá tốt, cho đến khi tôi phát hiện ra rằng tất cả các quy tắc chuyển tiếp cổng DNAT của tôi không còn hoạt động nữa (thời gian chờ kết nối khi kết nối từ mạng bên ngoài).
Môi trường
- Bộ định tuyến:
10.0.0.1/24
(Proxy đang chạy trên 1234
cổng và thêm SO_MARK với 0xff
)
- Máy chủ nội bộ:
10.0.0.2/24
(Hải cảng 80
nên được đưa ra công chúng)
Quy tắc TPROXY
quy tắc ip thêm fwmark 1 bảng 100
tuyến ip thêm cục bộ 0.0.0.0/0 dev lo bảng 100
nft thêm bảng myproxy
nft thêm chuỗi ưu tiên định tuyến trước myproxy { loại ưu tiên định tuyến trước móc bộ lọc 0 \; }
nft thêm quy tắc định tuyến trước myproxy ip Daddr { 127.0.0.1/32, 224.0.0.0/4, 255.255.255.255/32 } trả về
nft thêm quy tắc định tuyến trước myproxy meta l4proto tcp ip Daddr 10.0.0.0/24 return
nft thêm quy tắc đánh dấu định tuyến trước myproxy 0xff trở lại
nft thêm quy tắc định tuyến trước myproxy meta l4proto { tcp, udp } đánh dấu đặt 1 tproxy thành 127.0.0.1:1234 chấp nhận
nft thêm đầu ra myproxy chuỗi { loại ưu tiên đầu ra hook route 0 \; }
nft thêm quy tắc đầu ra myproxy ip Daddr { 127.0.0.1/32, 224.0.0.0/4, 255.255.255.255/32 } trả lại
nft thêm quy tắc đầu ra myproxy meta l4proto tcp ip Daddr 10.0.0.0/24 trở lại
nft thêm quy tắc đánh dấu đầu ra myproxy 0xff trở lại
nft thêm quy tắc đầu ra myproxy meta l4proto { tcp, udp } đánh dấu được đặt 1 chấp nhận
nft thêm bộ lọc bảng
nft thêm chuyển hướng bộ lọc chuỗi { ưu tiên định tuyến trước móc bộ lọc loại -150 \; }
nft thêm bộ lọc quy tắc chuyển hướng ổ cắm meta l4proto tcp trong suốt 1 dấu meta được đặt 1 chấp nhận
Quy tắc DNAT
bảng danh sách $ nft nat
bảng ip nat {
chuỗi PREROUTING {
gõ nat hook prerouting ưu tiên dstnat; chính sách chấp nhận;
iifname "pppoe0" tcp dport { 8080 } gói truy cập 7 byte 400 dnat đến 10.0.0.2:80
}
}
Triệu chứng
Đang kết nối Bộ định tuyếnPublicIP:8080
sắp hết thời gian. Lý tưởng nhất là nó nên chuyển tiếp lưu lượng đến 10.0.0.2:80
.
Tôi đoán lưu lượng truy cập DNAT trong nước được chuyển tiếp nhầm tới proxy (thay vì máy chủ thực 10.0.0.2
), tuy nhiên tôi không thể tìm ra các quy tắc nft chính xác.
Cảm ơn trước!