困扰我很多天的问题在今天加班的时候终于解决了,很开心!费了这么大精力才弄出来,当然要记录下来,以防下次再用,嘻嘻~

需求

首先来说一下我们的需求:

1、一台装有Ubuntu20.04 server系统的电脑

2、一台Ubuntu server系统的电脑(该电脑上Ubuntu系统版本任意)

3、装有Ubuntu20.04 server系统的电脑上有一个无线网卡,一个有限网卡,我们想让该电脑的无线网卡连接外网,使用网线连接到另一台电脑,使得另一台电脑可以上网。

Ubuntu20.04 server系统的配置

1、配置网络信息

从网上搜集了很长时间,很多都是修改/etc/network/interfaces文件,这种方式在Ubuntu17之后就不适用了,之后的系统都使用netplan来管理网络,因此我们要修改的是/etc/netplan目录下以.yaml为后缀的文件,以下内容为我系统中的配置

network:renderer: networkd   #ethernets:      # 有线配置enx00e04c00f946:    #指定需配置网络接口的名称dhcp4: true   #是否打开 IPv4 的 dhcp。addresses: [192.168.10.1/24]   #定义网络接口的静态 IP 地址wifis:   #无线配置wlan0:   #无线网络接口名称dhcp4: true   #是否打开IPV4的dhcpaccess-points:  "TP-LINK":  #连接的无线的名称password: "123123123"  #连接的无线的密码version: 2

我们在配置网络之前可以使用ifconfig命令来查看一下网卡名称

配置完成后,我们可以使用以下命令来进行启动

netplan apply

2、开启路由转发功能

Linux系统本身就有IP数据包转发的功能,但是默认情况下是关闭的,你需要通过修改配置文件来启动这个功能,修改/etc/sysctl.conf文件,将net.ipv4.ip_forward=1前面的注释去掉。

3、添加路由表使得两个网卡之间可以通信

依次在命令行中执行以下命令

iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -A FORWARD -i wlan0 -o enx00e04c00f946 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o enx00e04c00f946 -j ACCEPT

接下来就是要保存这些规则

iptables-save > /etc/iptables.rules

另一台电脑网络配置

相比较而言,这一台电脑的网络配置就简单多了,把有线网卡也设置成和上一台电脑有限网卡处于同一网络的静态ip就可以,如何设置静态ip在第二部分已经讲了,这里就不多做介绍了。

结果

这样我们就可以进行访问了哟!

我们ping一下无线所在的网关,可以看到,已经通了

我又尝试ping了一下www.baidu.com

但是没有任何反应,这种情况一般是未配置dns,使用8.8.8.8或114.114.114.114或其他。

我们只需要在/etc/resolve.conf文件中加入下面这句话即可,加入dns

nameserver 8.8.8.8

优化

这样配置Ubuntu20.04网络信息后,路由表规则虽然保存下来,但是每次开机后需要自己手动重启,我想让它开机时自动启动,就进行了如下操作

1、创建rc.local文件

由于Ubuntu20.04的/etc路径下并没有rc.local文件,我们需要自己新建该文件,并把想要启动的命令放入该文件中。

2、建立 rc-local.service 文件

Ubuntu20.04 不能像16.04 那样可以直接使用 /etc/rc.local 文件,需要设置service

nano /etc/systemd/system/rc-local.service

以下为我的rc-local.service文件中的内容

