Điểm:0

iptables / LXD - Mangle iptable - Định tuyến cổng đi xa (đến cổng máy chủ ở xa 21) qua eth0

lá cờ ru

Để tóm tắt bối cảnh, đó là một bộ chứa lxd luôn kết nối dưới dạng ứng dụng khách OpenVpn.

{wan} <-> {192.168.x.x <-> iptables <-> máy chủ cầu lxd 10.0.3.1} <-> {lxd vùng chứa 10.0.3.3 | openvpn <-> iptables}

Trong thùng chứa có

  • eth0 (ip 10.0.3.3) là giao diện máy khách trên cầu lxd
  • tun0 kết nối dưới dạng máy khách với máy chủ OpenVpn

Máy chủ lưu trữ lxd (10.0.3.1) chuyển tiếp lưu lượng truy cập 10.0.3.3 sang mạng bên ngoài, iptables luôn chấp nhận các kết nối gửi đi.

Máy chủ và máy khách lxd đều có iptables.

Tôi đã thực hiện định tuyến trên 10.0.3.3 nhưng đối với cổng đến (ví dụ: cổng http đến 10.0.3.3 và phản hồi trên eth0, không phải tun0).

Vì vậy, tôi có một bảng định tuyến "novpn" với số fwmark.

Vấn đề của tôi bây giờ là tôi đang cố gắng làm điều ngược lại. Các yêu cầu gửi đi đến cổng 21 trên bất kỳ máy chủ từ xa nào đều phải đi qua eth0 (bảng "novpn").

Tôi đã theo dõi một số bài đăng trên stackoverflow và tích hợp bài đăng này vào iptables của ứng dụng khách 10.0.3.3. Tôi cảm thấy như nó chỉ là:

quy tắc ip thêm bảng fwmark 66 novpn
tuyến ip thêm mặc định qua bảng 10.0.3.1 dev eth0 novpn

iptables -t mangle -A PREROUTING -p tcp --dport 21 -j MARK --set-mark 66
iptables -t mangle -A OUTPUT -p tcp --dport 21 -j MARK --set-mark 66

Trên iptables của 10.0.3.1, tôi có một quy tắc chấp nhận chuyển tiếp từ các kết nối đã được thiết lập và đã biết. Vì vậy, cầu nên tuân theo và tôi không nghĩ bất kỳ quy tắc nào khác là cần thiết?

Nhưng nó không hoạt động, khi tôi nhìn vào tcpdump trên máy chủ (10.0.3.1) tôi thấy rằng các gói được gửi bằng IP openvpn chứ không phải 10.0.3.3. Dường như cũng có vấn đề với tổng kiểm tra của các gói đã gửi -> cksum 0x1983 (không chính xác -> 0xe8ec).

Thật kỳ lạ, khi tôi thực hiện tcpdump trên bảng điều khiển của máy khách lxd (10.0.3.3), tcpdump không hiển thị bất kỳ thứ gì và ở đó tôi không còn hiểu gì nữa.

Tôi tự hỏi liệu lxd có được ưu tiên hơn (có thể là thứ gì đó giống như thiết bị proxy, v.v.) hơn iptables (và tcpdump??), nhưng điều đó có vẻ rất lạ đối với tôi.

Nếu nó có thể hữu ích, tôi có một quy tắc "quy tắc ip thêm vào bảng xxx.xxx.xxx.xxx novpn". Vì vậy, bất kỳ kết nối nào với ip này đều đi qua eth0 và, đây thực sự là trường hợp, có yêu cầu chính xác trong tcpdump.

Ai có thể giúp tôi.

A.B avatar
lá cờ cl
A.B
Không thành công vì ngăn xếp định tuyến đã chọn địa chỉ IP nguồn trước khi iptables có thể đặt dấu để định tuyến lại: IP nguồn không thay đổi. Thông thường, có một phương pháp hay hơn cho việc này: `ip rule add... ipproto tcp dport 21...`. Nhưng vì nó là FTP và sử dụng kênh dữ liệu *không phải* trên cổng 21, tôi cho rằng sau này nó sẽ bị lỗi khi truyền tệp (hoặc chỉ liệt kê một thư mục) nên tôi sẽ không đưa ra câu trả lời. Xem Q/A này trên UL SE nơi tôi sử dụng phương pháp này: https://unix.stackexchange.com/questions/581419/routing-port-traffic-over-specific-interface.
n.karlen avatar
lá cờ ru
Cảm ơn bạn @A.B, điều đó đã trả lời câu hỏi của tôi, bởi vì đó chủ yếu là vấn đề kỹ thuật mà tôi quan tâm, không nhất thiết phải là một cổng/giao thức cụ thể. Tôi không biết về các quy tắc ip mới này, nó hợp lý và thiết thực hơn nhiều so với việc sử dụng iptables.

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