这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

网络配置

Ubuntu Server安装后的网络配置工作

1 - 配置静态IP

配置静态IP地址

通常ip地址采用 dhcp,然后在路由器上绑定 IP 地址和 mac 地址即可。但在使用大量虚拟机时,每次都去修改路由器增加静态地址绑定比较麻烦,因此还是有必要在需要时设置静态IP地址。

使用 NetworkManager

适用于 ubuntu 20.04 版本

设置前先安装 network-manager:

sudo apt install network-manager

安全起见,备份原有的配置文件:

sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.original

修改 /etc/netplan 的配置文件,如 00-installer-config.yaml

sudo vi /etc/netplan/00-installer-config.yaml

将需要配置为静态IP地址的网卡设置 dhcp4: false ,然后手工配置:

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    wan1:
      match:
        macaddress: 00:0c:29:23:d3:de
      set-name: wan1
      dhcp4: false
      addresses: [192.168.0.21/24]
      gateway4: 192.168.0.1
      nameservers:
        addresses: [192.168.0.1]
    wan2:
      match:
        macaddress: 48:0f:cf:ef:08:11
      set-name: wan2
      dhcp4: true

使用 Networkd

适用于 ubuntu 22.04 / 22.10 / 23.04 版本

安全起见,备份原有的配置文件:

sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.original

修改 /etc/netplan 的配置文件,如 00-installer-config.yaml

sudo vi /etc/netplan/00-installer-config.yaml

手工配置:

network:
  renderer: networkd
  ethernets:
    ens160:
      addresses:
        - 192.168.0.56/24
      nameservers:
        addresses: [192.168.0.1]
      routes:
        - to: default
          via: 192.168.0.1
  version: 2

2 - 网络代理快捷命令

设置启用网络代理的快捷命令,方便随时开启和关闭网络代理

手动启用代理

将以下内容添加到 .zshrc :

# proxy
alias proxyon='export all_proxy=socks5://192.168.0.1:7891;export http_proxy=http://192.168.0.1:7890;export https_proxy=http://192.168.0.1:7890;export no_proxy=127.0.0.1,localhost,local,.local,.lan,192.168.0.0/16,10.0.0.0/16'
alias proxyoff='unset all_proxy http_proxy https_proxy no_proxy'

背景:我的代理安装在路由器上,http端口为 7890, socks5 端口为 7891

给git配置代理

vi ~/.ssh/config

内容如下:

Host github.com
HostName github.com
User git
# http proxy
#ProxyCommand socat - PROXY:192.168.0.1:%h:%p,proxyport=7890
# socks5 proxy
ProxyCommand nc -v -x 192.168.0.1:7891 %h %p

3 - 安装配置Samba文件共享

在linux mint上安装Samba,进行文件共享

安装samba

直接apt安装,然后设置数据所在的路径。

sudo apt-get install samba

cd
mkdir -p data/samba
chmod 777 data/samba

配置samba

sudo vi /etc/samba/smb.conf

打开配置文件,在文件末尾添加以下内容:

[share]
path = /home/sky/data/samba
valid users = sky
writable = yes

创建samba用户:

sudo smbpasswd -a sky

重启samba服务

sudo service smbd restart

访问samba

在其他linux机器上使用地址 smb://172.168.0.10 访问,在windows下使用地址 \\172.0.0.10

参考资料

4 - 安装配置nfs文件共享

在ubuntu server上安装nfs,进行文件共享

配置nfs服务器端

安装nfs-server

sudo apt update
sudo apt install nfs-kernel-server -y

查看 nfs-server 的状态:

$ sudo systemctl status nfs-server

● nfs-server.service - NFS server and services
     Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor pr>
     Active: active (exited) since Wed 2021-12-29 00:45:44 CST; 5min ago
   Main PID: 758742 (code=exited, status=0/SUCCESS)
      Tasks: 0 (limit: 154080)
     Memory: 0B
     CGroup: /system.slice/nfs-server.service

Dec 29 00:45:43 skyserver systemd[1]: Starting NFS server and services...
Dec 29 00:45:44 skyserver systemd[1]: Finished NFS server and services.

创建nfs共享目录

sudo mkdir /mnt/nfs-share

让所有的客户端都可以访问所有的文件,修改文件的所有者和许可:

sudo chown nobody:nogroup /mnt/nfs-share
sudo chmod -R 777 /mnt/nfs-share

