更正3:解决了!我需要将我部门 VLAN 的官方 DNS 服务器作为 DNS 添加到客户端。
我已经阅读了大量关于使用 Linux 作为路由器时 iptables 问题的帖子,但没有一个可以帮助我解决以下问题:
我正在我们大学部门设置许多学生工作站,我们在 VLAN 中拥有有限的 IP。工作站需要相互通信并联机。明确地不应从 Internet 访问它们。我想使用以下设置,而不是为每个工作站提供大学 VLAN 中罕见的 IP 之一:
我们有一台运行 Ubuntu 14.04 服务器的服务器,带有 4 个以太网端口(我使用 2 个进行此设置)。
第一个端口是 em1,与所有工作站一起插入 L2 交换机。
第二个端口是 em2 并插入大学 VLAN。
首先是问题,然后是我的设置:
更正: wget/apt-get 的东西似乎只在某些时候有效。
更正 2:我至少在一个客户端的 DNS 条目之一中有错字,我将在明天尝试其余的条目,然后将其标记为已关闭。
设置等:
我通过取消注释 …
我目前按以下方式设置了两个 VM:
/-----------------------\
/-----------------\ | Ubuntu VM | /---------------\
| Workstation |------| eth1 : 192.168.0.x | | Web Server |
| 192.168.0.x | | eth0 : 169.254.71.x |------| 169.254.71.x |
\-----------------/ | | \---------------/
\-----------------------/
Run Code Online (Sandbox Code Playgroud)
我在从本地机器访问 Web 服务器时遇到了一些问题。
ubuntu通过virtualbox配置有2个网卡,第一个设置为内部网络,第二个设置为桥接连接。这给了我一次在 vm 内的两个有线连接,我将第一个(对应于内部网络)设置为“仅本地链接”,第二个设置为自动 DHCP。
网络服务器正在运行交钥匙 linux LAMP os,网络适配器配置为内部网络,网络与 ubuntu 内部网络具有相同的名称。
我已经按照本教程(在适当的情况下切换 eth0 和 eth1)使我能够从网络服务器 ping 到外部世界。我可以从网络服务器 ping 到我的本地机器和互联网上的任何网站。
现在我的问题来自试图做上述相反的事情。我一直在努力都无济于事相当长的一段时间,利用资源的开发,如这和一对夫妇别人,使我从我的本地机器连接到网络服务器。当我尝试 ping 网络服务器的 169.254.71.x 地址时,它无法连接。
我意识到我的问题可能出在 ubuntu 机器上的 NAT 配置中,或者我的 ubuntu 机器上的端口转发配置中,但我不知道如何解决这些问题。
我曾经将 Ubuntu 14.04 trusty 用于我们的 NAT 服务器(构建在 Google Cloud Platform 上),但最近我尝试使用 Ubuntu 16.04 xenial。
我的配置与我在 14.04 中所做的完全相同,但它不能用作 NAT 服务器。唯一的区别是操作系统和库的版本。
配置很简单,在谷歌的文档中有描述:
sudo sysctl -w net.ipv4.ip_forward=1和sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEhttps://cloud.google.com/compute/docs/networking#natgateway
就是这样。在 Ubuntu 14.04 中,它有效。在 Ubuntu 16.04 中,它没有。
有人可以帮我正确配置它吗?我不知道我错过了什么,也不知道我应该检查什么。
提前致谢!
这是附加信息
在 Ubuntu 14.04 中
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.5 LTS"
$
$ sudo dpkg -l iptables
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name …Run Code Online (Sandbox Code Playgroud) 我在virtualbox中有两个VM(Ubuntu),我想分配第一个10.0.3.15和另一个10.0.3.14。但是当我将网络类型设置为 NAT 时,网络地址不同,10.0.3.15 和 10.0.4.15。
即使我改变了范围,其中一个在 Ubunutu 中静态地更改为另一个,我也无法 ping 另一个。
我在互联网上找不到任何解决方案!
我想设置我的 ubuntu 计算机来路由数据包。因此我读过几篇教程,其中总是有很多规则要添加到 iptables 中。
我终于发现,路由数据包所需的唯一规则(假设 iptables 完全为空)如下:
iptables -t nat -A POSTROUTING -o <ext> -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)
其中ext是数据包向外发送的网络接口。
我不太明白这条规则的真正作用以及为什么只需要这条规则就能使 IP 转发工作。
nat ×5
iptables ×3
networking ×3
routing ×2
14.04 ×1
16.04 ×1
dns ×1
firewall ×1
lamp ×1
virtualbox ×1