나는 다음 명령을 사용했습니다.여기:
# Allow loopback device (internal communication)
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
# Allow all local traffic.
sudo iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
sudo iptables -A OUTPUT -d 192.168.1.0/24 -j ACCEPT
# Set default policies to drop all communication unless specifically allowed
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT DROP
sudo iptables -P FORWARD DROP
이는 거의 모든 소스의 인터넷 트래픽을 성공적으로 차단하는 것으로 보이지만 Chromium(Pi 4 모델 B의 Raspbian Buster)을 통해 액세스되는 Google 서비스는 허용됩니다(예: youtube.com은 방해 없이 로드됩니다). 검색은 문제를 이해하는 데 실제로 도움이 되지 않았습니다. 제가 찾은 가장 가까운 결과는 다음과 같습니다.이 문제, 그러나 내가 대답할 수 있는 한, 도메인을 지정하는 규칙 필터는 패킷에 성공적으로 적용될 수 없으며, 내가 사용하는 규칙은 도메인을 전혀 지정하지 않는다는 것입니다. 도메인이나 브라우저에 상관없이 로컬과 루프백을 제외한 모든 패킷을 삭제해야 합니다. 그렇죠?
배경으로 이것은 NAS에 있으며 인터넷에 노출되는 것에 대해 편집증적입니다. OpenVPN을 통해 인터넷에 액세스하는 내 Pi에도 비슷한 규칙이 있으며, VPN 연결이 끊어지면 비슷한 동작을 관찰합니다. Chromium을 통해 이상하게 액세스되는 Google 서비스를 제외하고는 트래픽이 허용되지 않습니다. 가장 큰 문제는 NAS가 VPN을 제거하는 것에 대한 우려입니다.
sudo iptables-save
편집: YouTube가 브라우저에 로드되고 규칙이 적용될 때 각 요청에 대한 출력을 주석에 추가합니다.
# Generated by xtables-save v1.8.2 on Mon Apr 27 13:24:52 2020
*filter
:INPUT DROP [7:2304]
:FORWARD DROP [0:0]
:OUTPUT DROP [482:36138]
-A INPUT -i lo -j ACCEPT
-A INPUT -s 192.168.1.0/24 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -d 192.168.1.0/24 -j ACCEPT
COMMIT
# Completed on Mon Apr 27 13:24:52 2020
나는 네트워킹에서 해당 용어의 정확한 정의에 익숙하지 않지만 프록시가 있다고 믿지 않습니다. Google에서는 라우터를 모뎀(중개 서버가 아님)에서 ISP에 연결한다고 표시합니다. 관련이 있나요?
또한 삭제된 댓글에 대한 응답으로 내 ISP가 IPv6를 지원하는 것으로 보입니다.
편집 2: 출력 ping -c6 2001:67c:2564:a119::77
:
PING 2001:67c:2564:a119::77(2001:67c:2564:a119::77) 56 data bytes
64 bytes from 2001:67c:2564:a119::77: icmp_seq=1 ttl=49 time=132 ms
64 bytes from 2001:67c:2564:a119::77: icmp_seq=2 ttl=49 time=130 ms
64 bytes from 2001:67c:2564:a119::77: icmp_seq=3 ttl=49 time=127 ms
64 bytes from 2001:67c:2564:a119::77: icmp_seq=4 ttl=49 time=147 ms
64 bytes from 2001:67c:2564:a119::77: icmp_seq=5 ttl=49 time=129 ms
64 bytes from 2001:67c:2564:a119::77: icmp_seq=6 ttl=49 time=128 ms
--- 2001:67c:2564:a119::77 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 12ms
rtt min/avg/max/mdev = 126.981/132.157/147.250/6.932 ms
편집 3: 지금까지 최종 편집. 솔루션의 제안에 따라 얻은 작업 규칙을 첨부하고 싶었습니다.
# Allow loopback device (internal communication)
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
sudo ip6tables -A INPUT -i lo -j ACCEPT
sudo ip6tables -A OUTPUT -o lo -j ACCEPT
# Allow all local traffic.
sudo iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
sudo iptables -A OUTPUT -d 192.168.1.0/24 -j ACCEPT
# Allow VPN establishment
# Only 2 ports open, 1 for DNS and 1 for VPN
# If establishing through an IP and not a name, the ones with port 53 can be removed
# Port 1198 may be different depending on the VPN
sudo iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
sudo iptables -A INPUT -p udp --sport 53 -j ACCEPT
sudo iptables -A OUTPUT -p udp --dport 1198 -j ACCEPT
sudo iptables -A INPUT -p udp --sport 1198 -j ACCEPT
# Accept all TUN connections (tun = VPN tunnel)
sudo iptables -A OUTPUT -o tun+ -j ACCEPT
sudo iptables -A INPUT -i tun+ -j ACCEPT
# Set default policies to drop all communication unless specifically allowed
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT DROP
sudo iptables -P FORWARD DROP
sudo ip6tables -P INPUT DROP
sudo ip6tables -P OUTPUT DROP
sudo ip6tables -P FORWARD DROP
여기에는 ip6tables에 대한 로컬 트래픽 규칙이 없지만 로컬 네트워크가 IPv4 대신 IPv6을 실행하는 경우 필요할 수 있습니다. 이 경우 로컬 트래픽 규칙에서 IP 주소를 변경 iptables
하고 교체하면 됩니다.ip6tables
답변1
핑 결과는 귀하의 컴퓨터가 IPv6를 사용하여 외부 세계와 통신할 수 있음을 나타냅니다. 따라서 Chromium이 IPv4 연결을 얻을 수 없으면 IPv6을 사용합니다. 이런 일이 발생하지 않도록 하려면 ip6tables
.