首页 > 使用ubuntu(18.04) 作为软路由器连接互联网

使用ubuntu(18.04) 作为软路由器连接互联网

使用ubuntu(18.04) 作为软路由器连接互联网

背景:

最近要用ubuntu机器作为中继路由,需要配置一下,但是内网外网网上找了一圈,五花八门的,照着做没有一个靠谱的,遇到的问题也没有任何说明,遂写一篇教程以记录一下

功能说明:

简单来说,就是用其他机器的网络上互联网, 比如可以用其他机器的wifi上网等等场景

示意图:

示意图

网上都先说要配什么静态ip地址, 要什么netplan, 什么network/interface , 都是把简单问题复杂话了,我用的都是ubuntu,我是有桌面的好么,为啥不直接在桌面上操作呢,配置这种东西,写错一个字符就不能用的,还有yaml的配置,缩进错了也不对,简直太不靠谱了,

ubuntu18 网络配置

wifi连接互联网

根本不需要配置,你能联网就行,ip地址只要找到地方能看就行,界面上wifi连接那里直接可以看到所有信息,但是这个信息全程根本不需要

在这里插入图片描述

配置作为软路由的网卡

配置这个是重中之重,首先,自己确定一个可以用的网段,如果没什么特殊情况 就用1网段,比如192.168.1.3 。

那么就开始配置

在这里插入图片描述

在这里插入图片描述

打开配置,配置,我这里写的是192.168.1.77, 网关和dns都不用配

在这里插入图片描述

好了,网卡就算是配完了

开启路由转发

编辑 /etc/sysctl.conf 文件, 开放下面这句注释

在这里插入图片描述

然后执行

sudo sysctl -p 

使其生效

配置路由转发

我的ubuntu18机器的网卡名如下:

上互联网的无线网卡: wlo1

作为路由转发的有线网卡: enp1s0

执行一下指令, 把你的网卡对应修改一下

sudo iptables -A FORWARD -i enp1s0 -o wlo1 -j ACCEPT
sudo iptables -A FORWARD -i wlo1 -o enp1s0 -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o wlo1 -j MASQUERADE

到这里, 软路由就已经启动好了,剩下来的就是联网使用了

使用软路由功能的普通PC配置

ip配置没有太复杂,只需要选择同样一个1网段的地址, 比如我这里使用的是192.168.1.81

我的网络配置如下:

在这里插入图片描述

在这里插入图片描述

这里最重要的一点,也是其他地方都很少提到的一点, 就是用软路由上网的这台PC, 他的网关应该填,ubuntu18软路由那台设备的有线网卡的ip地址,否则是不行的

剩下就是可以直接上网了

测试方法

主要还是靠ping,

1.第一步是,两边IP设置好之后, 用软路由上网的PC,先要ping通 软路由ubuntu18的有线网卡192.168.1.77地址,否则是不对的

在这里插入图片描述

2. 配置好命令之后, 用软路由上网的PC ,应该可以ping通 ubuntu18上无线网卡的IP,192.168.39.10, 否则是不对的

在这里插入图片描述

3. 先用可以上网的ubuntu18 ,ping一下百度, www.baidu.com 或者其他网站,得到该网站是外网IP地址, 我这里的到的是180.101.49.12, 因为这里如果直接ping 百度网址,可能会得不到响应,这有可能是利用软路由上网的PC,没有配置正确的DNS,导致域名解析失败的错误,而不是机器本身不能上网,

在这里插入图片描述

4.在用软路由上网的pc上, ping 百度域名 www.baidu.com

在这里插入图片描述

这代表你已经可以连上互联网了,正常使用了

IP自动分配

这个可以照抄 这位吾将上下而求索丶博主的内容, 实测有效

但是我还是自己写一下

1.安装 isc-dhcp-server

sudo apt-get install isc-dhcp-server

3.配置, 编辑 /etc/default/isc-dhcp-server文件

在这里插入图片描述

这里上两个红框都只要开放注释就行,就是把#号去掉,最后的红框则是指定要开启IP地址自动分配的网卡, 这个就是我的有线网卡的名称:enp1s0

然后保存

  1. 配置 /etc/dhcp/dhcpd.conf 文件

    这里主要是配置DHCP的策略,就是自动分配ip的策略

    这个地方需要好好解释一下

    我的配置文件如下:

    在这里插入图片描述

    为了避免写错,就把上面那个subnet 的一整项copy下来, 去掉#号,然后改信息就行

    注释:
