VPN을 통한 연결만 허용하고 모든 ipv6 트래픽을 차단하도록 nftables를 설정하세요.

VPN을 통한 연결만 허용하고 모든 ipv6 트래픽을 차단하도록 nftables를 설정하세요.

VPN을 통한 트래픽만 허용하는(그리고 ipv6 누출을 방지하기 위해 모든 ipv6 트래픽을 차단하는) 내 Archlinux 배포판에 nftables 방화벽을 설정하려고 합니다.

나는 한동안 그것을 사용해왔고 마침내 웹을 탐색할 수 있는 구성을 얻었습니다. 비록 지금까지 nftable에 대해 내가 알고 있는 바에 따르면 그렇게 할 수는 없었을 것입니다. 규칙 세트는 매우 짧으며 다음과 같습니다.

table inet filter {
    chain input {
            type filter hook input priority 0; policy drop;
            jump base_checks
            ip saddr VPN_IP_ADRESS udp sport openvpn accept
    }

    chain forward {
            type filter hook forward priority 0; policy drop;
    }

    chain output {
            type filter hook output priority 0; policy drop;
            ip daddr VPN_IP_ADRESS udp dport openvpn accept
            oifname "tun0" accept
    }

    chain base_checks {
            ct state { related, established} accept
            ct state invalid drop
    }
}

시행착오를 거쳐 길을 찾으려고 노력했고 그 안에는 다른 많은 규칙도 있지만 그게 전부입니다. 먼저 VPN 서버에 연결한 다음 웹을 탐색하면 됩니다. 아웃아웃 체인에서 마지막 규칙을 제거하면 더 이상 웹을 탐색할 수 없습니다.

나는 이것에 대해 완전히 처음이고 아무것도 알지 못하며 배우려고 노력하고 있습니다. 불행하게도 nftables에 대한 문서는 그다지 광범위하지 않아서 지금은 약간 정체되어 있습니다.

지금까지 내가 이해한 바에 따르면 이 설정은 VPN에 대한 연결을 허용해야 하지만 다른 수신 트래픽은 허용해서는 안 됩니다. 하지만 문제 없이 웹을 탐색할 수 있습니다.

왜 작동하는지 그리고 보다 완전한 설정을 위해 nftables 설정을 어떻게 진행해야 하는지 아는 사람이 있습니까?

답변1

state related들어오는 트래픽을 사용하고 허용할 수 있습니다 established. HTTP 트래픽은 요청을 보내는 클라이언트에 의해 시작되며 응답은 established출력 체인의 규칙에 따라 일치됩니다. 경로가 VPN을 통과한다고 가정하면 규칙은 초기 트래픽을 허용합니다 oif "tun0" accept.

관련 정보