eth0
내 우분투 머신의 모든 트래픽이 로컬 네트워크( ) 또는 내 VPN( )을 오가는 것을 제한하고 싶습니다 tun0
. 로컬 네트워크에서 라우터를 연결할 수 있어야 하지만 VPN을 사용하지 않고 로컬 네트워크를 벗어날 수는 없습니다.
나는 iptables에 대한 경험이 없고 몇 가지 방법을 찾을 수 없었기 때문에 ufw를 시도했지만 성공하지 못했습니다.
더 가까워지는 방법에 대한 힌트나 코드 조각을 알려주셔서 감사합니다!
답변1
DROP의 기본 작업을 사용하여 필터 테이블의 INPUT 체인에서 작업한 다음 각 인터페이스에서 들어오는 패킷에 대한 ACCEPT 규칙(-i)을 설정하려고 합니다. 보안을 강화하기 위해 소스 호스트의 서브넷을 적용할 수도 있지만 아래 규칙이면 충분합니다.
iptables -t filter -p INPUT DROP
iptables -t filter -A INPUT -i eth0 -j ACCEPT
iptables -t filter -A INPUT -i tun0 -j ACCEPT
iptables -t filter -A INPUT -i lo -j ACCEPT
호스트에서 나가는 트래픽에도 동일한 작업을 적용하려면 다음을 수행하세요.
iptables -t filter -p OUTPUT DROP
iptables -t filter -A OUTPUT -o eth0 -j ACCEPT
iptables -t filter -A OUTPUT -o tun0 -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
하지만 이렇게 하면 실제로 다른 인터페이스가 없을 수도 있습니다. 또한 lo
루프백 인터페이스이기 때문에 거기에 있습니다. 이러한 규칙이 없으면 루프백은 더 이상 작동하지 않습니다.
호스트가 라우터인 경우 이러한 규칙은 라우팅되는 트래픽에 적용되지 않습니다(스스로 생성되거나 라우터를 통하지 않고 목적지로 향하는 트래픽에만 적용됨).