subnet 192.168.1.0 netmask 255.255.255.0 {			#192.168.1.0 这个是网段, 而不是IP地址, 192.168.**.0就行range 192.168.1.70 192.168.1.90;							#分配IP地址的区段, 这个随便填,我这里设置了20个ip地址option domain-name-servers 192.168.16.202;			#这个是DNS地址, 我这个是自己的dns地址,#这个应该从上网的wifi网卡的信息dns地址那里抄过来
#  option domain-name "internal.example.org";option subnet-mask 255.255.255.0;						option routers 192.168.1.77;									#这个最重要 ,填有线网卡的静态IP地址option broadcast-address 192.168.1.255;default-lease-time 600;max-lease-time 7200;
}

保存

重启服务

 sudo service isc-dhcp-server restart 

然后重启ubuntu18 上作为软路由的有线网卡

在这里插入图片描述

然后利用软路由上网的PC上设置成IP自动获取

在这里插入图片描述

然后重启软路由上网的PC 的网卡

然后就看到IP信息已经自动获取到了

在这里插入图片描述

注意,这里我试了好几次都不行, 都是配置文件写错了,然后还有重启服务重启网卡什么的不知道先后顺序, 保险起见,改完直接重启系统

开机自启动

开机自启动主要三个点

1.开机自启路由转发

这个 /etc/sysctl.conf文件修改完就自己会开机开启路由转发了,不用操作

2.开机自启动网卡转发

安装 iptables-persistent

sudo apt-get install iptables-persistent

安装过程中就会提示你是不是要保存当前IPv4和IPV6的配置,都选yes就行了,直接就保存了

也可以手动将ip规则追加到rules.v4中:

iptables-save > /etc/iptables/rules.v4
  1. 开机自启IP自动分配

    这个本身就是一个service, 不用管

到此,就完整实现了ubuntu系统作为软路由的所有配置了,踩完坑了,记录备忘

更多相关:

  • ue4商城资源 Car Configurator Template 汽车配置器模板 ue4商城资源 Car Configurator Template 汽车配置器模板 Unreal Engine虚幻游戏引擎素材资源 Unreal Engine Marketplace –Car Configurator Template 4...

  • 一直在尝试一些写代码方便,阅读代码也很方便的工具,因为使用的是Mac,所以阅读源码上面sourceInsight就没办法用了。 从vscode – sublime – clion 想要可配置性强一点,软件轻一点,也能提供足够的便捷操作,不论是写代码还是快速索引源码,都希望在检索上面节省足够的时间。 vscode 和 sublime...

  • 每日杂事缠身,让自己在不断得烦扰之后终于有了自己的清静时光来熟悉一下我的工具,每次熟悉源码都需要先在windows端改好,拖到linux端,再编译。出现问题,还得重新回到windows端,这个过程太耗费时间。 vim作为唯一能够和windos 下的source insight一争高低的linux端的源码阅读器,只要将它短时间内合理利用...

  • Spring-Boot 攻略 day01 spring-boot 一. 基本配置加运行 1. 导入配置文件(pom.xml 文件中) org.springframework.bootspring-boot-starter-parent

  • Angular的常用路由守卫有5种,按照执行顺序: ① CanLoad:进入到当前路由的时候触发(若用户没有权限访问,相应的模块并不会被加载。这里是指对应组件的代码)。 ↓② CanAcitivate:进入到当前路由的时候触发(即使返回的是false,用户并没有权限访问该路由,但是相应的模块会被加载)。 ↓③ CanActivate...

  • 深度玩家可移步Angular - 常见路由任务 1、嵌套路由 const routes: Routes = [{path: 'first',component: FirstComponent,//同步加载//这就是嵌套路由↓children:[{path:'first-sub1',component:firstSub1Com...

  • 文章目录前言语法格式命令使用输出含义使用实例 前言 route命令用于显示和配置IP路由表,在不同节点间的网络通信,想要实现同一局域网之间的通信就需要交换机,不同局域网之间的通信就需要路由器。而路由器的存在是为了提供NAT转换,即提供ip地址和物理地址之间的映射关系,因为不同局域网节点之间的通信是需要直到对方局域网的外网ip...

  • 一、路由表 所谓路由表,指的是路由器或者其他互联网网络设备上存储的表,该表中存有到达特定网络终端的路径,在某些情况下,还有一些与这些路径相关的度量。 二、常见路由表生成算法 路由算法是提高路由协议功能,尽量减少路由时所带来开销的算法。当实现路由算法的软件必须运行在物理资源有限的计算机上时高效尤其重要。路由算法必须健壮,即在出现...

  • 路由对象在使用了 vue-router 的应用中,路由对象会被注入每个组件中,赋值为 this.$route ,并且当路由切换时,路由对象会被更新。 so , 路由对象暴露了以下属性: 1.$route.path 字符串,等于当前路由对象的路径,会被解析为绝对路径,如 "/home/news" 。 2.$route.params 对象...