最近实验室改造了两台服务器, 准备用作数据备份以及模型训练. 拿到手时候店老板已经预装了Ubuntu 18.04.4以及Nvidia显卡驱动.
需要做的就是将数据盘格式化并且挂载到系统中去, 设置两台服务器的网络(只有一个网口能供一台服务器连学校内网,另一台服务器与这台服务器相连), 同时设置网络代理让服务器可以访问外网.
第一台服务器(与校网直连)配置
设置网络
校园网配制省略, 另一台服务器与这台服务器相连, 二者之间仅需配置静态IP(校网直连服务器192.168.0.1, 另一台服务器192.168.0.2). 使用图形化界面配置比较简单, 这里主要讲一下使用netplan进行的配置.
Netplan配置
修改/etc/netplan/*.yaml为:
network:
version: 2
renderer: networkd
ethernets:
enp4s0:
addresses:
- *.*.*.*/24
gateway4: *.*.*.1
nameservers:
addresses:
- *.*.*.*
enp5s0:
addresses:
- 192.168.0.1/24
其中enp4s0是连接校园网的接口, enp5s0是连接另一台电脑的接口, 另一台电脑的配置类似. sudo netplan generate验证配置文件语法, sudo netplan apply应用网络设置. 同时要关闭NetworkManager: sudo systemctl disable NetworkManager && sudo systemctl stop NetworkManager.
代理配置
将自己的电脑配置为http代理服务器让实验室服务器连接外网.
自己电脑的配置(http代理服务器配置)
我的电脑运行Linux Mint 20.04
安装tinyproxy: sudo apt update && sudo apt install tinyproxy. 随后修改/etc/tinyproxy/tinyproxy.conf, 修改使用端口以及配置允许访问的IP: 将Port 8888改为自己要用的端口, 将Allow 127.0.0.1注释或者改为与校网相连的服务器的IP. 重启tinyproxy并将其设置为自启动: sudo systemctl enable tinyproxy && sudo systemctl restart tinyproxy. 最后配置防火墙sudo ufw allow from 校网服务器IP to any port tinyproxy开放的端口.
服务器http代理配置
跳过图形化界面的代理配置, 因为Ubuntu图形化界面的代理配置对ssh连接无效. 在~/.bashrc中加入
export http_proxy=http://自己电脑的IP:tinyproxy开放的端口
export https_proxy=http://自己电脑的IP:tinyproxy开放的端口
export no_proxy=localhost,127.0.0.1,localaddress,.localdomain.com,192.168.0.2
重新登入服务器就能够上网了. 如果要取消代理, 则用unset http_proxy && unset https_proxy.
实际使用中发现apt并不走代理, 所以设置其代理配置/etc/apt/apt.conf.d/98proxy:
Acquire::http::proxy "http://自己电脑的IP:tinyproxy开放的端口/";
Acquire::https::proxy "http://自己电脑的IP:tinyproxy开放的端口/";
ssh也不走代理, 导致校网外的电脑无法连上, 可以在连接时候加入参数-oProxyCommand="nc -X connect -x 自己电脑IP:tinyproxy开放端口 %h %p"使其走代理连接.
在命令行中打开的R走代理, 但是在RStudio server中打开的R不走代理, 故编辑/etc/R/Renviron.site, 在最后加入:
http_proxy=http://自己电脑的IP:tinyproxy开放的端口/
https_proxy=http://自己电脑的IP:tinyproxy开放的端口/
端口转发
因为不与校网直连的服务器还无法通过ssh连接控制以及上网, 需要将其22端口(ssh的端口, 192.168.0.2:22)暴露到校网(我选择2222端口), 同时将tinyproxy的端口转发给非直连的服务器.
在与校网直连的电脑上安装redir, 使用redir进行端口转发:
sudo apt update
sudo apt install redir
sudo redir :2222 192.168.0.2:22
sudo redir :tinyproxy开放的端口 自己电脑的IP:tinyproxy开放的端口
利用/etc/rc.local设置开机自启动: 创建文件/etc/rc.local, 写入
#! /bin/sh
/usr/bin/redir :2222 192.168.0.2:22
/usr/bin/redir :tinyproxy开放的端口 自己电脑的IP:tinyproxy开放的端口
exit 0
将该文件设置为可执行: sudo chmod +x /etc/rc.local
防火墙设置
sudo ufw enable
sudo ufw allow 22
sudo ufw allow 2222
sudo ufw allow from 192.168.0.2 to any port tinyproxy开放的端口
sudo ufw allow from 192.168.0.122 to any port nfs # (后面要用)
sudo ufw default deny
sudo systemctl enable ufw
文件系统设置
我准备将数据盘格式化为xfs系统(对大文件支持良好), 同时挂载到/home目录, 并将其中的/home/data目录使用nfs共享给另一台服务器.
首先安装xfsprogs: sudo apt install xfsprogs 随后使用parted将数据盘格式化为xfs (省略). 挂载数据盘将当前/home目录的内容复制进去, 注意设置正确的使用者与权限sudo chown -R 用户名(:用户组名) 数据盘中的用户文件夹
sudo blkid查找到刚格式化为xfs的数据盘的UUID, 随后编辑/etc/fstab, 在最后加入:
UUID=刚格式化为xfs的数据盘的UUID /home xfs defaults 0 1
重启验证数据盘是否正常挂载df -h.
nfs server设置
安装nfs-kernel-server: sudo apt install nfs-kernel-server. 随后编辑/etc/exports, 加入:
/home/data 192.168.0.122(ro,async,no_subtree_check)
随后开启服务sudo exportfs -ra && sudo systemctl enable nfs-server && sudo systemctl start nfs-server. 开启防火墙(前面提到的): sudo ufw allow from 192.168.0.122 to any port nfs
第二台服务器配置(与校网不连接)
网络配置
Netplan配置
修改/etc/netplan/*.yaml为:
network:
version: 2
renderer: networkd
ethernets:
enp5s0:
addresses:
- 192.168.0.2/24
执行:
sudo netplan generate
sudo netplan apply
sudo systemctl disable NetworkManager && sudo systemctl stop NetworkManager
代理配置
~/.bashrc:
export http_proxy=http://192.168.0.1:tinyproxy开放的端口
export https_proxy=https://192.168.0.1:tinyproxy开放的端口
export no_proxy=localhost,127.0.0.1,localaddress,.localdomain.com,192.168.0.1
/etc/apt/apt.conf.d/98proxy:
Acquire::http::proxy "http://192.168.0.1:tinyproxy开放的端口/";
Acquire::https::proxy "https://192.168.0.1:tinyproxy开放的端口/";
ssh -oProxyCommand="nc -X connect -x 192.168.0.1:tinyproxy开放端口 %h %p" username@IP
/etc/R/Renviron.site:
http_proxy=http://192.168.0.1:tinyproxy开放的端口/
https_proxy=http://192.168.0.1:tinyproxy开放的端口/
防火墙配置
udo ufw enable
sudo ufw allow 22
sudo ufw default deny
sudo systemctl enable ufw
文件系统设置
数据盘格式化为xfs并且挂载的步骤同上.
nfs client设置
安装nfs client: sudo apt install nfs-common 创建挂载点: sudo mkdir /home/data 编辑/etc/fstab, 在最后加入后重启即可:
192.168.0.144:/home/data /home/data nfs defaults,timeo=900,retrans=5,_netdev
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!