使用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
然后保存
- 配置 /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
- 开机自启IP自动分配
这个本身就是一个service, 不用管
到此,就完整实现了ubuntu系统作为软路由的所有配置了,踩完坑了,记录备忘
相关文章:

程序员肿么了?为何总被认为是“屌丝”
没有想到会这么多人,有一点我强调一下,我的标题是被认为,而不是说真是。其实程序员相比其他行业不见得差,只是社会整体认可度不高。(或者说认知) 本文纯属闲时娱乐,请勿当真,请勿较真…

python空值填充_pandas | DataFrame基础运算以及空值填充
今天是pandas数据处理专题的第四篇文章,我们一起来聊聊DataFrame的基本运算。上一篇文章当中我们介绍了DataFrame数据结构当中一些常用的索引的使用方法,比如iloc、loc以及逻辑索引等等。今天的文章我们来看看DataFrame的一些基本运算。数据对齐我们可以…

Python学习之路基础篇--10Python基础,函数进阶
1 命名空间 对于Python 来说命名空间一共有三种 1 内置命名空间 —— Python 解释器 就是Python 解释器一启动就可以使用的名字,储存在内置命名空间中。内置的名字在启动解释器的时候被加载进内存里 2 全局命名空间 —— 我们所命名的,但不是函数中的代码…
C语言中整型浮点型在计算机中的存储
第一次写博客,遣词造句有点菜,算是一次简单梳理,慢慢学习人家的博客风格,随着学习的深入再做修改。 本次学习的是C语言在VS下的编译调试,对于初学者两说,首先说一下如何监控变量,以及监控变量在…

判断交换机性能好坏的九个因素
【文章摘要】把握千兆交换机的主要性能指标是关键,而判断交换机性能的好坏,需要从以下几方面的因素出发... 把握千兆交换机的主要性能指标是关键,而判断交换机性能的好坏,需要从以下几方面的因素出发: 转发技术 …

xgboost回归预测模型_偏最小二乘回归分析法 从预测角度对所建立的回归模型进行比较...
在实际问题中,经常遇到需要研究两组多重相关变量间的相互依赖关系,并研究用一组变量(常称为自变量或预测变量)去预测另一组变量(常称为因变量或响应变量), 除了最小二乘准则下的经典多元线性回归分析(MLR),提取自变量组主成分的主…

win7的IE缓存,临时文件,cookies和历史记录
2019独角兽企业重金招聘Python工程师标准>>> vista、win7的缓存以及临时文件、Cookies和历史记录都在以下几个地方: 缓存: %userprofile%\AppData\Local\Microsoft\Windows\Temporary Internet Files Temp: %userprofile%\AppData\Local\Temp Cookies: %…

Sql Server函数全解(四)日期和时间函数
阅读目录 1.获取系统当前日期的函数getDate();2.返回UTC日期的函数UTCDATE()3.获取天数的函数DAY(d)4.获取月份的函数MONTH(d)5.获取年份的函数YEAR(d)6.获取日期中指定部分字符串值的函数DATENAME(dp,d)7.获取日期中指定部分的整数值的函数DATEPART(dp,d)8.计算日期和时间的函…

关于python的比赛_【蓝桥杯】——python集团的比赛技巧,Python,组
【蓝桥杯】—— Python组比赛技巧蓝桥杯是大学生IT学科赛事,由工业和信息化部人才交流中心主办,所以对于大学生还说还是非常值得去参加的,2020年第十一届蓝桥杯新增了大学Python组,不分组别,第一届没有历届的真题&…

杭电 HOJ 1312 Red and Black 解题报告
搜索,bfs。依旧用队列做。边界处懒得处理,全部初始化为-1。当然,0也可以。AC代码如下: #include<iostream> #include<deque> using namespace std;struct Point {int x,y; } x,y;int main() {char str[22];int i,j,n,…

pfile和spfile的区别
pfile和spfile的区别 pfile 默认的名称为“init例程名.ora”文件路径:/app/oracle/product/10.2.0/dbs,这是一个文本文件,可以用任何文本编辑工具打开。spfile 默认的名称为“spfile例程名.ora”文件路径:/app/oracle/product/10…

json操作2
import jsonfopen(a.txt,w,encodingutf-8)goods{ 宝马:111111, 奔驰:222222}resjson.dumps(goods,ensure_asciiFalse)#把字典转成jsonf.write(res) json.dump(goods,f,ensure_asciiFalse)#把字典转成json,json会帮你write一次 ----颜色不一样的代码一致运行结果ÿ…
缓冲区和数组的输入输出问题
最近编写程序的时候一直被数据的输入输出所困扰,由此写篇博文总结一下最近遇到的问题和解决方法,错误之处望指正。 1.数组使用的一些语法注意事项 (1)数组的定义 一维数组:类型名 数组名 [常量表达式] 常量表达式中可…

目前python主要应用领域零售_python3读取HDA零售企业数据(一)
#-*- coding:utf-8 -*-# 下载河南FDA各药品经营企业目录import urllib.requestimport urllib.parseimport reimport osimport http.cookiejarheader {Connection: Keep-Alive,Accept: application/x-ms-application, image/jpeg, application/xamlxml, image/gif, image/pjpeg…

