更正 3:已解决!我需要将我部门 VLAN 的官方 DNS 服务器添加为客户端的 DNS。
我读过大量关于使用 Linux 作为路由器时 iptables 问题的帖子,但没有一个能帮助我解决以下问题:
我正在我们大学部门设置一些学生工作站,其中我们在 VLAN 中拥有有限的 IP。工作站需要相互通信并上网。它们显然不能通过互联网访问。我不想给每个工作站分配大学 VLAN 中一个罕见的 IP,而是想使用以下设置:
我们有一台运行 Ubuntu 14.04 的服务器,它有 4 个以太网端口(我在此设置中使用 2 个)。
第一个端口是 em1,与所有工作站一起插入 L2 交换机。
第二个端口是 em2,插入大学 VLAN。
首先是问题,然后是我的设置:
- 我可以通过网络上的 ssh 访问服务器,我可以从该服务器 ping 8.8.8.8、www.example.com 和 LAN 中的其他 192.168.99.x 客户端,因此对于该服务器而言,一切正常。
- 客户端可以互相 ping 通,也可以 ping 通 8.8.8.8,但不能 ping 通 www.example.com。这就是为什么我认为我需要为 DNS 设置另一个 iptable。在任何浏览器中都一样,我无法解析外部网站。在 Windows 客户端中,网络设置显示与互联网的连接,在 Linux 客户端中,wget 和 apt-get install 之类的东西可以正常工作。我曾尝试为客户端手动设置 Google DNS 服务器 8.8.8.8 和 8.8.4.4,但无济于事,即使它们可以 ping 通它们。(解决方案是使用 VLAN 中的官方 DNS)
更正:wget/apt-get 工具似乎只有时起作用。
更正2:我至少在一个客户端的 DNS 条目中出现了拼写错误,我将在明天尝试修复其余的问题,然后将此问题标记为已关闭。
设置等:
net.ipv4.ip_forward=1
我已通过取消注释来激活内核中的转发
/etc/sysctl.conf
。
我/etc/network/interfaces
对两个以太网端口的输入如下:
auto em2
iface em2 inet static
address x.x.x.x
netmask x.x.x.x
network x.x.x.x
gateway x.x.x.x
dns-nameservers x.x.x.x x.x.x.x
dns-search x.example.com
pre-up iptables-restore < /etc/network/iptables.up.rules
post-down iptables-save > /etc/network/iptables.up.rules
auto em1
iface em1 inet static
address 192.168.99.252
netmask 255.255.255.128
pre-up iptables-restore < /etc/network/iptables.up.rules
post-down iptables-save > /etc/network/iptables.up.rules
(出于隐私原因,em2 参数被删除,但我认为它们在这里不起作用。请注意,我们有两个内部 DNS 服务器,这可能会在问题中发挥作用?)
我也设置了 iptables,sudo iptables -t nat -A POSTROUTING -o em2 -j MASQUERADE
因此sudo iptables -t nat -L
得到:
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere
MASQUERADE all -- anywhere anywhere
(第二次出现肯定是偶然发生的,但不应该令人担心,对吧?)
所有客户端均具有静态 IP,其设置如下:
- IP:192.168.99.22 或类似
- 子网掩码:255.255.255.128
- 网关:192.168.99.252
解决方案是将我部门 VLAN 中的官方 DNS 条目添加到客户端 DNS 条目中。路由器未配置为单独用作 DNS,并且不会将 DNS 请求重定向到外部 DNS。因此对于每个客户端:- DNS:外部网络的官方 VLAN DNS