最近自己组装了一台Ubuntu的服务器,打算用这个机器做路由机器,以便后期方便监测网络情况等
目的
实现客户机连接内网服务器进行上网
机器环境
ubuntu桌面版20.04 PC一台
Windows 10 PC一台
Intel i350t4 4网口网卡
网络拓扑图
实现思路
1. 安装网卡驱动,并将外网网线连接至Ubuntu机器网口1
网卡通过PCIE接口接入,外网网线连接网口1,系统开机,配置网络使其能上外网
此处注意: 由于我们的ubuntu机器是20.04版本的,网络配置是使用的netplan,所以要修改/etc/netplay/xxxx.ymal 进行配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# Let NetworkManager manage all devices on this system
network:
ethernets:
enp2s0f2:
addresses: [192.168.20.1/23]
dhcp4: no
dhcp6: no
enp2s0f3:
dhcp4: yes
dhcp6: yes
version: 2
renderer: networkd
最后我们执行netplan apply命令来应用此设置,ipconfig命令来查看IP是否获取成功
![show.png](https://kkkkkn-cloud-1256465973.cos.ap-beijing.myqcloud.com/images/5b9791af1644486db8229f6ce89d54dd~tplv-k3u1fbpfcp-watermark.image)
#### 2. 个人PC机器通过网线连接网卡2
Windows PC网线连接ubuntu网口2,然后配置Windows 网络,修改为同一网段静态IP,并设置DNS,网关等配置
![show.png](https://kkkkkn-cloud-1256465973.cos.ap-beijing.myqcloud.com/images/ab1e1ed4c77f4aaa96451bd9291c6bfd~tplv-k3u1fbpfcp-watermark.image)
**注:这里的DNS不设置的话Windows PC会无法连接外网**
#### 3. 设置ubuntu机器路由表并开启路由转发
开启路由转发功能(默认关闭,需要手动开启),修改/etc/sysctl.conf文件,取消掉 net.ipv4.ip_forward=1 注释即可
![show.png](https://kkkkkn-cloud-1256465973.cos.ap-beijing.myqcloud.com/images/00e15c89e5da4ba78bf074c88fa90ae6~tplv-k3u1fbpfcp-watermark.image)
配置路由表,使Windows PC可以上外网,此处命令行设置后重启机器就失效了
|
iptables -t nat -A POSTROUTING -o 外网网卡名 -j MASQUERADE
iptables -A FORWARD -i 外网网卡名 -o 内网网卡名 -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i 外网网卡名 -o 内网网卡名 -j ACCEPT
1
2
3
4
5
6
7
8
9
10
|
#### 4. 设置路由表
上面路由表在命令行配置完成之后,重启机器就失效了,要保证每次开机不用重新设置。我们要创建一个开机服务
**创建/etc/rc.local文件**
![show.png](https://kkkkkn-cloud-1256465973.cos.ap-beijing.myqcloud.com/images/c6772420287e4220bb473a5987ca4504~tplv-k3u1fbpfcp-watermark.image)
**设置service**
|
nano /etc/systemd/system/rc-local.service
文件内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[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
|
rc.local设置权限
1
2
3
|
chmod +x /etc/rc.local
启用服务
|
systemctl enable rc-local
开机启用服务
1
|
systemctl start rc-local.service
|
测试
Windows PC 与ubuntu 都可上外网且都可相互通信,配置完成