好物优选点击查看详情 京东购买

暂无内容

Ubuntu 18.04 LTS 永久路由配置指导

一、方式一:

Netplan 已在在 Ubuntu 18.04 系统中用来管理网络,它是一款是一个用于配置 Linux 网络的简单工具。 通过 Netplan ,只需用一个 YAML 文件就可描述每个网络接口需要配置。 Netplan 从 /etc/netplan/*.yaml 读取配置。根据这个配置描述, Netplan 会更新相关网络配置,而无需关心底层的网络管理工具是啥。Netplan 目前支持两种 网络管理工具 :NetworkManager和Systemd-networkd。

参考: https://netplan.io/faq/#use-pre-up-post-up-etc-hook-scripts

https://netplan.io/examples#reaching-a-directly-connected-gateway

https://netplan.io/reference#routing

https://www.digitalocean.com/community/tutorials/how-to-use-iproute2-tools-to-manage-network-configuration-on-a-linux-vps#how-to-configure-network-interfaces-and-addresses

https://www.freedesktop.org/software/systemd/man/systemd-networkd.service.html

在Ubuntu 18.04中修改了IP地址配置程序, Ubuntu和Debian的删除了以前的ifup/ifdown命令和/etc/network/interfaces配置文件, 改为使用/etc/netplan/01-netcfg.yaml和sudo netplay apply命令管理IP地址。

下图是Netplan的工作原理:
在这里插入图片描述
Netplan 会从 /etc/netplan/*.yaml 读取网络配置,这些配置由管理员、安装人员、云映像实例化或其他操作系统部署编写。在早期启动期间,Netplan 在 /run 中生成后端特定的配置文件,以将设备的控制权移交给特定的网络守护程序。我们只需创建所需网络接口的 YAML 描述以及每个接口应配置为做什么。根据此描述,Netplan 将选择合适的渲染器(renderer)工具生成所有必要的网络配置。DHCP网络配置一般用NetworkManager renderer,因networkd 作为渲染器时不会让网络设备使用 DHCP 自动启动;每个接口都需要在 /etc/netplan 中的文件中指定,networkd 才能使用这些配置生效。

要在 Ubuntu 18.04 服务器上配置静态 IP 地址,需要修改 /etc/netplan/ 目录中的相关 netplan 网络配置文件。该目录下,会发现有一个名为 01-netcfg.yaml 或 50-cloud-init.yaml 的默认 netplan 配置文件,其中包含以下内容,指示 networkd 守护进程通过 DHCP 配置您的网络接口;必须为块的每一行保证正确的字段缩进。换句话说,每行的前缀空格数很重要。否则,可能会收到类似于以下内容的错误消息:Invalid YAML at //etc/netplan/01-netcfg.yaml line 7 column 6: did not find expected key。

ip link set 命令替代了 ifup 和 ifdown。

/etc/netplan/config.yaml/netpaln-*.yaml示例文件:

network: ethernets: eno1: addresses: <span class="token punctuation">[</span><span class="token number">192.168</span>.1.113/24<span class="token punctuation">]</span> dhcp4: <span class="token boolean">false</span> dhcp6: <span class="token boolean">false</span> optional: <span class="token boolean">true</span> gateway4: <span class="token number">192.168</span>.1.1 nameservers: addresses: <span class="token punctuation">[</span><span class="token number">8.8</span>.8.8,8.8.4.4<span class="token punctuation">]</span> eno2: addresses: <span class="token punctuation">[</span><span class="token number">100.100</span>.100.10/24<span class="token punctuation">]</span> dhcp4: <span class="token boolean">false</span> optional: <span class="token boolean">true</span> eno5: addresses: <span class="token punctuation">[</span><span class="token punctuation">]</span> dhcp4: <span class="token boolean">true</span> optional: <span class="token boolean">true</span> eno6: addresses: <span class="token punctuation">[</span><span class="token number">10.0</span>.0.10/24<span class="token punctuation">]</span> dhcp4: <span class="token boolean">false</span> optional: <span class="token boolean">true</span> nameservers: addresses: <span class="token punctuation">[</span><span class="token number">8.8</span>.8.8,8.8.4.4<span class="token punctuation">]</span> version: <span class="token number">2</span>
      network: ethernets: eno1: addresses: <span class="token punctuation">[</span><span class="token number">192.168</span>.1.113/24<span class="token punctuation">]</span> dhcp4: <span class="token boolean">false</span> dhcp6: <span class="token boolean">false</span> optional: <span class="token boolean">true</span> gateway4: <span class="token number">192.168</span>.1.1  nameservers: addresses: <span class="token punctuation">[</span><span class="token number">8.8</span>.8.8,8.8.4.4<span class="token punctuation">]</span> eno2: addresses: <span class="token punctuation">[</span><span class="token number">100.100</span>.100.10/24<span class="token punctuation">]</span> dhcp4: <span class="token boolean">false</span> optional: <span class="token boolean">true</span> eno5: addresses: <span class="token punctuation">[</span><span class="token punctuation">]</span> dhcp4: <span class="token boolean">true</span> optional: <span class="token boolean">true</span> eno6: addresses: <span class="token punctuation">[</span><span class="token number">10.0</span>.0.10/24<span class="token punctuation">]</span> dhcp4: <span class="token boolean">false</span> optional: <span class="token boolean">true</span> nameservers: addresses: <span class="token punctuation">[</span><span class="token number">8.8</span>.8.8,8.8.4.4<span class="token punctuation">]</span> version: <span class="token number">2</span> 
network: ethernets: eno1: addresses: [192.168.1.113/24] dhcp4: false dhcp6: false optional: true gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8,8.8.4.4] eno2: addresses: [100.100.100.10/24] dhcp4: false optional: true eno5: addresses: [] dhcp4: true optional: true eno6: addresses: [10.0.0.10/24] dhcp4: false optional: true nameservers: addresses: [8.8.8.8,8.8.4.4] version: 2

现场截图:环境:Ubuntu 18.04 LTS 配置文件:/etc/netplan/01-netcfg.yaml
在这里插入图片描述
【路由配置示例】:

eth0: <span class="token punctuation">[</span><span class="token punctuation">..</span>.<span class="token punctuation">]</span> routes: - to: default via: <span class="token number">10.0</span>.0.1 metric: <span class="token number">100</span> on-link: <span class="token boolean">true</span> - to: default via: cf02:de:ad:be:ef::2 eth1: <span class="token punctuation">[</span><span class="token punctuation">..</span>.<span class="token punctuation">]</span> routes: - to: default via: <span class="token number">172.134</span>.67.1 metric: <span class="token number">100</span> on-link: <span class="token boolean">true</span> table: <span class="token number">76</span> type:<span class="token punctuation">..</span>.
eth0: <span class="token punctuation">[</span><span class="token punctuation">..</span>.<span class="token punctuation">]</span> routes: - to: default  via: <span class="token number">10.0</span>.0.1 metric: <span class="token number">100</span> on-link: <span class="token boolean">true</span> - to: default  via: cf02:de:ad:be:ef::2 eth1: <span class="token punctuation">[</span><span class="token punctuation">..</span>.<span class="token punctuation">]</span> routes:  - to: default  via: <span class="token number">172.134</span>.67.1 metric: <span class="token number">100</span> on-link: <span class="token boolean">true</span>  table: <span class="token number">76</span>  type:<span class="token punctuation">..</span>.  
eth0: [...] routes: - to: default via: 10.0.0.1 metric: 100 on-link: true - to: default via: cf02:de:ad:be:ef::2 eth1: [...] routes: - to: default via: 172.134.67.1 metric: 100 on-link: true table: 76 type:...

现场实际:
在这里插入图片描述
在这里插入图片描述
修改后:
在这里插入图片描述
在应用改变之前,让我们测试一下配置。执行命令:sudo netplan try(它会在应用配置之前验证其是否有效。如果成功,你就会看到配置被接受)

确认后执行应用:sudo netplan apply //应用前切记备份,实际验证应用执行后,路由表与之前手动添加的一致。
在这里插入图片描述

删除:ip address del <span class="token punctuation">\</span><span class="token operator"><</span>address<span class="token operator">></span> dev <span class="token punctuation">\</span><span class="token operator"><</span>interface<span class="token operator">></span>. 语法检查:sudo netplan generate //以 /etc/netplan 配置为管理工具生成配置; 调试命令:$ <span class="token function">sudo</span> netplan --debug apply networkctl :可查看输出网络设备的摘要 networkctl status //查看系统上每个 IP 地址的状态 netplan apply //应用yaml中指定渲染器的所有配置,必要时重新启动它们 netplan try //应用配置并等待用户确认;如果配置使网络损坏或未给出确认,将回滚 <span class="token function">ip</span> -s <span class="token function">link</span> show eth0 //查看接口统计 //配置文件路径: /run/netplan/*.yaml /etc/netplan/*.yaml /lib/netplan/*.yaml 启停网卡: <span class="token function">ip</span> <span class="token function">link</span> <span class="token builtin class-name">set</span> enp3s0 up <span class="token function">ip</span> <span class="token function">link</span> <span class="token builtin class-name">set</span> enp3s0 down 重启网络配置:sudo /etc/init.d/networking restart
删除:ip address del <span class="token punctuation">\</span><span class="token operator"><</span>address<span class="token operator">></span> dev <span class="token punctuation">\</span><span class="token operator"><</span>interface<span class="token operator">></span>. 语法检查:sudo netplan generate //以 /etc/netplan 配置为管理工具生成配置; 调试命令:$ <span class="token function">sudo</span> netplan --debug apply networkctl :可查看输出网络设备的摘要 networkctl status //查看系统上每个 IP 地址的状态 netplan apply //应用yaml中指定渲染器的所有配置,必要时重新启动它们 netplan try //应用配置并等待用户确认;如果配置使网络损坏或未给出确认,将回滚 <span class="token function">ip</span> -s <span class="token function">link</span> show eth0 //查看接口统计 //配置文件路径: /run/netplan/*.yaml /etc/netplan/*.yaml /lib/netplan/*.yaml 启停网卡: <span class="token function">ip</span> <span class="token function">link</span> <span class="token builtin class-name">set</span> enp3s0 up <span class="token function">ip</span> <span class="token function">link</span> <span class="token builtin class-name">set</span> enp3s0 down 重启网络配置:sudo /etc/init.d/networking restart 
删除:ip address del \<address> dev \<interface>. 语法检查:sudo netplan generate //以 /etc/netplan 配置为管理工具生成配置; 调试命令:$ sudo netplan --debug apply networkctl :可查看输出网络设备的摘要 networkctl status //查看系统上每个 IP 地址的状态 netplan apply //应用yaml中指定渲染器的所有配置,必要时重新启动它们 netplan try //应用配置并等待用户确认;如果配置使网络损坏或未给出确认,将回滚 ip -s link show eth0 //查看接口统计 //配置文件路径: /run/netplan/*.yaml /etc/netplan/*.yaml /lib/netplan/*.yaml 启停网卡: ip link set enp3s0 up ip link set enp3s0 down 重启网络配置:sudo /etc/init.d/networking restart

临时解决: 在启动文件/etc/rc.local里加入路由添加命令

二、方式2

Debian系的网卡配置跟Redhat系很不一样,Redhat是放在/etc/sysconfig/network-scripts目录下面的一大堆文件里面。而Debian系的网卡配置则是存在/etc/network/interfaces这个文件里面,而且不管你有多少块网卡,系统都把配置统统放在这个文件里。

以下是ubuntu的一个网络配置文件示例:

auto lo iface lo inet loopback iface lo inet6 loopback auto eth0 iface eth0 inet static address <span class="token number">192.168</span>.2.1 network <span class="token number">192.168</span>.2.0 netmask <span class="token number">255.255</span>.255.0 broadcast <span class="token number">192.168</span>.2.255 up route <span class="token function">add</span> -net <span class="token number">192.168</span>.3.0 netmask <span class="token number">255.255</span>.255.0 gw <span class="token number">192.168</span>.2.2 dev eth0 down route del -net <span class="token number">192.168</span>.3.0 netmask <span class="token number">255.255</span>.255.0 gw <span class="token number">192.168</span>.2.2 dev eth0 up route <span class="token function">add</span> -net <span class="token number">192.168</span>.4.0 netmask <span class="token number">255.255</span>.255.0 gw <span class="token number">192.168</span>.2.2 dev eth0 down route del -net <span class="token number">192.168</span>.4.0 netmask <span class="token number">255.255</span>.255.0 gw <span class="token number">192.168</span>.2.2 dev eth0 iface eth0 inet6 static address <span class="token number">2000</span>:2::1 netmask <span class="token number">64</span> up route -A inet6 <span class="token function">add</span> <span class="token number">2000</span>:3::/64 gw <span class="token number">2000</span>:2::2 up route -A inet6 <span class="token function">add</span> <span class="token number">2000</span>:4::/64 gw <span class="token number">2000</span>:2::2 down route -A inet6 del <span class="token number">2000</span>:3::/64 gw <span class="token number">2000</span>:2::2 down route -A inet6 del <span class="token number">2000</span>:4::/64 gw <span class="token number">2000</span>:2::2 auto eth1 iface eth1 inet dhcp
auto lo  iface lo inet loopback  iface lo inet6 loopback auto eth0 iface eth0 inet static address <span class="token number">192.168</span>.2.1 network <span class="token number">192.168</span>.2.0 netmask <span class="token number">255.255</span>.255.0 broadcast <span class="token number">192.168</span>.2.255 up route <span class="token function">add</span> -net <span class="token number">192.168</span>.3.0 netmask <span class="token number">255.255</span>.255.0 gw <span class="token number">192.168</span>.2.2 dev eth0  down route del -net <span class="token number">192.168</span>.3.0 netmask <span class="token number">255.255</span>.255.0 gw <span class="token number">192.168</span>.2.2 dev eth0  up route <span class="token function">add</span> -net <span class="token number">192.168</span>.4.0 netmask <span class="token number">255.255</span>.255.0 gw <span class="token number">192.168</span>.2.2 dev eth0 down route del -net <span class="token number">192.168</span>.4.0 netmask <span class="token number">255.255</span>.255.0 gw <span class="token number">192.168</span>.2.2 dev eth0 iface eth0 inet6 static address <span class="token number">2000</span>:2::1 netmask <span class="token number">64</span> up route -A inet6 <span class="token function">add</span> <span class="token number">2000</span>:3::/64 gw <span class="token number">2000</span>:2::2 up route -A inet6 <span class="token function">add</span> <span class="token number">2000</span>:4::/64 gw <span class="token number">2000</span>:2::2 down route -A inet6 del <span class="token number">2000</span>:3::/64 gw <span class="token number">2000</span>:2::2 down route -A inet6 del <span class="token number">2000</span>:4::/64 gw <span class="token number">2000</span>:2::2 auto eth1 iface eth1 inet dhcp 
auto lo iface lo inet loopback iface lo inet6 loopback auto eth0 iface eth0 inet static address 192.168.2.1 network 192.168.2.0 netmask 255.255.255.0 broadcast 192.168.2.255 up route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.2.2 dev eth0 down route del -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.2.2 dev eth0 up route add -net 192.168.4.0 netmask 255.255.255.0 gw 192.168.2.2 dev eth0 down route del -net 192.168.4.0 netmask 255.255.255.0 gw 192.168.2.2 dev eth0 iface eth0 inet6 static address 2000:2::1 netmask 64 up route -A inet6 add 2000:3::/64 gw 2000:2::2 up route -A inet6 add 2000:4::/64 gw 2000:2::2 down route -A inet6 del 2000:3::/64 gw 2000:2::2 down route -A inet6 del 2000:4::/64 gw 2000:2::2 auto eth1 iface eth1 inet dhcp

2)路由转发:

编辑:/etc/sysctl.conf,修改:

net.ipv4.ip_forward=1
net.ipv6.default.ip_forward=1

生效执行:sysctl -p /etc/sysctl.conf

三、附录:手动配置静态路由

添加到主机的路由 添加到网络的路由 添加默认网关 删除路由
添加到主机的路由   添加到网络的路由     添加默认网关  删除路由   
添加到主机的路由 添加到网络的路由 添加默认网关 删除路由

四、附录2:Ubuntu 20.04添加永久路由

vim /etc/netplan/network_manager.yaml

<span class="token key atrule">network</span><span class="token punctuation">:</span> <span class="token key atrule">version</span><span class="token punctuation">:</span> <span class="token number">2</span> <span class="token key atrule">renderer</span><span class="token punctuation">:</span> NetworkManager <span class="token key atrule">ethernets</span><span class="token punctuation">:</span> <span class="token key atrule">eth0</span><span class="token punctuation">:</span> <span class="token key atrule">dhcp4</span><span class="token punctuation">:</span> <span class="token boolean important">true</span> <span class="token key atrule">dhcp6</span><span class="token punctuation">:</span> <span class="token boolean important">true</span> <span class="token key atrule">eth1</span><span class="token punctuation">:</span> <span class="token key atrule">dhcp4</span><span class="token punctuation">:</span> <span class="token boolean important">true</span> <span class="token key atrule">dhcp6</span><span class="token punctuation">:</span> <span class="token boolean important">true</span> <span class="token key atrule">eth2</span><span class="token punctuation">:</span> addresses: <span class="token punctuation">-</span> 172.16.18.3/24 <span class="token key atrule">gataway4</span><span class="token punctuation">:</span> 172.16.18.254 <span class="token key atrule">routes</span><span class="token punctuation">:</span> <span class="token punctuation">-</span> <span class="token key atrule">to</span><span class="token punctuation">:</span> 10.0.100.0/24 <span class="token key atrule">via</span><span class="token punctuation">:</span> 172.16.18.254 <span class="token key atrule">nameservers</span><span class="token punctuation">:</span> <span class="token key atrule">addresses</span><span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token key atrule">search</span><span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
<span class="token key atrule">network</span><span class="token punctuation">:</span> <span class="token key atrule">version</span><span class="token punctuation">:</span> <span class="token number">2</span> <span class="token key atrule">renderer</span><span class="token punctuation">:</span> NetworkManager <span class="token key atrule">ethernets</span><span class="token punctuation">:</span> <span class="token key atrule">eth0</span><span class="token punctuation">:</span> <span class="token key atrule">dhcp4</span><span class="token punctuation">:</span> <span class="token boolean important">true</span> <span class="token key atrule">dhcp6</span><span class="token punctuation">:</span> <span class="token boolean important">true</span> <span class="token key atrule">eth1</span><span class="token punctuation">:</span> <span class="token key atrule">dhcp4</span><span class="token punctuation">:</span> <span class="token boolean important">true</span> <span class="token key atrule">dhcp6</span><span class="token punctuation">:</span> <span class="token boolean important">true</span> <span class="token key atrule">eth2</span><span class="token punctuation">:</span> addresses: <span class="token punctuation">-</span> 172.16.18.3/24 <span class="token key atrule">gataway4</span><span class="token punctuation">:</span> 172.16.18.254 <span class="token key atrule">routes</span><span class="token punctuation">:</span> <span class="token punctuation">-</span> <span class="token key atrule">to</span><span class="token punctuation">:</span> 10.0.100.0/24 <span class="token key atrule">via</span><span class="token punctuation">:</span> 172.16.18.254 <span class="token key atrule">nameservers</span><span class="token punctuation">:</span> <span class="token key atrule">addresses</span><span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token key atrule">search</span><span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span> 
network: version: 2 renderer: NetworkManager ethernets: eth0: dhcp4: true dhcp6: true eth1: dhcp4: true dhcp6: true eth2: addresses: - 172.16.18.3/24 gataway4: 172.16.18.254 routes: - to: 10.0.100.0/24 via: 172.16.18.254 nameservers: addresses: [] search: []

完成后执行:netplan try ,检查配置文件正确性,不要按enter键,随后执行netplan apply,如果未生效,一般是当前网络受interface影响,可删除或重命令/etc/network/interface,然后再netpaln apply
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

如果出现网卡ip信息未显示的情况,执行:sudo dhclient -v

当然我们也可以按照示例2:网卡配置静态地址

<span class="token key atrule">network</span><span class="token punctuation">:</span> <span class="token key atrule">version</span><span class="token punctuation">:</span> <span class="token number">2</span> <span class="token key atrule">renderer</span><span class="token punctuation">:</span> NetworkManager <span class="token key atrule">ethernets</span><span class="token punctuation">:</span> <span class="token key atrule">ens33</span><span class="token punctuation">:</span> <span class="token key atrule">dhcp4</span><span class="token punctuation">:</span> no <span class="token key atrule">addresses</span><span class="token punctuation">:</span> <span class="token punctuation">[</span>192.168.126.128/24<span class="token punctuation">]</span> <span class="token key atrule">gateway4</span><span class="token punctuation">:</span> 192.168.72.2 <span class="token key atrule">nameservers</span><span class="token punctuation">:</span> <span class="token key atrule">addresses</span><span class="token punctuation">:</span> <span class="token punctuation">[</span>8.8.8.8<span class="token punctuation">,</span>8.8.4.4<span class="token punctuation">]</span>
<span class="token key atrule">network</span><span class="token punctuation">:</span> <span class="token key atrule">version</span><span class="token punctuation">:</span> <span class="token number">2</span> <span class="token key atrule">renderer</span><span class="token punctuation">:</span> NetworkManager <span class="token key atrule">ethernets</span><span class="token punctuation">:</span> <span class="token key atrule">ens33</span><span class="token punctuation">:</span> <span class="token key atrule">dhcp4</span><span class="token punctuation">:</span> no <span class="token key atrule">addresses</span><span class="token punctuation">:</span> <span class="token punctuation">[</span>192.168.126.128/24<span class="token punctuation">]</span> <span class="token key atrule">gateway4</span><span class="token punctuation">:</span> 192.168.72.2 <span class="token key atrule">nameservers</span><span class="token punctuation">:</span> <span class="token key atrule">addresses</span><span class="token punctuation">:</span> <span class="token punctuation">[</span>8.8.8.8<span class="token punctuation">,</span>8.8.4.4<span class="token punctuation">]</span> 
network: version: 2 renderer: NetworkManager ethernets: ens33: dhcp4: no addresses: [192.168.126.128/24] gateway4: 192.168.72.2 nameservers: addresses: [8.8.8.8,8.8.4.4]

原文链接:https://blog.csdn.net/ximenjianxue/article/details/120335069

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享