首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Linux中仅通过IPTABLES访问特定的网站?

问如何在Linux中仅通过IPTABLES访问特定的网站?
EN

Server Fault用户
提问于 2014-03-27 06:03:21
回答 1查看 3.8K关注 0票数 -1

我只想- www.thinkwell.com网站被访问,并希望禁用所有其他网站访问。我用的是软呢帽芯19。

下面是一些步骤,我试过这样做,但结果却是没有网站访问权限。

首先,我得到了thinkwell.com的IP

代码语言:javascript
复制
$ host www.thinkwell.com
www.thinkwell.com is an alias for thinkwell.com.
thinkwell.com has address 207.207.4.196
thinkwell.com mail is handled by 30 aspmx4.googlemail.com.
thinkwell.com mail is handled by 20 alt2.aspmx.l.google.com.
thinkwell.com mail is handled by 30 aspmx3.googlemail.com.
thinkwell.com mail is handled by 30 aspmx5.googlemail.com.
thinkwell.com mail is handled by 20 alt1.aspmx.l.google.com.
thinkwell.com mail is handled by 30 aspmx2.googlemail.com.
thinkwell.com mail is handled by 10 aspmx.l.google.com.

下面是我试过的规则。

代码语言:javascript
复制
#iptables -A OUTPUT -p all --destination 207.207.4.196  -j ACCEPT
#iptables -A OUTPUT -p all -j REJECT
#iptables-save

然而,结果是我无法访问任何网站。请告诉我这里出了什么问题?我只接受IP 207.207.4.196的目标输出。然而,我拒绝其他IP,我在家里使用路由器。这跟它有关吗?

EN

回答 1

Server Fault用户

发布于 2014-03-27 06:59:54

也许有更好的方法可以使用像squid这样的代理来实现这一点,但是如果您要通过iptable来完成它,那么请考虑一下您正在做什么。

若要允许访问一个网站并阻止所有其他网站,则需要允许该网站的传出连接。

在正常情况下,您将与端口80 (http)和/或端口443 (https)上的网站联系,因此您需要允许这些目的端口仅用于网站的IP地址。对于所有其他IP地址,应该删除到目标端口80或443的连接。

您只想在输出中阻塞目标端口80和443,因为如果不这样做,则会发现其他东西会中断。

您的输出规则可能是

  • 如果IP正确且目标端口为80,则允许连接到站点。
  • 如果IP正确且目标端口为443,则允许连接到站点。
  • 如果目标端口为80,则拒绝连接
  • 如果目标端口为443,则拒绝连接。

如果需要,可以将多个目标端口组合成一个规则。

注意,规则的顺序很重要,因为iptables将尽早停止处理数据包。

您可能应该花一些时间阅读和理解文档。

票数 3
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/584831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档