admin 管理员组

文章数量: 887032

1. 网络拓扑图

  1. 双网卡单Lan口拓扑图
  2. 多网卡多Lan口带网桥拓扑图

2. 查看网卡信息

ip a

得出如下网卡信息列表,共四个网络信息,忽略第一个本地环回地址
一共存在三个网卡分别为enp1s0、enp2s0、wlo,以及其他详细信息,当前我们只需要关心网卡名称即可
注意,您的设备中网卡名称不一定和我的一样,请自行区分

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:f1:f5:2e:66:17 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.5/24 brd 192.168.1.255 scope global dynamic enp1s0
       valid_lft 80851sec preferred_lft 80851sec
    inet6 240e:36a:146b:df00:2f1:f5ff:fe2e:6617/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 258991sec preferred_lft 172591sec
    inet6 fe80::2f1:f5ff:fe2e:6617/64 scope link 
       valid_lft forever preferred_lft forever
3: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
    link/ether 00:f1:f5:2e:66:18 brd ff:ff:ff:ff:ff:ff
4: wlo1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UP group default qlen 1000
    link/ether c8:09:a8:12:b8:e4 brd ff:ff:ff:ff:ff:ff
    altname wlp0s20f3
5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:f1:f5:2e:66:18 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.1/24 brd 192.168.2.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::2045:e5ff:fe6a:440/64 scope link 
       valid_lft forever preferred_lft forever

3. netplan网卡设置

然后我们做以下自定义规定(读者可自行设计)

  • enp1s0:有线网卡1,我们规定这个网口为Wan口,用于连接互联网
  • enp2s0:有线网卡2,我们规定这个网口为Lan口,供内部网络的有线设备连接
  • wlo1: 无线网卡1,我们规定这个网口为Lan口,供内部网络的无线设备连接
  • 其他网卡:…
sudo vim /etc/netplan/00-installer-config.yaml

若仅规定了单个Lan口网卡,修改内容如下

network:
  ethernets:
    enp1s0:
      dhcp4: true		# 设置dhcp,用以从上级路由器获取ip地址
      dhcp6: false		# 暂不关心
      optional: true  	# 设置非阻塞方式配置网络, 否则没有网络时开机会卡很久
    enp2s0:
      dhcp4: false
      dhcp6: false
      addresses: [192.168.2.1/24] # 设置静态ip,读者可自行确定网段和ip
      optional: true

若规定了多个Lan口网卡,修改内容如下

创建一个网桥br0来连接多个Lan口网卡,便于后续DHCP统一管理ip地址

network:
  ethernets:
    enp1s0:
      dhcp4: true		# 设置dhcp,用以从上级路由器获取ip地址
      dhcp6: false		# 暂不关心
      optional: true  	# 设置非阻塞方式配置网络, 否则没有网络时开机会卡很久
    enp2s0:
      dhcp4: false
      dhcp6: false
      optional: true
    wlo1:
      dhcp4: false
      dhcp6: false
      optional: true
  bridges:
    br0:
      interfaces: [enp2s0, wlo1]  # 将有线网口enp2s0和wlo1添加到网桥br0下
      dhcp4: false
      dhcp6: false
      addresses: [192.168.2.1/24] # 设置静态ip,读者可自行确定网段和ip
      optional: true
  version: 2

应用网络修改

# 应用网络修改,ssh连接会断开,请重新根据新的ip地址
sudo netplan apply

4. DHCP服务设置

4.1 安装isc-dhcp-server

apt install isc-dhcp-server -y

4.2 配置isc-dhcp-server

