Ubuntu20.04 双网卡 共享上网解决方案

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

需求

首先来说一下我们的需求:
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的dhcp
      access-points:  
         "TP-LINK":  #连接的无线的名称
             password: "123123123"  #连接的无线的密码

  version: 2

我们在配置网络之前可以使用ifconfig命令来查看一下网卡名称
配置完成后,我们可以使用以下命令来进行启动

netplan apply

2、开启路由转发功能

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


1.png

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一下无线所在的网关,可以看到,已经通了

2.png

我又尝试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文件,我们需要自己新建该文件,并把想要启动的命令放入该文件中。


3.png

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 Compatibility
     Loaded: loaded (/etc/systemd/system/rc-local.service; enabled; vendor preset: enabled)
    Drop-In: /usr/lib/systemd/system/rc-local.service.d
             └─debian.conf
     Active: failed (Result: exit-code) since Sun 2020-05-24 09:36:11 UTC; 14s ago
    Process: 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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339