授权客户端访问nfs server

sudo vi /etc/exports 打开文件,为每个客户端授权访问:

/mnt/nfs-share client-IP(rw,sync,no_subtree_check)

如果有多个客户端则需要重复多次授权,也可以通过子网掩码一次性授权:

/mnt/nfs-share 192.168.0.0/24(rw,sync,no_subtree_check)
/mnt/nfs-share 10.0.0.0/24(rw,sync,no_subtree_check)

参数解释:

  • rw (Read and Write)
  • sync (Write changes to disk before applying them)
  • no_subtree_check (Avoid subtree checking )

执行下面命令进行export:

sudo exportfs -a

配置防火墙

关闭防火墙,或者设置防火墙规则:

sudo ufw allow from 192.168.0.0/24 to any port nfs
sudo ufw allow from 10.0.0.0/24 to any port nfs

增加nfs共享的硬盘

服务器机器上有一块4t的ssd和两块3t的旧硬盘,准备通过nfs共享出来,方便其他机器访问。

可以通过fdisk命令获取相关的硬盘和分区信息:

$ fdisk -l
......
Disk /dev/sda: 2.75 TiB, 3000878383104 bytes, 5861090592 sectors
Device     Start        End    Sectors  Size Type
/dev/sda1   2048 5861089279 5861087232  2.7T Linux filesystem

Disk /dev/sdb: 2.75 TiB, 3000592982016 bytes, 5860533168 sectors
Device     Start        End    Sectors  Size Type
/dev/sdb1   2048 5860532223 5860530176  2.7T Linux filesystem

Disk /dev/nvme1n1: 3.5 TiB, 3840755982336 bytes, 7501476528 sectors
Device     Start        End    Sectors  Size Type
/dev/nvme1n1p1  2048 7501475839 7501473792  3.5T Linux filesystem

然后查分区对应的uuid备用:

$ ls -l /dev/disk/by-uuid/
......
lrwxrwxrwx 1 root root 10 Jan 16 12:34 7c3a3aca-9cde-48a0-957b-eead5b2ab7dc -> ../../sda1
lrwxrwxrwx 1 root root 10 Jan 16 12:34 fcae6bde-4789-4afe-b164-c7189a0bdf5f -> ../../sdb1
lrwxrwxrwx 1 root root 15 Jan 17 01:35 561fe530-4888-4759-97db-f36f607ca18e -> ../../nvme1n1p1

$ sudo mkdir /mnt/e
$ sudo mkdir /mnt/f

sudo vi /etc/fstab 增加挂载信息:

# two old disks
/dev/disk/by-uuid/7c3a3aca-9cde-48a0-957b-eead5b2ab7dc /mnt/e ext4 defaults 0 1
/dev/disk/by-uuid/fcae6bde-4789-4afe-b164-c7189a0bdf5f /mnt/f ext4 defaults 0 1
# one ssd disk
/dev/disk/by-uuid/561fe530-4888-4759-97db-f36f607ca18e /mnt/d ext4 defaults 0 1

执行 sudo mount -av 立即生效。

加到nfs共享中:

sudo chown nobody:nogroup /mnt/d
sudo chmod -R 777 /mnt/d
sudo chown nobody:nogroup /mnt/e
sudo chmod -R 777 /mnt/e
sudo chown nobody:nogroup /mnt/f
sudo chmod -R 777 /mnt/f

sudo vi /etc/exports 增加授权访问:

/mnt/d 192.168.0.0/24(rw,sync,no_subtree_check)
/mnt/d 10.0.0.0/24(rw,sync,no_subtree_check)
/mnt/e 192.168.0.0/24(rw,sync,no_subtree_check)
/mnt/e 10.0.0.0/24(rw,sync,no_subtree_check)
/mnt/f 192.168.0.0/24(rw,sync,no_subtree_check)
/mnt/f 10.0.0.0/24(rw,sync,no_subtree_check)

执行 sudo exportfs -a 立即生效。

配置nfs客户端

安装nfs软件

sudo apt update
sudo apt install nfs-common

挂载nfs server到本地

创建用来挂载 nfs server的本地目录:

sudo mkdir -p /mnt/nfs-skyserver
sudo mkdir -p /mnt/d
sudo mkdir -p /mnt/e
sudo mkdir -p /mnt/f

挂载 nfs server 共享目录到这个客户端本地目录:

