라우팅 장치의 iptable 이해

라우팅 장치의 iptable 이해

그래서 저는 stunnel, OpenVPN 및 많은 온라인 기사(주로 다음 기사의 기사)를 사용하여 VPN 라우터 역할을 하도록 Raspberry Pi를 구성했습니다.제이든 추아) 성공적으로 생성할 수 있지만 해당 주제에 대한 온라인 도움말을 읽었음에도 불구하고 iptables 부분(아래 설명)을 완전히 이해하지 못합니다.

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -A FORWARD -i wlan0 -j ACCEPT
iptables -A FORWARD -i tun0 -o wlan1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan1 -o tun0 -j ACCEPT

누구든지 나에게 각 줄을 설명해 주시겠습니까? 간단할 수도 있다는 건 알지만 솔직히 이것이 왜 작동하는지 알 수 없습니다 =P

미리 감사드립니다 =)

답변1

먼저 IP 포워딩을 정의해야 합니다. 나는 아주 깊이 설명하지는 않겠지만(저도 잘 모릅니다) 기본적으로 이 맥락에서 알아야 할 것은 이 호스트를 통해 한 호스트에서 다른 호스트로의 패킷 흐름을 의미한다는 것입니다.

-A FORWARD ... -j ACCEPT규칙/명령 중 어느 것도 필요하지 않거나 -P FORWARD DROP유사하지 않은 한(즉, 전달되어야 하는 패킷을 삭제하는 경우) 필요 하지 않다는 점을 언급해야 합니다 . 규칙은 전달을 발생시키지 않지만 기본값이 "ACCEPT"가 아닌 경우에만 예외를 만듭니다. (sysctl을 사용하여 전달을 "활성화"합니다.)

이제 규칙을 살펴보겠습니다.

iptables -A FORWARD -i wlan0 -j ACCEPT

이는 wlan0에서 들어오는 패킷이 (이 호스트의 인터페이스를 통해 다른 네트워크로) 전달되도록 허용한다는 의미입니다.

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

이는 wlan1에서 들어오는 패킷이 tun0으로 전달되도록 허용한다는 의미입니다. (패킷이 "전달"로 간주되지 않으므로 tun0 자체의 주소에 도달하는 데는 이것이 필요하지 않습니다.)

iptables -A FORWARD -i tun0 -o wlan1 -m state --state RELATED,ESTABLISHED

이는 관련되거나 설정된 연결이 있는 경우에만 tun0에서 들어오는 패킷이 wlan1로 전달되도록 허용하고 확장/모듈을 확인하는 것을 의미합니다 (대신 스위치를 사용하는 에서는 state사용되지 않음 ). 이전 규칙과 함께 기본적으로 이는 연결이 tun0의 패킷에 의해 시작되지 않는 한 tun0과 wlan1 간의 전달을 허용한다는 의미입니다.conntrack--ctstate

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

이는 기본적으로 tun0에서 나가는 패킷의 소스 주소가 tun0으로 변경된다는 의미입니다. 이것이 완료되지 않으면 다음 라우터는 원래 소스 주소에 도달하기 위해 응답에 대한 반환 경로가 필요합니다. (즉, 원래 소스 주소에 도달하려면 이 호스트가 게이트웨이여야 합니다). 이는 NAT(오버로딩)/PAT라고도 합니다. tun0을 일반적인 소비자급 라우터의 WAN 포트/인터페이스처럼 작동시키는 것으로 생각하십시오.

답변2

이를 이해하려면 라우팅의 원리를 이해해야 합니다. 하지만 이 답변으로는 책을 쓸 수 없으므로 짧고 간단하게 답변하겠습니다.

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

이 규칙은 기본적으로 패키지를 가져와 적용됩니다.NAT, 그러나 이 패키지를 라우팅하는 방법이 결정된 후에 이루어집니다. 에 적용되는 이유입니다 POSTROUTING. 그런 다음 패키지를 이라는 터널로 다시 보냅니다 tun0. 이것이 VPN 연결입니다. 또한 규칙은 장치의 IP를 모르기 때문에 가장 무도회를 적용합니다. 이 명령이 없으면 연결하는 모든 장치에 대해 이 명령을 사용해야 합니다. 따라서 이것을 일종의 와일드카드로 볼 수 있습니다.

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

이 줄은 인터페이스로 전달되는 모든 트래픽을 허용한다는 의미입니다 wlan0. 이 가이드에서는 가 기본 인터넷 연결로 사용된다고 가정하므로 wlan0이것이 라우터와 VPN 터널 사이의 주요 경로입니다. 이렇게 하면 Pi가 이 인터페이스에서 패키지를 수락하고 다음을 제공합니다.내부 네트워크에 액세스. 여기서 두 번째 줄은 기본적으로 패키지로 돌아가는 길입니다. 파이에서 다시 터널로 들어갑니다.

iptables -A FORWARD -i tun0 -o wlan1 -m state --state RELATED,ESTABLISHED -j ACCEPT

이 라인은 터널에서 tun0인터페이스로 가는 트래픽을 허용 wlan0하지만 연결이 설정된 경우에만 가능합니다.확립된이전에.

간단히 말해서 이러한 규칙은 VPN 터널에서 들어오는 패키지가 나머지 개인 네트워크로 흐르고 다시 돌아오는 것을 허용합니다.

관련 정보