iptables chuyển tiếp giữa hai giao diện


26

Vì vậy, tôi có một hộp linux với hai giao diện không dây, một là trạm và một là AP.

wlan0 (trạm) - Đã kết nối với kết nối internet

wlan1 (AP) - Các máy khách khác kết nối với nó.

Tôi muốn các khách hàng được kết nối với wlan1 có thể truy cập internet trên wlan0. Và tôi muốn làm điều này với iptables vì ​​kernel của tôi không có hỗ trợ bắc cầu ...

Đây là những gì tôi đã thử cho đến nay với iptables nhưng nó không hoạt động:

iptables -A FORWARD -i wlan0 -o wlan1 -j ACCEPT
iptables -A FORWARD -i wlan1 -o wlan0 -j ACCEPT

Tôi đánh giá cao sự giúp đỡ.


1
IPTABLES là một bộ lọc gói trạng thái, nó cho phép / giọt / gói dữ liệu. Nó không phải là một bộ định tuyến, hoặc cầu. Các lệnh của bạn điều chỉnh tường lửa để cho phép lưu lượng truy cập, nhưng chúng không làm gì để thực sự chuyển tiếp nó.
Zoredache

Vì vậy, thay thế kernel bằng một trong đó có các tính năng bạn cần. Đó là "một hộp linux", sau tất cả.
Michael Hampton

Tôi có thể đạt được những gì tôi đang cố gắng thực hiện với 'tuyến đường' không? Tôi cũng sẽ xem xét việc xây dựng lại kernel với hỗ trợ cầu nhưng tự hỏi liệu có các tùy chọn khác không.
broody

Tuyến cho nó biết nơi để đi một khi nó được kích hoạt. Michael nói với bạn những gì bạn cần làm để hỗ trợ định tuyến. THÌ bạn cần bật nó qua sysctl.
Magellan

Câu trả lời:


35

Trước tiên, để cho phép các máy chủ kết nối trên giao diện riêng của bạn truy cập internet, bạn không cần bắc cầu cho các giao diện, bạn cần định tuyến các gói đến trên một giao diện, đến giao diện khác, nơi chúng đi ra ngoài tự nhiên.

Để làm điều đó, bạn chỉ cần:

  1. Cho phép chuyển tiếp trên hộp linux của bạn:
  2. Cho phép các gói cụ thể (hoặc tất cả của nó) đi qua bộ định tuyến của bạn
  3. Như ai đó đã nói, vì netfilter là một tường lửa không trạng thái, cho phép lưu lượng truy cập cho các kết nối đã được thiết lập
  4. Thay đổi địa chỉ nguồn trên các gói đi ra internet
    tiếng vang 1> / Proc / sys / net / ipv4 / ip_forward
    iptables -A FORWARD -i wlan1 -o wlan0 -j CHẤP NHẬN
    iptables -A FORWARD -i wlan0 -o wlan1 -m state --state THÀNH LẬP, LIÊN QUAN \
             -j CHẤP NHẬN
    iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

Nên làm vậy.


Tôi nghĩ rằng bạn có thể có nghĩa là: echo 1 >/proc/sys/net/ipv4/ip_forwardcho dòng đầu tiên
Jason Tan

đó là ... không biết điều gì đã xảy ra với phần cuối của dòng đó ... đã sửa.
Torian

Tôi nghĩ bạn cũng phải đặt các máy khách sử dụng hộp linux làm cổng.
Jason Tan

Và để chuyển tiếp duy trì thông qua khởi động lại, bạn muốn thực hiện việc này: 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf'
Jason Tan

1
@StudentsTea Có, bạn làm thế, trừ khi bảng iptables' của bạn FORWARDđược đặt thành chính sách chấp nhận toàn cầu. Dù sao, bạn vẫn cần các natquy tắc bảng.
Thomas Ward
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.