现在一切应该都正常工作了。别忘了
设置内部网络上的所有客户端,使其网关指向 Linux 内部 IP 地址。(在 Windows 中,右键单击“网上邻居”->“属性”->“网关”,然后将其更改为 Linux 网关的内部 IP。)
如果客户端有 HTTP 代理,则设置所有客户端使用 ISP 的 HTTP 代理;使用透明代理(警告 - 我听说在非常大的网络上,透明代理速度非常慢);或者在新 Linux 网关上运行 Squid。(这是可选的,但对于大型网络来说是首选)
确保在设置客户端时指定 DNS。否则,客户端会收到“无法解析地址”等错误消息。如果 DNS 以前工作正常(URL 地址可以访问),但在设置网络地址转换后不起作用,这是因为您的 ISP/网络的 DHCP 服务器无法再告知您 DNS 地址。
[题外话] 我想知道是否可以简单地发送一个 DHCP 广播,它只转发 DNS 服务器(顺便也转发 http_proxy),而无需设置 DHCP 服务器(或者即使你设置了)。有人可以发邮件告诉我关于这个吗? :)
感谢 Richard Atcheson 指出这一点。
现在你应该开始保护它了!首先,通常关闭转发:"iptables -P FORWARD DROP",然后学习如何使用 iptables 和/etc/hosts.allow和/etc/hosts.deny来保护你的系统。警告 - 在网络地址转换工作之前,不要尝试上面提到的 iptables 规则。如果你要将最后一条规则设置为 DENY,则必须显式允许每个你想要通过的数据包。(使用 "iptables -P FORWARD ACCEPT" 撤消)
允许任何你希望互联网可见的服务通过。
例如,要允许访问你的 Web 服务器,请执行
$> iptables -A INPUT --protocol tcp --dport 80 -j ACCEPT $> iptables -A INPUT --protocol tcp --dport 443 -j ACCEPT |
要允许 ident(用于连接到 IRC 等),请执行
$> iptables -A INPUT --protocol tcp --dport 113 -j ACCEPT |
测试它
尝试从客户端使用 IP 连接到 Web。Google 的 IP 是 216.239.33.100(好吧,这是其中之一),你应该能够收到回复。例如,"ping 216.239.33.100" "lynx 216.239.33.100"。
尝试使用名称进行完全连接。例如,"ping google.com" "lynx google.com" 或从 Internet Explorer / Netscape。
其中 eth0 是外部 Internet 网卡,123.12.23.43 是该机器的外部 IP。