首先,明确基本情况

能上外网的办公电脑网段 10.42.170.0/24 上网的网关 是10.42.170.254 ,dns 是运营商给的 两个ip。

另一个内网网段是 12.3.45.0/24  网关是12.3.45.254  通常 这个网段 在这边只给了一根网线 用一个专用电脑查看内网视频监控什么的。但为了能让 比如10.42.170.0/24中的任何一台电脑都能方便查看监控于是乎就有了需求。


硬件,加了一个双网卡的 ubuntu22.04-server的机子,插入两个网段来的两根网线。

1. 配置ubuntu22.04双网卡网络

sudo vim /etc/netplan/00-lantolan.yaml
network:
  ethernets:
    eno0:
      addresses:
          - 12.3.45.1/24
      routes:
        - to: 12.3.0.0/16
          via: 12.3.45.254
          metric: 200
      routing-policy:
        - from: 12.3.0.0/16
    enp2s0:
      addresses: 
        - 10.42.170.222/24
        - 10.42.170.225/24
        - 10.42.170.226/24
      nameservers:
        addresses:
          - 223.5.5.5
          - "尽量使用本地运营商提供的dns"
        search: []
      routes:
        - to: default
          via: 10.42.170.254
          metric: 300
      routing-policy:
        - from: 10.42.170.0/24
  version: 2

配置完成后 先 使用  sudo  netplan try 没有错误了 再 sudo netplan apply  防止输入错误,因为网络配置很少有照抄的

使用 ip addr 查看是这样的

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:22:4d:d4:cb:ea brd ff:ff:ff:ff:ff:ff
    inet 10.42.170.222/24 brd 10.42.170.255 scope global enp2s0
       valid_lft forever preferred_lft forever
    inet 10.42.170.225/24 brd 10.42.170.255 scope global secondary enp2s0
       valid_lft forever preferred_lft forever
    inet 10.42.170.226/24 brd 10.42.170.255 scope global secondary enp2s0
       valid_lft forever preferred_lft forever
    inet6 fe80::222:4dff:fed4:cbea/64 scope link 
       valid_lft forever preferred_lft forever
3: eno0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:22:4d:d4:cb:eb brd ff:ff:ff:ff:ff:ff
    altname enp1s0
    inet 12.3.45.1/24 brd 12.3.45.255 scope global eno0
       valid_lft forever preferred_lft forever
    inet6 fe80::222:4dff:fed4:cbeb/64 scope link 
       valid_lft forever preferred_lft forever

到这里了 ,可以使用ping 两个网段中在线的设备测试设备的连通性

2.启用IP转发

然后接下来配置网卡转发

sudo vim /etc/sysctl.conf

取消掉ipv4网络转发的注释


net.ipv4.ip_forward=1

保存后,使永久生效

sudo sysctl -p

3.配置 iptables:使用 iptables 配置 NAT 转发规则。

sudo iptables -t nat -A POSTROUTING -s 10.42.170.0/24 -d 12.3.45.0/16 -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -s 12.3.0.0/16 -d 10.42.170.0/24 -j MASQUERADE

永久保存 iptables 规则:为了确保重启后规则仍然生效,你可以安装 iptables-persistent 并保存规则。

sudo apt-get install iptables-persistent  # 安装
sudo iptables-save > /etc/iptables/rules.v4  # 保存ipv4的转发规则

如果上面的步骤都正常的话,当安装iptables-persistent过程中,它会提示是否保存v4和v6的规则的,咱们直接确认即可。

可以使用 cat  /etc/iptables/rules.v4  来查看  是否有保存到我们上面输入的两条规则,确保ubuntu重启后依然有效

到这里,我们的ubuntu-server双网卡的网络节点就已经配置完成了。


剩下打 要在 两个网段的路由器上 各加一条路由规则,两个网段就互通了。

因为还在测试,我是直接在使用的 10.42.170.166这台windows10系统上加了一条 路由规则

route add -p 12.3.0.0 mask 255.255.0.0  10.42.170.222   #-p参数是意思永久保存

windows 10 下路由命令常用的

route delete 12.3.0.0  #删除刚才创建的路由表
routte print  -4 -6 #打印路由表 -4仅打印Ipv4的路由表 -6  仅打印ipv6的路由表

现在 就可以 在10.42.170.166 这个电脑上ping 12.3.45.254 可以同了,配置的是ping 12.3.0.0/16整个网段的,只有在线的设备都应该能平通。


如果想让10.42.170.0/24下的所有电脑访问 12.3.0.0/16网段,则应该去 10.42.170.254这个网关路由器上添加一条类似路由指令,则10网段访问 12网段就没有问题了。

反之,12.3.0.0/16的网段需要访问 10.42.170.0/24 下的电脑也需要 在那个网段的网关路由器12.3.45.254上添加一条路由规则。

参考:https://people.ubuntu.com/~slyon/netplan-docs/examples/

顺祝各位 网络配置 顺利完成。