Yêu cầu trả lời đúng cổng


1

Tôi đã có một kịch bản khá đơn giản. Thật không may, tôi không tìm thấy câu trả lời phù hợp với vấn đề này. Tôi có hai bộ định tuyến linux (= gateway) cho các mạng WAN khác nhau (192.168.0,70 và 192.168.0.80). Cả hai đều chuyển tiếp cổng 50000 đến máy chủ linux 192.168.0.60. Máy chủ chỉ có một giao diện với cổng mặc định 192.168.0,70. Không có cấu hình bổ sung, bạn có hành vi này:

yêu cầu bao gồm hơn 192.168.0,70 - & gt; phản hồi làm việc (beacuse của cổng mặc định)

yêu cầu bao gồm hơn 192.168.0.80 - & gt; không hoạt động vì phản hồi mất 192.168.0,70

Làm cách nào tôi có thể quản lý các yêu cầu qua 192.168.0.80 được gửi lại qua 192.168.0.80?


Làm thế nào tất cả chúng được kết nối?
user193661

Câu trả lời:


0

Chúng ta sẽ phải đánh dấu các kết nối MỚI bằng một điểm đánh dấu, sau đó phân biệt các gói đi trên cơ sở của điểm đánh dấu và sử dụng một trong hai bảng định tuyến để định tuyến chúng đến cổng thích hợp. Có thể bạn phải tải mô-đun CONNTRACK,

          modprobe ip_conntrack

Chúng ta hãy gọi MAC70 là địa chỉ MAC của gateway 192.168.0,70 và MAC80 là địa chỉ MAC của 192.168.0.80. Sau đó

       iptables -A INPUT -m state --state NEW -m mac --mac-source MAC70 -p tcp --dport 50000 -j CONNMARK --set-mark 1
       iptables -A INPUT -m state --state NEW -m mac --mac-source MAC80 -p tcp --dport 50000 -j CONNMARK --set-mark 2

Hai quy tắc này đánh dấu các kết nối mới, kết nối (đối với giao thức TCP, sửa đổi nếu bạn cần) bằng hai điểm đánh dấu đơn giản. Điểm đánh dấu dành cho toàn bộ kết nối, I E. tất cả các gói sau thuộc loại THÀNH LẬP, LIÊN QUAN thuộc về gói ban đầu này sẽ có cùng dấu.

Việc phân biệt chỉ có thể được thực hiện trên cơ sở địa chỉ MAC của cổng, bởi vì địa chỉ IP nguồn của mỗi gói là của máy khách bắt đầu kết nối, không phải cái cổng đó. Do đó, điều này chỉ áp dụng cho các kết nối ethernet, vì các khung wifi không mang địa chỉ MAC.

Hiện nay

       ip rule add fwmark 1 table router70
       ip rule add fwmark 2 table router80

hai lệnh này xác định bảng định tuyến (của hai) sẽ sử dụng, tùy thuộc vào dấu kết nối / gói.

Bây giờ chúng tôi thiết lập hai bảng định tuyến:

        echo 200 router70 >> /etc/iproute2/rt_tables
        echo 201 router80 >> /etc/iproute2/rt_tables
        ip route add 192.168.0.0/24 dev eth0 table router70
        ip route add 192.168.0.0/24 dev eth0 table router80
        ip route add default via 192.168.0.70 table router70
        ip route add default via 192.168.0.80 table router80

Điều này giả định rằng ethernet ethernet của bạn được gọi là eth0, nếu không thì thay đổi tương ứng. Định tuyến cho tất cả các cổng và / hoặc giao thức khác vẫn là giao thức bạn đã có, bất kể đó là gì.

Bạn xong việc rồi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.