Ubuntu 双网卡配置

最近自己组装了一台Ubuntu的服务器,打算用这个机器做路由机器,以便后期方便监测网络情况等

目的

实现客户机连接内网服务器进行上网

机器环境

ubuntu桌面版20.04 PC一台

Windows 10 PC一台

Intel i350t4 4网口网卡

网络拓扑图

show.png

实现思路

1. 安装网卡驱动,并将外网网线连接至Ubuntu机器网口1

网卡通过PCIE接口接入,外网网线连接网口1,系统开机,配置网络使其能上外网

show.png

此处注意: 由于我们的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 都可上外网且都可相互通信,配置完成

show.png