在现有子网上创build新的子网

我有三个服务器,目前有ips 192.168.1.1,192.168.1.2和192.168.1.3。 他们可以相互看到,互相交谈。 我想创build第二个子网,在192.168.1.x,这是10.170.xx之上

我可以将ip addr add 10.170.0.1 dev eth0分配给三个服务器10.170.0.1,10.170.0.2和10.170.0.3中的每一个, ip addr add 10.170.0.1 dev eth0 。 我遇到的问题是如何做路由。 我无法通过10.170.xxnetworkingping任何服务器。 我相信我需要创build一些点对点的桥梁,但是我不知道如何开始。 有任何想法吗?

正如其他人所指出的那样,当你使用ip address add而不提供networking掩码或CIDR范围时,假设为/32 ,所以没有为子网创build路由。

要解决这个问题,您还需要添加CIDR范围:

 ip addr add 10.170.0.1/16 dev eth0 

要使更改持久化 ,请将其添加到/etc/network/interfaces 。 这可以通过post-up命令以廉价和肮脏的方式完成,但正确的方法是添加仅包含该地址的第二节:

 auto eth0 iface eth0 inet static address 192.168.1.1 netmask 255.255.255.0 gateway 192.168.1.250 iface eth0 inet static address 10.170.0.1 netmask 255.255.0.0 

尤其需要注意的是,尽pipe你会阅读过时的Internet指南,但不应该在第二个IP地址中使用eth0:0 。 这种forms已经被弃用,并且已经有很多年了(这意味着它很可能随时从Linux中删除)。

尝试做ip addr add 10.170.0.1/16 dev eth0所以你指定一个networking掩码。 我敢打赌,他们正在join/ 32 IP空间,否则(虽然我还没有证实)。

这是一个有趣的挑战,有很多解决scheme。 你的问题的措辞确实留下了一些问题,但从上下文来看,我有一个想法你想要做什么。

我假设这些主机都在同一个物理网段 – 例如连接到集线器或交换机,并且可以在192.168.1.xnetworking上互相ping通,而无需通过路由器。 在这种情况下,你真的想要第二个networking与原来的networking平行 – 这是一个轻微的挑剔,但是我认为与理解正在发生的事情有关。

我认为Eric Renouf的回答很可能是热门话题 – 默认情况下,iproute2很可能会添加一个32位的networking掩码–255.255.255.255–这在涉及/必要路由的情况下是正确的,比如在一个大的托pipe服务提供商那里有一些机器有几个IP地址,随着时间的推移。 如果您确实打算使用整个10.170.xx空间,则可能需要24位networking掩码 – 255.255.255.0 – 甚至16位。

另外,地址中的“.xx”位实际上是一个非常重要的细节,通常我们使用“networking地址”来描述一个networking,这个networking地址是特定子网范围的底部地址。 在这种情况下,您的networking地址是192.168.1.0/24和10.170.0.0/16。 networking地址不为零的子网可能小于C级/ 24位。 我不会过多地详细说明,但强烈build议投入一些时间阅读有关子网划分。

现在我们知道要避免默认的networking掩码了,为什么要考虑:

 ip addr del 10.170.0.1 dev eth0 ip addr add 10.170.0.1/16 dev eth0 

在每台机器上重复。 如果你想在启动时configuration这些参数,也可以考虑在/ etc / network / interfaces中添加这一行作为post-up命令。

希望这可以帮助!

我可以通过添加一个源地址来实现这个工作:

对于192.168.1.1 / 10.170.0.1机器来说,

$ ip route add 10.170/16 dev eth0 src 10.170.0.1

更普遍

$ ip route add 10.170/16 dev eth0 src "ip address of host"

我认为正确的做法如下:

  • 为新的子网创build子接口(例如eth0:1)
  • 将子接口分配给标记的VLAN(如果您的主机是linux,则可能需要安装vlan软件包)
  • 在路由器上configuration具有相同ID的VLAN,然后切换,
  • 在您的路由器之间,在198.168.1.xnetworking和10.170.xxnetworking之间进行正常的基于目标的路由。

如果服务器连接到非托pipe交换机,但是使用“智能”或pipe理交换机,这可能也可能不起作用。

我有这种configuration与来自不同提供商的2个IPv6networking一起工作,并且在两个networking上都有一个单一的以太网接口通信,而且工作效果很好。

你只需要检查你的路由,我想你只是错过了。

 ip route show 

也许,失败的原因是你已经给每个主机分配了IP地址,而没有指出networking掩码,你可以通过做

 ip add add 10.170.0.1/24 dev eth0 

这也将添加掩码,从而创build您的主机所需的路由条目知道如何到达对方。

如果你只是想添加路由条目

 ip route add 10.170.0.0/24 dev eth0 

服务器虚拟机? 如果是这样,你可以考虑添加补充界面。

但是,正如其他人所提到的,只需添加适当的networking掩码的IP,然后两个主机就可以通信。

 ctxadm@ctx-router1:~$ sudo ip addr add 10.75.0.5/24 dev eth1 

从vmware上运行的2个debiancertificate:

 ctxadm@ctx-router1:~$ sudo ip addr list eth1 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:a4:1f:e6 brd ff:ff:ff:ff:ff:ff inet 10.92.0.254/24 brd 10.92.0.255 scope global eth1 inet 10.75.0.5/24 scope global eth1 ctxadm@web1:~$ sudo ip addr list eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:22:1a:8a brd ff:ff:ff:ff:ff:ff inet 10.92.0.20/24 brd 10.92.0.255 scope global eth0 inet 10.75.0.6/24 scope global eth0 ctxadm@ctx-router1:~$ ping 10.75.0.6 PING 10.75.0.6 (10.75.0.6) 56(84) bytes of data. 64 bytes from 10.75.0.6: icmp_req=1 ttl=64 time=0.157 ms 64 bytes from 10.75.0.6: icmp_req=2 ttl=64 time=0.185 ms ctxadm@ctx-router1:~$ sudo arp -a ? (192.168.0.20) at 20:cf:30:7f:6c:3e [ether] on eth0 ? (10.75.0.6) at 00:0c:29:22:1a:8a [ether] on eth1 ? (192.168.0.1) at 00:10:18:de:ad:05 [ether] on eth0 

而已 !

要debugging使用tcpdump,请检查arp条目..