4.2.1 修改DHCP服务的网口
sudo vim /etc/default/isc-dhcp-server 
# 指定为某个网卡提供DHCP服务
INTERFACESv4="enp2s0"
# 若设置网桥,请填入网桥名称
# INTERFACESv4="br0"
INTERFACESv6=""
4.2.1 配置DHCP网段信息
sudo vim /etc/dhcp/dhcpd.conf
# 子网划分为192.168.2.0/24网段
subnet 192.168.2.0 netmask 255.255.255.0 {
  # 设置DHCP服务提供的ip地址范围
  range 192.168.2.10 192.168.2.200;
  # 设置DHCP的默认网关,即已配置的Lan口ip/地址网桥ip
  option routers 192.168.2.1;
  # 该网段的广播地址
  option broadcast-address 192.168.2.255;
  # DNS服务器,使用光猫/上一级路由器提供的DNS服务,也可自定义例如8.8.8.8之类的DNS服务
  option domain-name-servers 192.168.1.1;
  # 默认租约时间
  default-lease-time 600;
  # 最大租约时间
  max-lease-time 7200;
}

重启isc-dhcp-server服务

# 重启isc-dhcp-server服务
sudo service isc-dhcp-server restart 
# 查看isc-dhcp-server状态, 注:若lan口没有接入设备,状态会显示未启用状态,请接入设备后测试
sudo service isc-dhcp-server status 

5. 无线AP热点配置

首先请确认您的设备存在无线网卡,没有无线网卡请跳过该节

如果无线网卡无法识别,例如ax101型号,请升级更高版本的Linux内核,推荐下载离线包安装更新(6.4+)
解决方案参考帖子:AX101 Ubuntu 22.04 or 22.10 driver
内核升级参考资料:升级 Ubuntu Linux 内核的几种不同方法 | Linux 中国

5.1 安装hostapd

apt install hostapd -y

5.2 配置hostapd

# 默认不存在该文件
sudo vim /etc/hostapd/hostapd.conf 
# 设置无线网卡名称
interface=wlo1
# 设置网桥,若无网桥设置请注释
bridge=br0
# 驱动,wext(旧版)/nl80211(新版),一般使用nl80211
driver=nl80211
# 无线网使用的网络协议,默认启用
ieee80211n=1
# 模式选择,g:2.4Ghz
hw_mode=g
# 信道,2.4GHZ(1~14)
channel=6
# 热点名称
ssid=ubuntu
# 热点密码
wpa_passphrase=123123123
# 选择加密方式为WPA2,常用加解密方法是有WEP、WPA、WPA2、WPA3
wpa=2
# 加密方式
wpa_key_mgmt=WPA-PSK
# 加密算法
rsn_pairwise=CCMP TKIP
wpa_pairwise=TKIP CCMP

参考资料:WLAN无线技术基本概念(802.11a/b/g/n/ac/ax区别,频段,信道概念)

加载hostapd配置文件

# -B 后台运行
sudo hostapd /etc/hostapd/hostapd.conf -B

其他

# hostapd服务的启动、暂停、重启、状态查询
sudo service hostapd start/stop/restart/status
# 启用开机服务(默认应该已启用)
sudo systemctl enable hostapd
# 无线网卡的启动和停止
sudo ip link set wlo1 up/down

6. 启用ip 转发功能

sudo vim /etc/sysctl.conf
# 末尾添加
net.ipv4.ip_forward=1

7. 启用NAT地址转换功能

# 设置防火墙规则,启用nat
sudo iptables -t nat -A POSTROUTING -0 enp1s0 MASQUERADE
# 重启保持该防火墙规则生效,安装iptables-persistent工具,会弹窗提醒是否保存当前规则(是)
sudo apt-get install iptables-persistent

这段命令是在iptables的nat表中添加了一条POSTROUTING规则,其作用是对enp1s0(wan口)的出站流量进行NAT处理。具体来说,这条规则会在lan口设备的出站流量经过enp1s0时,将源IP地址从lan口设备的IP地址(例如192.168.2.100)替换为enp1s0的IP地址(例如192.168.1.5),从而实现内部网络设备访问外部网络的功能。

这种NAT处理方式称为MASQUERADE,它可以动态地为内部网络设备分配外部IP地址,并保护内部网络的隐私。在这种情况下,lan口设备可以使用自己的DHCP服务器分配的IP地址(例如192.168.2.100)在内部网络中进行通信,而当它们需要访问外部网络时,就会经过enp1s0进行NAT处理,从而使得外部网络看到的源IP地址是enp1s0的IP地址。

本文标签: 路由器