[Unit]
Description=/etc/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.local
After=network.target[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no[Install]
WantedBy=multi-user.target

3、给rc.local加权限

chmod +x /etc/rc.local

4、启用服务

systemctl enable rc-local

5、启用服务并查询服务状态

systemctl start rc-local.service
systemctl status rc-local.service

在启用服务的时候出现以下错误:

● rc-local.service - /etc/rc.local CompatibilityLoaded: loaded (/etc/systemd/system/rc-local.service; enabled; vendor preset: enabled)Drop-In: /usr/lib/systemd/system/rc-local.service.d└─debian.confActive: failed (Result: exit-code) since Sun 2020-05-24 09:36:11 UTC; 14s agoProcess: 2611 ExecStart=/etc/rc.local start (code=exited, status=203/EXEC)May 24 09:36:11 scope systemd[1]: Starting /etc/rc.local Compatibility...
May 24 09:36:11 scope systemd[2611]: rc-local.service: Failed to execute command: Permission denied
May 24 09:36:11 scope systemd[2611]: rc-local.service: Failed at step EXEC spawning /etc/rc.local: Permission denied
May 24 09:36:11 scope systemd[1]: rc-local.service: Control process exited, code=exited, status=203/EXEC
May 24 09:36:11 scope systemd[1]: rc-local.service: Failed with result 'exit-code'.
May 24 09:36:11 scope systemd[1]: Failed to start /etc/rc.local Compatibility.

经过查资料而知,是有shell的问题造成的。有些命令需要在bash shell中运行,而不能在dash中运行。

从Ubuntu 6.10开始,默认使用dash(theDebian Almquist Shell)而不是bash(the GNUBourne-Again Shell). 但Login Shell还是bash。

因此,在rc.local文件开头加上下面这句话即可

#!/bin/bash

ubuntu20 开机启动_Ubuntu20.04 双网卡 共享上网解决方案相关推荐

  1. linux下双网卡共享上网配置

    双网卡共享上网配置 ###环境 主机1: 192.168.1.1(外网)eth0192.168.0.1(内网)eth1 主机2:192.168.0.2 eth0###配置主机1 1.临时开启转发功能s ...

  2. CentOS 6.6下双网卡共享上网配置

    CentOS 6.6下双网卡共享上网配置 时间:2015-10-15 01:03来源:blog.51cto.com作者:l19891223j 的BLOG 举报 点击:494次   实现方式:通过设置i ...

  3. 两台XP系统电脑用双网卡共享上网操作

    两台XP系统电脑用双网卡共享上网操作   双网卡互联共享上网两个步骤:一个是硬件连接,另一个是网卡设置.    一.硬件连接 1.安装网卡:一台机器安装双网卡做为服务机,并安装上驱动,另一台也同样安上 ...

  4. Win7双网卡共享上网

    Win7通过双网卡共享上网,安装另外一块网卡,用于共享网络.设定可以直接上网的网卡为A,另一块网卡为B,A联网后,在"控制面板\网络和 Internet\网络连接"中右键A的属性, ...

  5. 直接用网线连接两台电脑,实现双网卡共享上网

    原文 直接用网线连接两台电脑,实现双网卡共享上网 我有两台电脑,一台笔记本,一台台式机,都是 XP 操作系统.笔记本收到 邻居无线信号,能正常上网.想通过有线连接使台式机同样能够共享网.经过摸 索总算 ...

  6. ubuntu双网卡共享上网

    学校使用锐捷2.56认证,固定IP. 本机双网卡,eth0连接外网.eth1内网接路由. 使用mystar代替锐捷2.56. 1.IP的设置: sudo gedit /etc/network/inte ...

  7. Ubuntu双网卡共享上网 外网 内网

    资源: 网卡两块:eth0,eth1;一个带有web登录服务器方式的静态ip,ubuntu9.04. 目标: 实现eth0外网,eth1内网. 参考: ============参考1========= ...

  8. linux 双网卡共享上网

    CentOS测试通过 首先 $lsusb 显示网卡芯片ID是0fe6:9700 好在已经有国外友人提供了qf9700的源代码.网址是 http://mquin.livejournal.com/1784 ...

  9. ubuntu做主机双网卡共享上网方法

    一.网络拓补结构: (注:如果是无线网卡连接内网,eth0改为wlan0,不清楚自己的网卡是哪个用命令ifconfig -a 查询) 服务器:两网卡的设置: eth0:202.96.168.100 掩 ...

最新文章

  1. node 模块化 require expores,简易实现原理。
  2. 使用Docfx生成项目文档
  3. 搞定系统设计 02:估算的一些方法
  4. miui秒解bl锁_MIUI12解锁bl篇(原谅我的过失,接上篇文章)
  5. collections 模块:更多数据结构
  6. linux shell 基本规范
  7. .Net----Remoting 激活 激活方式
  8. Mac 下更新 .bash_profile 文件
  9. Qt实现简单的密码加密
  10. 去掉重复的字符,比如 google,输出:gole(华为笔试题)
  11. nb-iot信号测试软件,NB-IOT测试仪
  12. 【STM32F429】第10章 ThreadX GUIX移植到STM32F429(GCC)
  13. Selenium控制已打开的chrome、IE浏览器
  14. 并发——锁升级(偏向锁,轻量级锁,重量级锁,及常见锁)
  15. 什么是CF , correlation filer ? 【无标题】
  16. Spring 编程式事务实例
  17. JAVA调用有道API接口对数据库中的中文语句进行翻译
  18. linux man命令如何翻页,Linux中如何使用 man page
  19. 职场老油条的22条经验之谈
  20. 1316:数的计数(Noip2001)

热门文章

  1. ubuntu_内网dns服务器搭建
  2. nslookup 入门命令详解
  3. 8个灯以此点亮c语言程序,单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)...
  4. java发送QQ群邮件,Java使用腾讯企业邮箱 、javamail 、 SSL 发送邮件/群发
  5. 又一经典音乐,不说了,你懂得
  6. 不要给技术人员做绩效
  7. 互联网的女性主义思维
  8. 小程序mpvue图片绘制水印_mpvue开发小程序如何使用腾讯官方小程序插件--地图
  9. 小程序:在手机上如果不打开调试模式,不能正常请求接口,打开调试模试就可以正常请求,真机测试和开发者工具都可以正常显示
  10. 【学习笔记】Spring-IOC-DI-AOP 学习笔记