다음과 같은 iptables 규칙이 있습니다.
*nat
-A POSTROUTING -o wlan0 -j MASQUERADE
COMMIT
*filter
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i wlan1 -p tcp -m state --state NEW --dport 22 -j ACCEPT
-A INPUT -j DROP
COMMIT
wlan0은 공용 네트워크에 연결되어 있습니다.
wlan1은 개인 네트워크에 연결되어 있습니다.
개인 네트워크에서 라우터에 SSH를 허용합니다.
목표는 wlan1에 연결된 네트워크에서 발생하는 트래픽이 라우터에서 발생하는 것처럼 보이도록 하는 것입니다. 즉, MASQUERADE입니다.
공용 인터페이스에서 연결을 설정할 수 있는 것을 원하지 않습니다. 최종 INPUT 규칙은 라우터 자체로 들어오는 모든 연결을 삭제하는 것입니다.
그러나 INPUT 체인의 삭제 규칙은 wlan1에 연결된 네트워크에 바인딩되어야 하는 트래픽을 삭제하는 것으로 보입니다.
INPUT 체인에서 삭제 규칙을 제거하면 작동하는 것처럼 보이지만 그렇게 하면 라우터에 대한 연결이 허용됩니다.
고쳐 쓰다:
동일한 명백한 네트워크 구성은 Centos에서 잘 작동하지만 Raspbian에서는 전달이 없으며 INPUT 삭제 규칙이 계속 계산됩니다.
참고: 이 테스트 환경의 모든 체인에 대한 정책은 "수락"으로 설정되어 있으므로 이 경우 답변에서 "전달" 규칙을 수락할 필요가 없습니다.
답변1
wlan1
시스템이 트래픽을 으로 라우팅하려면 전달을 활성화해야 합니다 wlan0
. 이를 수행하기 위한 첫 번째 단계는 포워딩 마스터 스위치를 활성화하는 것입니다.
sysctl net.ipv4.ip_forward=1
(내구성을 유지하려면 에 추가하십시오 net.ipv4.ip_forward=1
. /etc/sysctl.conf
)
그런 다음 전달 가능한 트래픽에 어떤 일이 발생하는지 지시하는 iptables FORWARD 규칙이 필요합니다.
iptables -A FORWARD -i wlan1 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -j DROP