首先,明确基本情况
能上外网的办公电脑网段 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/
顺祝各位 网络配置 顺利完成。