阻止除一台服务器之外的互联网访问?

阻止除一台服务器之外的互联网访问?

我想查看应用程序的 HTTP 代理支持是否正常工作。为了检查这一点,我在 Mac 笔记本电脑上安装了 Ubuntu VirtualBox,并且我想配置虚拟机,使其无法访问除我的测试代理服务器之外的任何其他互联网主机。

我该如何配置虚拟机?从我读到的内容来看,“route add ...” 应该可以做到这一点,但我不确定如何使用它。

请指教!谢谢!

答案1

您正在寻找 iptables 和防火墙规则。可以这样工作

iptables -A OUTPUT -j DROP
iptables -I OUTPUT -d 192.168.0.1 -j ACCEPT

但请记住,这将阻止所有其他流量,因此您需要具有对机器的控制台访问权限。并用代理 IP 替换 192.168.0.1。

如果代理服务器也是网关,您还可以将端口添加到第二个 iptables 语句 pe -p 3128,以便 squid 代理服务器只能连接到该端口。第二,您还必须记住,DNS 请求也将被阻止,要启用它们,您需要添加第二条规则来启用 D​​NS 请求

iptables -A OUTPUT -j DROP
iptables -I OUTPUT -d 192.168.0.1 -p 3128 -j ACCEPT
iptables -I OUTPUT -d 192.168.0.1 -p 53 -j ACCEPT

答案2

您可以做以下事情:

  • 设置环境变量,假设您只谈论 HTTP 代理

http_proxy="http://用户名:密码@主机:端口" ; 导出 http_proxy

  • 使用路由将所有流量路由到 IP 级别的某个主机

路由添加默认网关 12.12.12.12

其中 12.12.12.12 应该替换为运行代理服务器的网关 IP 地址。

  • 丢弃到其他主机的所有流量,但使用 iptables 的数据库

相关内容