OpenVPN용 Linux IP 전달 - 올바른 방화벽 설정?

OpenVPN용 Linux IP 전달 - 올바른 방화벽 설정?

Linux 시스템에서 OpenVPN을 실행하고 있습니다. VPN 서버에는 공용 IP 주소(xxxx)가 있고 VPN 클라이언트에는 10.8.0.0\24의 "tun" 장치에 주소가 할당됩니다. 공용 IP 주소에 10.8.0.0\24를 NAT로 가장하는 IPTables 규칙이 있습니다.

VPN 서버를 실행하려면 IP 전달을 활성화해야 했습니다(그래서 net.ipv4.conf.default.forwarding=1로 설정했습니다).

... 즉, OpenVPN 튜토리얼에서 설명하는 것과 정확히 일치하며, 어떤 멋진 트릭도 사용하지 않습니다.

모두 작동하지만 전달 활성화 부분이 걱정됩니다. 나생각하다이제 기계는 모든 IP 주소에서 임의의 IP 주소로 패킷을 전달하는데 이는 적합하지 않은 것 같습니다. 공개적으로 액세스 가능한 IP가 있기 때문에 이는 특히 나쁩니다.

원하지 않는 전달 동작을 제한하기 위한 방화벽 규칙 제안이 있습니까? 나는 어떤 대답이라도 FORWARD 체인에 있는 하나 이상의 IPTables 규칙이 될 것이라고 생각하지만 이것이 내가 막힌 곳입니다.

감사해요!

답변1

테이블 전달에 이러한 규칙을 사용하면 문제가 없습니다.

-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -j ACCEPT
-A FORWARD -j REJECT

규칙을 /etc/sysconfig/iptables 파일에 넣고 방화벽을 다시 시작할 수 있습니다. 명령줄 시험을 먼저 수행하려면

 iptables -F 

트래픽 전달에 대한 기본 거부를 제거하고 위의 세 가지 규칙 각각 앞에 'iptables'를 추가합니다.

답변2

다음은 openvpn 게이트웨이에 설정한 것의 일부입니다.

iptables -A FORWARD -i tun0 -o tun0 -j ACCEPT # vpn to vpn
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT # vpn to ethernet
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT # ethernet to vpn

이는 단지 하위 집합일 뿐이라는 점에 유의하세요. 나머지 규칙은 표준 NAT 작업을 수행합니다.

관련 정보