Ubuntu 同网段ip区分网卡路由设置

前段时间工作中遇到个不是很常见的网络需求,具体事件描述:公司在一个客户那里有一台服务器(4块网卡),还有一台工控机,需求是服务器的网卡1配置DHCP连接公网,网卡2与工控机通过一台交换机连接进行通讯,两个网卡在同一网段内(192.168.1.0/24),这就造成了网卡2配置了192.168.1.*/24的IP后 与 工控机都插在交换机上但是无法正常通信,即ping不通对方的情况,后来在网上找了一些帖子,一般都写的配置和解决办法非常模糊,而且一度造成很大的误导,通过实际的环境测试很简单就解决这种场景需求的问题。

对服务器的网络进行配置,我这里的服务器操作系统是Ubuntu22.0.4

#vim /etc/netplan/00-installer-config.yaml

network:
  ethernets:
    eth0:
      dhcp4: true
    eth1:
      dhcp4: false
      addresses:
      - 192.168.1.10/32
      routes:
      - to: 192.168.1.20/32
        metric: 200
  version: 2

* 这里192.168.1.10是服务器网卡2的配置,192.168.1.20是工控机的IP地址,必须要加routes:配置否则到工控机的IP不通

看一下网卡情况

#ifconfig

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:22:27:98:5d  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.66  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fd42:8aa9:468b:6600:20c:29ff:fea8:f0f5  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::20c:29ff:fea8:f0f5  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:a8:f0:f5  txqueuelen 1000  (Ethernet)
        RX packets 865275  bytes 112848170 (112.8 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 688546  bytes 41640941 (41.6 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.20  netmask 255.255.255.255  broadcast 0.0.0.0
        inet6 fe80::20c:29ff:fea8:f0ff  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:a8:f0:ff  txqueuelen 1000  (Ethernet)
        RX packets 1688  bytes 179216 (179.2 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1004  bytes 95855 (95.8 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

再看一下路由表:

#route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.1.20    0.0.0.0         255.255.255.255 UH    200    0        0 eth1

*由于服务器中安装了docker所以有docker0的网络适配器,这里的eth0是服务器的第一块网卡,eth1是服务器的第二块网卡。

测试连通性:

#ping 192.168.1.20

PING 192.168.1.20 (192.168.1.20) 56(84) bytes of data.
64 bytes from 192.168.1.20: icmp_seq=1 ttl=64 time=2.91 ms
64 bytes from 192.168.1.20: icmp_seq=2 ttl=64 time=1.79 ms
64 bytes from 192.168.1.20: icmp_seq=3 ttl=64 time=1.47 ms
64 bytes from 192.168.1.20: icmp_seq=4 ttl=64 time=1.57 ms

#ping 192.168.1.1

PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=2.91 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=1.79 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=1.47 ms
64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=1.57 ms

可以看到上面的测试结果,已经达到了预期的需求。

总结:这里主要是两方面的配置,一个是默认的eth0网卡需要走192.168.1.1的路由与其他设备互联,而eth1网卡只与工控机的192.168.1.20互联,只需要在配置eth1网卡时将掩码位改为/32就可以解决这个问题,这类需求不需要网络上那些帖子中写的route add -net 增加各种路由即可完美解决。由于个人能力有限,上面的内容存在很多不严谨或错误,进提供给大家参考,希望能对大家有所帮助,对你的帮助也是我分享的动力。

当您在Ubuntu系统上尝试设置静态IP地址而遇到问题,导致网络连接出现问题,可能是因为配置文件错误、驱动问题或是防火墙限制了网络访问。以下是一些可能的解决步骤: 1. **检查配置文件**: - 打开终端 (`Ctrl+Alt+T`),打开 `/etc/network/interfaces` 或者 `/etc/netplan/01-netcfg.yaml` (如果使用的是 netplan) 文件。 - 确保静态IP配置部分(如 `iface eth0 inet static` 或类似)语法正确,并且填写正确的 IP 地址、子网掩码、默认网关等信息。 2. **重启网络服务**: ``` sudo service networking restart ``` 3. **更新或安装网卡驱动**: - 如果是硬件问题,可以尝试更新网卡驱动: ``` sudo apt update sudo apt install -y firmware-realtek ``` 或者: ``` sudo apt-get install linux-firmware-nonfree ``` 4. **检查IP冲突**: 使用 `ip addr` 或 `ifconfig` 查看是否有其他设备占用相同的IP地址。 5. **检查防火墙设置**: 确认ufw(Uncomplicated Firewall)或其他防火墙工具未阻止入站或出站的网络连接,使用 `sudo ufw status` 检查规则。 6. **临时关闭防火墙**: ``` sudo ufw disable ``` 接着再次尝试设置静态IP,然后恢复防火墙: ``` sudo ufw enable ``` 如果以上步骤都未能解决问题,建议查看系统的日志文件(如 `/var/log/syslog`),以便找到更具体的错误信息。此外,确保你的网线已经正确插入并工作正常也是很重要的。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值