将两台计算机连接在一起:分配 IP 不起作用

将两台计算机连接在一起:分配 IP 不起作用

我搞砸了。我在一台机器上有两个网卡,在另一台机器上有一个网卡。我尝试通过在两台机器上设置静态 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在哪里? 我重新启动后,网络连接断开,无法看到另一台计算机。 有人能提供一些关于如何设置的建议吗?comp1ip 192.168.132.100
comp1comp2

更新:

让我们从头开始:
两台计算机 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来自comp2comp2来自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。

相关内容