두 인터페이스간에 전달되는 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.