sudo mount 10.0.0.40:/mnt/nfs-share /mnt/nfs-skyserver
sudo mount 10.0.0.40:/mnt/d /mnt/d
sudo mount 10.0.0.40:/mnt/e /mnt/e
sudo mount 10.0.0.40:/mnt/f /mnt/f

验证一下:

cd /mnt/nfs-skyserver 
touch a.txt

回到服务器端那边检查一下看文件是否创建。

为了方便使用,创建一些软链接:

mkdir -p ~/data
cd ~/data
ln -s /mnt/nfs-skyserver skyserver
ln -s /mnt/d d
ln -s /mnt/e e
ln -s /mnt/f f

设置永久挂载

上面的挂载在重启之后就会消失,/mnt/nfs-skyserver 会变成一个普通的目录。

为了在机器重启之后继续自动挂载, sudo vi /etc/fstab 打开文件增加以下内容:

# nfs from skyserver
10.0.0.40:/mnt/nfs-share /mnt/nfs-skyserver   nfs   defaults,timeo=15,retrans=5,_netdev	0 0
10.0.0.40:/mnt/d /mnt/d   nfs   defaults,timeo=15,retrans=5,_netdev	0 0
10.0.0.40:/mnt/e /mnt/e   nfs   defaults,timeo=15,retrans=5,_netdev	0 0
10.0.0.40:/mnt/f /mnt/f   nfs   defaults,timeo=15,retrans=5,_netdev	0 0

timeout 时间不要放太长,以备skyserver服务器没有开机时其他机器不至于在启动时阻塞太长时间。

参考资料

5 - 基于raid的nfs文件共享

在 ubuntu server上安装基于raid的nfs,进行文件共享

背景

安装的 ubuntu 20.04 版本,内核为 5.4:

$ uname -a
Linux switch99 5.4.0-192-generic #212-Ubuntu SMP Fri Jul 5 09:47:39 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

硬盘为两块三星 PM983a 900G 22110 ssd 企业版硬盘:

lspci | grep Non-Volatile
03:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM981/PM981/PM983
04:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM981/PM981/PM983

两块硬盘组成 raid0,有两块分区,md0p1安装有 ubuntu 操作系统,md0p2 是用于 timeshift 的备份分区:

Disk /dev/md0: 1.65 TiB, 1799020871680 bytes, 3513712640 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes
Disklabel type: gpt
Disk identifier: 9B47B927-9C18-4026-AD6D-E68F9F3F8751

Device          Start        End    Sectors  Size Type
/dev/md0p1       2048 3405912063 3405910016  1.6T Linux filesystem
/dev/md0p2 3405912064 3513706495  107794432 51.4G Linux filesystem

硬盘速度测试

分别写入 1g / 10g / 100g 三个文件,速度如下:

$ dd if=/dev/zero of=/home/sky/temp/1g.img bs=1G count=1 oflag=dsync 
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 1.39956 s, 767 MB/s

$ dd if=/dev/zero of=/home/sky/temp/10g.img bs=1G count=10 oflag=dsync
10+0 records in
10+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 12.4784 s, 860 MB/s

$ dd if=/dev/zero of=/home/sky/temp/100g.img bs=1G count=100 oflag=dsync
100+0 records in
100+0 records out
107374182400 bytes (107 GB, 100 GiB) copied, 127.14 s, 845 MB/s

$ ls -lh
total 112G
-rw-rw-r-- 1 sky sky 100G Aug  2 09:43 100g.img
-rw-rw-r-- 1 sky sky  10G Aug  2 09:41 10g.img
-rw-rw-r-- 1 sky sky 1.0G Aug  2 09:40 1g.img

分别读取三个文件,速度都在3g附近:

$ dd if=/home/sky/temp/1g.img of=/dev/null bs=8M
128+0 records in
128+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.366136 s, 2.9 GB/s

$ dd if=/home/sky/temp/10g.img of=/dev/null bs=8M
1280+0 records in
1280+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 3.29498 s, 3.3 GB/s

$ dd if=/home/sky/temp/100g.img of=/dev/null bs=8M
12800+0 records in
12800+0 records out
107374182400 bytes (107 GB, 100 GiB) copied, 37.4048 s, 2.9 GB/s

比较遗憾的是,raid0 并没有代理读写速度上的提升,基本维持在单块硬盘的水准。原因暂时不明。

后续考虑换一个大容量的硬盘(2t或者4t)取代这两块小容量(1t)。

