为了阻止公司网络上的个人电子邮件,我阻止FORWARD
了mail.google.com
和mail.live.com
。以下是如何iptables
解析这些地址:
$ sudo iptables -L
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Mail-Forward-Block all -- anywhere anywhere
Chain Mail-Forward-Block (2 references)
target prot opt source destination
REJECT all -- anywhere lhr14s24-in-f5.1e100.net reject-with icmp-port-unreachable
REJECT all -- anywhere lhr08s07-in-f5.1e100.net reject-with icmp-port-unreachable
REJECT all -- anywhere origin.du113w.dub113.mail.live.com reject-with icmp-port-unreachable
REJECT all -- anywhere origin.du114w.dub114.mail.live.com reject-with icmp-port-unreachable
nslookup
用于比较(192.168.0.10
Samba 是否运行其内部 DNS 并将查找转发到8.8.8.8
):
$ nslookup mail.google.com
Server: 192.168.0.10
Address: 192.168.0.10#53
Non-authoritative answer:
mail.google.com canonical name = googlemail.l.google.com.
Name: googlemail.l.google.com
Address: 216.58.208.69
$ nslookup mail.live.com
Server: 192.168.0.10
Address: 192.168.0.10#53
Non-authoritative answer:
mail.live.com canonical name = dispatch.kahuna.glbdns2.microsoft.com.
Name: dispatch.kahuna.glbdns2.microsoft.com
Address: 157.56.195.156
Name: dispatch.kahuna.glbdns2.microsoft.com
Address: 157.55.235.51
显然,这并没有阻止任何事情。重新添加相同的规则以某种方式使 的iptable
地址与 相同nslookup
。但为什么会有这样的差异呢?我们不能做iptable
反向 DNS 查找并检查它是否与这些域匹配吗?
答案1
简短的回答:不会。 iptables
规则影响 IP 地址,而不是域名。这就是它被称为 iptables 的原因。
在iptables运行的网络层,域名本质上是无关紧要的。当您将域名与 iptables 规则一起使用时,将执行 DNS 查找并将域名解析为 IP 地址,并且在规则中使用该特定时刻的 IP 地址。如果域被更新并且 A 记录指向不同的 IP,iptables 将不知道任何变化。
您想要做的事情(阻止某些网站,例如 Gmail)可能最好使用squid
.这将允许您记录和监控网络使用情况,并且有一些附加组件squidguard
可以帮助管理允许/拒绝列表。
如果您想阻止对外部 smtp 的访问,请阻止相关端口(例如 25、465、587)以强制网络上的本地计算机使用本地 smtp 网关 - 您可以在其中控制邮件。