通过网关无缝过滤所有流量

通过网关无缝过滤所有流量

我想过滤往返于我计算机的所有流量。为此,我开发了一小段代码,python它使用NetFilterQueue( NFQueue) 拦截数据包并选择是否必须丢弃这些数据包。非常简单。

我想在 NanoPi R2S 上运行此代码,这是一个带有 2 个以太网端口的 Linux 设备。一个端口将插入我的家用路由器,而第二个端口将连接到我的电脑。我不想更改我的电脑的 IP,因为它需要从我网络上的其他设备访问。

┌──────────────┐    ┌───────────────┐    ┌───────────────┐
│              │    │               │    │               │
│  Home router │◄──►│  2 ethernets  │◄──►│  My computer  │
│              │eth0│    Gateway    │eth1│               │
└──────────────┘    └───────────────┘    └───────────────┘

我想要做的是添加所需的iptables规则来过滤所有数据包。

我已经应用了这些规则,但我不确定它们是否正确。计划是无缝转发所有数据包,就像网关不存在一样。

    # Enable IP forwarding
    echo '1' > /proc/sys/net/ipv4/ip_forward
    echo '1' > /proc/sys/net/ipv6/conf/all/forwarding

    # Add iptables rules
    iptables -F # Delete all previous rules
    iptables -X # Delete user-defined chains
    iptables -F -t nat # Flush NAT table
    iptables -X -t nat # Delete user-defined chains in NAT table
    iptables -A INPUT -i lo -j ACCEPT # Allow loopback traffic
    iptables -A OUTPUT -o lo -j ACCEPT # Allow loopback traffic
    iptables -A INPUT -i eth0 -j NFQUEUE --queue-num 1 # Direct traffic to gateway device
    iptables -A INPUT -i eth1 -j NFQUEUE --queue-num 1 # Direct traffic to gateway device
    iptables -A OUTPUT -o eth0 -j NFQUEUE --queue-num 1 # Direct traffic from gateway device
    iptables -A OUTPUT -o eth1 -j NFQUEUE --queue-num 1 # Direct traffic from gateway device
    iptables -A FORWARD -i eth0 -o eth1 -j NFQUEUE --queue-num 1 # Traffic from left to right through gateway
    iptables -A FORWARD -i eth1 -o eth0 -j NFQUEUE --queue-num 1 #Traffic from right to left through gateway
    ip6tables -P INPUT DROP # Disallow all IPv6 traffic
    ip6tables -P OUTPUT DROP # Disallow all IPv6 traffic
    ip6tables -P FORWARD DROP # Disallow all IPv6 traffic
    iptables-save > /etc/iptables/rules.v4 # Auto-reload on reboot
    ip6tables-save > /etc/iptables/rules.v6 # Auto-reload on reboot

我不确定是否需要为家庭路由器设置新路由。也许是这样的:

ip route add default via <router_ip> dev eth0

您能否告诉我这种行为是否可行以及这些规则是否足以过滤我的整个流量?

相关内容