使用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系统作为软路由的所有配置了,踩完坑了,记录备忘

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