调试webservice遇到“测试窗体只能用于使用基元类型作为参数的方法”的解决办法...
之前一直写webservice 没有遇见这种情况,因为一般返回的参数整形 字符串 之类的 都是基本类型,最多也就是把xml序列化为一个字符串返回,这次遇到了返回一个引用类型的,不能直接调试了。所以,现在只能写一个程序把webse…

EJB3.1 JBoss7.1 Eclipse3.7
为什么80%的码农都做不了架构师?>>> EJB3.1 JBoss7.1 Eclipse3.7 ------Hello World 一、环境配置: JDK:正常配置 Eclipse:正常下载,解压(V3.7) JBoss:正常下载…

NOIP2012-摆花
放题目不解释~~~~ 【试题描述】 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆。通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号。为了在门口展出更多种花,规定第i种花不能…

github提交代码却没有显示绿格子
在github上提交代码之后,进入github上面查看自己的提交,可以看看刚刚的提交内容,但是却一直没有显示绿格子,一个原因是本地git的配置邮箱和github上面的邮箱不一致。 解决办法是,打开本地的git bash,然后直…

spark+openfire即时通讯工具二次开发参考文档
摘自: http://gmd20.blog.163.com/blog/static/168439232010527525542/ 其中Spark是开源的基于XMPP协议的即时通讯工具,公司最近也换到用这个了,说是在服务器(openfire)上可以备份消息,然后可以看员工的聊天记录 smac…

python selenium 等待页面加载完毕_Selenium_等待页面加载完毕
隐式等待WebDriver driver newFirefoxDriver();driver.get("www.baidu.com");driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);WebElement element driver.findElement(By.cssSelector(".abc"));((JavascriptExecutor)driver).executeS…

TechEd 2012奥兰多!
亚特兰大TechEd 2011如同昨天的事情,今天又无比期待奥兰多的TechEd 2012!如果可能的话,我将继续为大家分享关于奥兰多TechEd 2012 的现场见闻! 转载于:https://blog.51cto.com/suhua/845796

【常见CPU架构对比】维基百科
Comparison of instruction set architectures https://en.wikipedia.org/wiki/Comparison_of_instruction_set_architectures转载于:https://www.cnblogs.com/timeObjserver/p/9441242.html
Python基础学习1(Python的Windows和Linux的安装及简单学习)
一Python的安装 1.Windows下安装Python (1)windows 命令行的几个常见的命令 dir:查看当前目录下的所有文件,以及目录 cd NAME:进入到NAME目录下(tab键自动补全) D: 切换到D盘 type NUL…
Python Tutorial(十):浏览标准库(一)
10.1 操作系统接口 os模块提供很多函数用于和操作系统的交互: 确定使用import os风格而不是from os import *。这将避免os.open()被内建的open()函数遮住,它的操作截然不同。 内建的函数dir()和help()作为交互助手对于大的模块像os是非常有用的ÿ…

学业水平考试b能上985吗_河南单招哪些学院好考?哪些专业能录取?
高职单招的录取规则是什么?在符合报考条件的前提下,考试是由两部分组成:文化素质评价职业适应性测试、职业技能测试。文化素质评价大多院校采用学业水平考试等级成绩折合一定的分值计入。有些学校采用现场考试语数外三门,以实际成绩计入。职…

单例模式Java实现
为什么80%的码农都做不了架构师?>>> public class Singleton {private static Singleton instance null;// 同步时加锁的静态对象private static final Object OL new Object();private Singleton() {// Class initialize}/** 在多线程环境下执行时的…

Go环境搭建、Sublime Text 3 安装Go语言相关插件gosublime
Go 语言环境安装 1.brew install go 默认安装,被安装了/usr/local/Cellar/go 目录并自设置了环境变量。 2.go env 可查看目前的go的环境变量 3.配置一个GOPATH环境变量,是工作目录。 根据约定,GOPATH下需要建立3个目录: bin 存储编…

ABAP性能实例七例
一、SQL Interface 1.Select ... Where vs. Select Check 用Select … Where语句效率比Select Check语句要高,例如: SELECT * FROM SBOOK INTO SBOOK_WA WHERE CARRID LH AND CONNID 0400. ENDSELECT. SELECT * FROM SBOOK INTO SBOOK_WA. CHECK: SB…

C语言中打印‘%’
C语言中打印‘%’不能直接printf("%"),这里的%有特殊含义的,要想打印的话,需要输入printf("%%"),两个%才可以将它打印出来。C语言中的其他的特殊字符,以后再慢慢做整理。

vba 字体颜色_多掌握一些VBA语句,让自己书写代码更加顺畅
VBA 是好东西,对于身在职场的人员,或者是积极打拼的创业者,是数据分析的首选,他可以实现量身定做,解决一些规律性强的问题。或者代替人处理一些可以描述出有逻辑关系的数据分析。多掌握一些VBA语句,让自己书…