搭建 nas 服务器端

安装 nfs server

# 安装
sudo apt install nfs-kernel-server -y

# 开机自启
sudo systemctl start nfs-kernel-server
sudo systemctl enable nfs-kernel-server

# 验证
sudo systemctl status nfs-kernel-server
Jan 29 20:40:15 skynas3 systemd[1]: Starting nfs-server.service - NFS server and services...
Jan 29 20:40:15 skynas3 exportfs[1422]: exportfs: can't open /etc/exports for reading
Jan 29 20:40:16 skynas3 systemd[1]: Finished nfs-server.service - NFS server and services.

配置 UFW 防火墙

安装 nfs 之后必须配置防火墙。先安装 ufw:

sudo apt install ufw -y

安装完成之后第一个必须执行的步骤就是开放 ssh 登录:

sudo ufw allow ssh
sudo ufw enable

然后是容许访问 nfs

sudo ufw allow from 192.168.0.0/16 to any port nfs

重启 ufw 并查看 ufw 状态:

sudo ufw reload
sudo ufw status

可以看到 2049 端口开放给 nfs 了。

$ sudo ufw status
[sudo] password for sky: 
Firewall reloaded
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere                  
2049                       ALLOW       192.168.0.0/16            
22/tcp (v6)                ALLOW       Anywhere (v6) 

备注:暂时不知道为什么 ufw 开启之后就无法访问 nfs 了,上面的 allow rule 没能生效。只好暂时先 sudo ufw disable 关闭防火墙先。

准备共享目录

为了方便后续的管理,采用伪文件系统

sudo mkdir -p /data/{share,pve-share}

sudo chown -R nobody:nogroup /data/share
sudo chown -R nobody:nogroup /data/pve-share

创建 export 目录:

sudo mkdir -p /exports/{share,pve-share}

sudo chown -R nobody:nogroup /exports

修改 /etc/fstab 文件来 mount 伪文件系统和 exports

 sudo vi /etc/fstab

增加如下内容:

# nfs exports
/data/share /exports/share     none bind
/data/pve-share /exports/pve-share    none bind

配置 nfs export

sudo vi /etc/exports

修改 nfs exports 的内容:

/exports/share   192.168.0.0/16(rw,no_root_squash,no_subtree_check,crossmnt,fsid=0)
/exports/pve-share   192.168.0.0/16(rw,no_root_squash,no_subtree_check,crossmnt,fsid=0)

重启 nfs-kernel-server,查看 nfs-kernel-server 的状态:

sudo systemctl restart nfs-kernel-server
sudo systemctl status nfs-kernel-server

输出为:

● nfs-server.service - NFS server and services
     Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor preset: enabled)
     Active: active (exited) since Sun 2024-08-04 01:31:09 UTC; 3h 35min ago
    Process: 10626 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
    Process: 10627 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
   Main PID: 10627 (code=exited, status=0/SUCCESS)

Aug 04 01:31:08 switch99 systemd[1]: Starting NFS server and services...
Aug 04 01:31:09 switch99 systemd[1]: Finished NFS server and services.

验证:

ps -ef | grep nfs

输出为:

root       10636       2  0 01:31 ?        00:00:00 [nfsd]
root       10637       2  0 01:31 ?        00:00:00 [nfsd]
root       10638       2  0 01:31 ?        00:00:00 [nfsd]
root       10639       2  0 01:31 ?        00:00:00 [nfsd]
root       10640       2  0 01:31 ?        00:00:00 [nfsd]
root       10641       2  0 01:31 ?        00:00:00 [nfsd]
root       10642       2  0 01:31 ?        00:00:00 [nfsd]
root       10643       2  0 01:31 ?        00:00:01 [nfsd]

查看当前挂载情况:

sudo showmount -e

输出为:

Export list for switch99:
/exports/pve-share 192.168.0.0/16
/exports/share     192.168.0.0/16

总结

  1. 其实和是不是 raid 没啥关系
  2. ubuntu 的软raid的性能加成为0是万万没有想到的,准备放弃

6 - 安装配置sftp

在ubuntu server上安装sftp

准备group和user

sudo addgroup sftpgroup
sudo useradd -m sftpuser -g sftpgroup
sudo passwd sftpuser

sudo chmod 700 /home/sftpuser/

配置 ssh service

修改 /etc/ssh/sshd_config

Match group sftpgroup
ChrootDirectory /home
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp