![阻止用户访问互联网(某些网站除外)](https://linux22.com/image/968456/%E9%98%BB%E6%AD%A2%E7%94%A8%E6%88%B7%E8%AE%BF%E9%97%AE%E4%BA%92%E8%81%94%E7%BD%91%EF%BC%88%E6%9F%90%E4%BA%9B%E7%BD%91%E7%AB%99%E9%99%A4%E5%A4%96%EF%BC%89.png)
我正在尝试阻止特定用户接收来自白名单上特定网站以外的任何网站的流量。最简单的方法似乎是使用 iptables,但我无法使我的 iptables 设置正常工作 - 浏览器说它无法解析 DNS 地址。我正在运行 Ubuntu 12.10。
以下是我的 iptables 文件:
# Generated by iptables-save v1.4.12 on Sat Jul 13 07:41:12 2013
*filter
:INPUT ACCEPT [3137:3823422]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1877:121508]
-A INPUT -s [[SPECIFIC IP]] -j ACCEPT
-A INPUT -s tcp --dport 53 -j ACCEPT #
-A INPUT -p udp --dport 53 -j ACCEPT # THESE 3 LINES ARE AN ATTEMPT TO GET DNS TO WORK
-A INPUT -p tcp --dport 953 -j ACCEPT #
-A INPUT -m owner --uid-owner 1000 -j DROP # disable all other packets for that user
COMMIT
# Completed on Sat Jul 13 07:41:12 2013
该文件在启动时使用 加载sudo iptables-restore < /etc/iptables_rules
,可以正常工作。无需在任何地方使用 SSH。
直接的问题是该用户的 DNS 查找失败。我可能做错了什么,我不太了解 iptables。
谢谢大家的帮助!:)
答案1
像这样更改文件可以解决所有问题:
# Generated by iptables-save v1.4.12 on Sat Jul 13 07:41:12 2013
*filter
:INPUT ACCEPT [3137:3823422]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1877:121508]
-A OUTPUT -d [[SPECIFIC IP]] -j ACCEPT
-A OUTPUT -p tcp --destination-port 53 -j ACCEPT
-A OUTPUT -p udp --destination-port 53 -j ACCEPT
-A OUTPUT -p tcp --destination-port 953 -j ACCEPT
-A OUTPUT -m owner --uid-owner 1000 -j DROP
COMMIT
# Completed on Sat Jul 13 07:41:12 2013
感谢 gertvdijk 告诉我需要改变什么。