iptables는 VPN이 다시 연결되는 것을 방지합니다

iptables는 VPN이 다시 연결되는 것을 방지합니다

VPN 액세스를 위해 제안한 솔루션에 문제가 있습니다.

이것이 내가 원하는거야:

  • 홍수로 인한 모든 트래픽은 항상 VPN을 통과합니다.
  • VPN 연결이 끊어지면 Deluge의 인터넷 연결이 끊어집니다.
  • VPN 연결이 끊어져도 SSH 및 씬 클라이언트를 통해 로컬로 데몬에 계속 액세스할 수 있습니다.
  • VPN이 다시 연결되면 대홍수가 연결을 다시 설정하고 싶습니다.

현재 가지고 있는 iptables는 다음과 같습니다.

sudo iptables -A OUTPUT -m owner --gid-owner pi -o lo -j ACCEPT
sudo iptables -A OUTPUT -m owner --gid-owner pi -d 10.0.0.0/16 \! -o tun0 -j ACCEPT
sudo iptables -A OUTPUT -m owner --gid-owner pi  \! -o tun0 -j REJECT

이런 종류의 작품입니다. 몇 가지 문제가 있습니다.

  • VPN 연결이 끊어진 후 두 번째 규칙으로 인해 다시 연결할 수 없습니다.

몇 가지 조사 결과, 프로세스/애플리케이션을 기반으로 규칙을 적용하는 기능이 iptables에 없는 것으로 보입니다. 규칙은 gid 또는 uid로만 적용할 수 있습니다. 그렇죠?

그렇다면 유일한 해결책은 다른 사용자로 홍수를 실행한 다음 iptable 규칙에서 해당 특정 사용자를 대상으로 삼는 것이라고 생각하는 것이 맞습니까? 이렇게 하면 VPN(현재 홍수와 동일한 사용자가 실행 중)을 다시 연결할 수 있습니다.

추신. 내 현재 iptables에 대한 리뷰를 작성해 주시면 감사하겠습니다!

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

답변1

Netfilter 규칙의 순서가 잘못되었습니다. 세 번째 규칙은 두 번째 규칙의 특별한 경우이기 때문에 적중되지 않습니다.

openvpn일반적으로 인터페이스 및 라우팅을 설정하려면 슈퍼유저 권한이 필요하므로 전송된 패킷은 루트에 속합니다. 따라서 사용자별 규칙은 일치하지 않아야 합니다.

이를 사용하여 tcpdump새로운 OpenVPN 연결을 위한 패킷이 시스템을 떠나는지 확인할 수 있습니다. 그렇지 않은 경우 Netfilter 대상 TRACE를 사용하여 어떤 일이 일어나는지 확인할 수 있습니다.

관련 정보