当前位置: 首页 > 知识库问答 >
问题:

linux - 服务器双网卡配置同一IP段地址发生冲突?

郎俊雅
2023-11-13

我有一个装了Ubuntu系统的服务器带有两个网口eth0和eth1。eth0的IP是192.168.2.178/24, eth1的IP是192.168.2.179。

通过netplan配置网络,内容如下:

network:  ethernets:    eth0:      addresses:      - 192.168.2.178/24      dhcp4: false      gateway4: 192.168.2.1      nameservers:        addresses:        - 192.168.2.1      optional: true    eth1:      addresses:      - 192.168.2.179/24      dhcp4: false      optional: true  renderer: networkd  version: 2

当我完成这个网络配置后,系统的路由表中会自动添加两条路由,如下所示:

Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

在服务器上访问192.168.2.0/24这个内网段其他IP时会发生冲突。
我希望服务器在访问192.168.2.100的时候通过eth1网口,访问其他IP的时候通过eth0网口。

image.png

我应该怎么在系统中进行路由相关的配置,或者在netplan中配置能够永久生效。
我试过手动进行如下配置能够达到效果。

$ route del -net 192.168.2.0 netmask 255.255.255.0 dev eth1$ route add -host 192.168.2.100 dev eth1

但是当Ubuntu重启的时候或者插拔服务器的网线时,路由表就会被重置,上面手动配置的路由就会消失。

共有2个答案

鲁鹤轩
2023-11-13

感觉标准答案应该不是chatgpts说的在 /etc/network/interfaces 里面配置路由。

本身netplan配置文件里面就是可以指定路由的。既然用了netplan,这种情况下,直接在netplan里面加配置文件就好了。

https://netplan.readthedocs.io/en/stable/netplan-yaml/#routing

逑俊楚
2023-11-13

你需要使用 ip 命令来配置永久的路由。你可以在 /etc/network/interfaces 文件中添加以下内容:

up ip route add -net 192.168.2.0 netmask 255.255.255.0 via 192.168.2.1 dev eth1up ip rule add from 192.168.2.100 table 2up ip route add default via 192.168.2.1 dev eth0 table 2

上述配置的含义是:

  • 第一条命令添加了一条永久路由,使得所有发送到 192.168.2.0/24 网络的数据包都会通过 eth1 网络接口发送出去。
  • 第二条命令添加了一条规则,使得所有源 IP 为 192.168.2.100 的数据包都会使用名为 table 2 的路由表。
  • 第三条命令在 table 2 中添加了一条默认路由,所有没有明确指定路由规则的数据包都会通过 eth0 网络接口发送出去。

然后,你需要在 /etc/network/interfaces.d/ 目录下创建一个名为 50-ip-table-routes 的文件,并在其中添加以下内容:

up ip rule add from 192.168.2.100 table 2up ip route add default via 192.168.2.1 dev eth0 table 2

这样,即使重启 Ubuntu 或者插拔服务器的网线,路由表也不会被重置。因为这些路由规则和路由表都是使用 ip 命令永久配置的。

 类似资料:
  • 问题内容: 我遇到的情况是,我在同一台服务器上使用不同的端口运行两个不同的Web应用程序。它们都在运行Java的Jetty servlet容器,因此它们都使用名为JSESSIONID的cookie参数来跟踪会话ID。这两个Web应用程序正在争用会话ID。 打开Firefox标签,然后转到WebApp1 WebApp1的HTTP响应具有带有JSESSIONID = 1的set-cookie标头 Fi

  • 问题内容: 不熟悉Unix网络,添加虚拟接口等,现在尝试学习。我们正在尝试对我们的应用程序进行docker化。 我的要求是:将ip分配给可从外部应用程序/浏览器访问的docker容器。 容器ip应该基本上可以从同一网络中的其他计算机ping通。我不想使用端口转发。 我想访问docker容器,就像我们使用ip地址访问VM。没有端口映射,-p标志。如果我在容器中运行任何服务器,例如Apache或Tom

  • 问题内容: 我知道我可以在tomcat服务器的context.xml中添加一个Valve来允许或拒绝一些IP地址: 除了上述配置外, 还有其他可以配置IP限制的方法吗? 例如,我可以使用文本文件或数据库存储IP地址以提出IP限制建议吗? 非常感谢你!!! 问题答案: 您可以动态注册Tomcat的远程地址过滤器。 http://tomcat.apache.org/tomcat-7.0-doc/con

  • 本文向大家介绍Shell脚本获取本地网卡IP、mac地址、子网掩码、dns IP、外网IP,包括了Shell脚本获取本地网卡IP、mac地址、子网掩码、dns IP、外网IP的使用技巧和注意事项,需要的朋友参考一下

  • 本文向大家介绍详解centos7 下双网卡如何配置静态IP,包括了详解centos7 下双网卡如何配置静态IP的使用技巧和注意事项,需要的朋友参考一下 北网通,南电信的问题是很让人郁闷的一件,这也是河蟹社会的一种特色吧。为了解决这个问题,我考虑过三种方案: 1,双网卡,双IP;或者单网卡,双IP。 这种方案,成本低,但是维护挺麻烦,并且速度比后面二个要慢。 2,BGP双线机房。 BGP的费用要比第

  • 本文向大家介绍Linux下使用ip netns命令进行网口的隔离和配置ip地址,包括了Linux下使用ip netns命令进行网口的隔离和配置ip地址的使用技巧和注意事项,需要的朋友参考一下 1. 添加隔离标记符: ip netns add fd 2. 将指定网卡放入隔离中: ip link set eth1 netns fd 3. 在隔离环境下执行命令: 4. 有多个网口时,可以将两对网口直连,