두 인터페이스간에 전달되는 iptables


26

그래서 두 개의 무선 인터페이스가있는 Linux 상자가 있습니다. 하나는 스테이션이고 다른 하나는 AP입니다.

wlan0 (스테이션)-인터넷 연결에 연결

wlan1 (AP)-다른 클라이언트가 연결합니다.

wlan1에 연결된 클라이언트가 wlan0의 인터넷에 액세스 할 수 있기를 바랍니다. 커널에 브리징 지원이 없기 때문에 iptables 로이 작업을 수행하고 싶습니다 ...

iptables로 지금까지 시도했지만 작동하지 않습니다.

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

도움을 주셔서 감사합니다.


1
IPTABLES는 상태 저장 패킷 필터로 패킷을 허용 / 삭제 / 혼합합니다. 라우터 또는 브리지가 아닙니다. 명령은 트래픽을 허용하도록 방화벽을 조정하지만 실제로 전달하기 위해 아무 것도하지 않습니다.
— Zoredache

따라서 커널을 필요한 기능이있는 커널로 교체하십시오. 결국 "리눅스 박스"입니다.
— Michael Hampton

'경로'로 무엇을하려고합니까? 브리지 지원을 사용하여 커널을 재 구축하는 방법을 살펴 보지만 다른 옵션이 있는지 궁금합니다.
— broody

Route는 일단 활성화되면 어디로 갈지를 알려줍니다. Michael은 라우팅을 지원하기 위해 수행해야 할 작업에 대해 설명했습니다. 그런 다음 sysctl을 통해 켜야합니다.
— 마젤란

답변:


35

첫째, 개인 인터페이스에 연결된 호스트가 인터넷으로 나가도록하려면 인터페이스를 브리징 할 필요가 없으며 한 인터페이스에서 들어오는 패킷을 다른 인터페이스로 보내야합니다.

그렇게하려면 다음 작업 만하면됩니다.

  1. 리눅스 박스에서 전달을 활성화하십시오 :
  2. 특정 (또는 모든) 패킷이 라우터를 통과하도록 허용
  3. 누군가가 말했듯이 netfilter는 상태 비 저장 방화벽이므로 이미 설정된 연결에 대한 트래픽을 허용합니다.
  4. 인터넷으로 나가는 패킷의 소스 주소 변경
    에코 1> / proc / sys / net / ipv4 / ip_forward
    iptables-전진 -i wlan1 -o wlan0 -j 수락
    iptables-앞으로 -i wlan0 -o wlan1 -m 상태-상태 설정, 관련 \
             -j 수락
    iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

그렇게해야합니다.


아마도 당신은 아마 다음과 같은 의미 일 것입니다 : echo 1 >/proc/sys/net/ipv4/ip_forward첫 번째 줄
— Jason Tan

그게 다야 ... 그 줄의 마지막 부분에서 일어난 일을 모른다 ...
— Torian

리눅스 박스를 게이트웨이로 사용하도록 클라이언트를 설정해야한다고 생각합니다.
— Jason Tan

그리고 전달을 위해이 작업을 수행하려면 재부팅을 통해 지속 : '에코 "net.ipv4.ip_forward의 = 1">> /etc/sysctl.conf에'
— 제이슨 탄

1
@StudentsTea 예, iptables' FORWARD테이블이 전체적으로 허용되는 정책으로 설정되어 있지 않은 경우 가능합니다 . 그래도 여전히 nat테이블 규칙이 필요합니다 .
— 토마스 워드
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.