我搞砸了。我在一台机器上有两个网卡,在另一台机器上有一个网卡。我尝试通过在两台机器上设置静态 IP 来将两台计算机连接在一起,如下所示:
公司1:
sudo ip ad add 10.0.0.10/24 dev eth1
公司2:
sudo ip ad add 10.0.0.20/24 dev eth0
外线eth0
在哪里? 我重新启动后,网络连接断开,无法看到另一台计算机。 有人能提供一些关于如何设置的建议吗?comp1
ip 192.168.132.100
comp1
comp2
更新:
让我们从头开始:
两台计算机 comp1 和 comp2
comp1 -> 两个网卡
eth0 和 eth1
eth0 是外部连接:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
其 IP 为 10.140.20.20
eth1 用于跨计算机连接:
auto eth1
iface eth1 inet static
address 10.10.0.0
netmask 255.255.255.0
gateway 10.140.20.20
dns-nameservers 10.140.20.20
公司2:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 10.10.0.1
netmask 255.255.255.0
gateway 10.140.20.20
dns-nameservers 10.140.20.20
我知道这不起作用,但有人能解释一下原因吗?我几年前有过这方面的经验,但看起来我是新手
更新2:
由于某种原因,我无法在您的答案下方添加任何其他评论,因此我只是在这里添加我的进度。
所以我按照你们的建议更改了所有内容,现在我可以看到comp1
来自comp2
和comp2
来自comp1
,我可以看到来自的网络comp1
,但我看不到来自的网络comp2
。我已启用 ipv4 转发,但我认为我的设置存在问题:
公司1:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet static
address 10.10.0.10
netmask 255.255.255.0
公司2:
auto eth0
iface eth0 inet static
address 10.10.0.20
netmask 255.255.255.0
gateway 10.10.0.10
所以我认为我的计算机 1 上需要有从 eth1 到 eth0 的连接,但我不知道如何设置。我需要在 eth0(计算机 1)上设置静态 IP 吗?
当我添加:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet static
address 10.10.0.10
netmask 255.255.255.0
up/sbin/iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -d 0/0 -j MASQUERADE
我可以访问外部网络,但当我尝试下载某些内容到 comp2 时,例如geany
sudo aptitude install geany
我得到:
错误 http:// ....
暂时失败导致 security.ubuntu.com
答案1
当系统重新启动时,它会读取网络初始化脚本,该脚本从 /etc/network/interfaces 获取有关您的网络设置的信息。编辑此文件,一切都会好起来。
答案2
您可以在中使用类似以下内容/etc/network/interfaces
:
# auto-up the interface eth0
auto eth0
# set a static configuration (inet=IP4, inet6=IP6)
# use "dhcp" instead of "static" for dhcp usage
iface eth0 inet static
address 10.0.0.10
netmask 255.255.255.0
# if you use no gateway comment that line out
gateway 10.0.0.1
答案3
我假设 Comp1 连接到互联网,并且您希望 Comp2 也能够通过 Comp1 进行连接。您当前配置中的一些内容会搞乱这一切。首先,从 Comp1 开始,有以下行:
address 10.10.0.0
您不能将最后一个八位字节 .0 作为 /24 范围的地址(这是 255.255.255.0 网络掩码为您提供的范围)- 除非您真的非常需要它们,否则通常不要使用它们。将其设置为不同的地址 - 您有 254 个其他地址可供选择。我们在这里使用 10.10.0.1。
由于您已在此机器的 eth0 上配置了 10.140.20.20,因此它将能够使用该 IP 地址(通过 eth0),因此您的网关语句应该可以工作。
然而,此行在 comp2 上不起作用:
gateway 10.140.20.20
Comp2 无法知道如何获取此 IP 地址。它唯一知道的是您配置的 /24 网络。它将能够看到该范围内的任何其他地址,仅此而已。此网关地址不在该范围内,因此它看不到您配置的网关。事实上,对于 2 主机网络,它唯一能看到的是 Comp1 的地址。因此,您需要将其更改为您为 Comp1 指定的 IP。假设我们上面提到的地址,则此条目应为:
gateway 10.10.0.1
您可以保持 DNS 条目不变。现在您有一个可访问的网关,如果它不知道地址实际在哪里,它就会直接将数据包发送到网关。
为了实现这一点,Comp1 需要能够路由来自 Comp2 的数据包,这意味着在 Comp1 上启用路由。这很容易在运行时完成:
sysctl -w net.ipv4.ip_forward=1
如果您想使其永久生效,则需要将设置添加到/etc/sysctl.conf
。
现在,将发生的情况是,任何发往互联网或 Comp2 上任何其他未知主机的数据包都将被发送到 Comp1。由于 Comp1 现在已配置为路由该数据包,它将在 eth1 上接收该数据包,并将其传递给 eth2。