服务器必备基础配置(Ubuntu) 本文目的 配置VPN I

本文目的

  • 记录真实环境中服务器必须配置;

配置VPN

推荐使用L2TPIPSec方式建立VPN,成熟的标准方案,拥有较好的安全性。

  • L2TP:单台管理终端或移动终端;
  • IPSec:多台固定的管理终端一般在入口路由器上配置IPSec实现互联。

IPMI管理口配置

当前市场上的服务器一般都支持管理口来对服务器进行管理,利用管理口功能,我们可以远程实现系统的开关机、重启、配置更改、安装系统等,基本能使我们不再需要申请进入电信机房来解决各种问题。
配置管理口时需要注意以下问题:

  1. 管理口配置为静态IP
  2. 去掉默认帐户,使用独有的用户名和密码

Ubuntu基本配置

  1. 更新源和系统软件

1
2
3
4
复制代码sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vim /etc/apt/sources.list # 添加源,推荐使用国内阿里/网易相应的源
sudo apt-get update 或 sudo apt update
sudo apt-get upgrade 或 sudo apt upgrade
  1. 网络及DNS配置

Ubuntu 16.04 及之前版本
配置静态IP sudo vim /etc/network/interface

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
复制代码# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

#auto eth0
#iface eth0 inet dhcp

auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1

配置本机hosts sudo vim /etc/hosts
注释这一行:127.0.1.1 ubuntu
修改机器名或添加内网地址,不要让机器名解析为回路地址

配置 DNS 服务器地址 sudo vim /etc/resolvconf/resolv.conf.d/base
添加:nameserver 192.168.1.114

Ubuntu 18.04 采用 netplan 作为网络配置管理,与16.04及之前的版本区别很大
去掉文件 /etc/network/interfaces 中的所有配置
修改配置文件:sudo vim /etc/netplan/50-cloud-init.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
复制代码# This file is generated from information provided by
# the datasource. Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
eth0:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 192.168.1.114
search:
- corp.xxx.com
version: 2

然后运行命令使配置立即生效:sudo netplan apply

:如需在本地配置专用 DNS 服务器,可参考 内网配置DHCP+DNS(dnsmasq)

  1. SSH安全配置

机器只允许内部IP地址SSH进去,只允许指定用户进行SSH,其他用户都不允许SSH
/etc/hosts.allow添加 sshd:192.168.2.,192.168.3.10:allow
/etc/hosts.deny添加 sshd : ALL
/etc/ssh/sshd_config
禁用root登陆,修改:PermitRootLogin no
添加允许登陆的用户:AllowUsers username username为允许登陆的用户名
hosts.allow, hosts.deny修改后立即生效
sshd_config修改后需要重启ssh服务:sudo service ssh restart, 重启不会断开当前连接

  1. Ubuntu开机启动

Ubuntu需要开机启动的命令添加到/etc/rc.local

  1. 配置NTP时间服务器

自动与Ubuntu时间服务器同步,并且本机可以作为时间服务器使用,需要等待几分钟后才可以同步到最新:
$ sudo apt-get install ntp
安装之后ntp自动启动

  1. 优化内存使用(内存足够时推荐禁用交换分区)

swappiness值的大小决定如何使用swap分区,系统默认为60,也就是说,你的内存在使用到100-60=40%的时候,就开始出现有交换分区的使用。

1
2
3
4
5
6
复制代码cat /proc/sys/vm/swappiness  # 查看swapness:
sysctl vm.swappiness=5 # 这只是临时调整的方法,重启后会回到默认设置的
# 要想永久调整的话,需要将/etc/sysctl.conf修改:
sudo vim /etc/sysctl.conf
添加:vm.swappiness=5
执行:sudo sysctl -p 立即生效
  1. 禁用交换分区

命令:swapon -s 查看交换分区
通过命令: swapoff -a 禁用交换分区。将该命令命令添加到”/etc/rc.local”中,开机启动时就禁用交换分区。
要永久禁掉swap分区,打开文件/etc/fstab注释掉swap那一行
建议:在所有机器上禁用交换分区

  1. 多网卡bond配置

现在服务器一般都不止一个网口,通过bond将多个网口合并成一个逻辑网口,能够充分利用多个网口的带宽。
bond的七种模式,bond=0~6

  1. mode=0(balance-rr)(平衡抡循环策略)
  2. mode=1(active-backup)(主-备份策略)
  3. mode=2(balance-xor)(平衡策略)
  4. mode=3(broadcast)(广播策略)
  5. mode=4(802.3ad)(IEEE 802.3ad 动态链接聚合)
  6. mode=5(balance-tlb)(适配器传输负载均衡)
  7. mode=6(balance-alb)(适配器适应性负载均衡)

常用的有三种
mode=0:平衡负载模式,有自动备援,但需要”Switch”支援及设定。
mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援。
mode=6:平衡负载模式,有自动备援,不必”Switch”支援及设定。

查看是否支持bond: # modinfo bonding |more

(1) Ubuntu 14.04 bond 配置

安装 $ sudo apt-get install ifenslave
修改文件:sudo vim /etc/modules 添加:bonding mode=6 miimon=100
修改文件:sudo vim /etc/network/interfaces

1
2
3
4
5
6
7
8
9
10
11
12
13
14
复制代码# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

auto bond0
iface bond0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
post-up ifenslave bond0 eth0 eth1
pre-down ifenslave -d bond0 eth0 eth1

(2) Ubuntu 16.04配置

与14.04基本相同,唯一的区别在/etc/network/interfaces
首先还是安装:$ sudo apt-get install ifenslave
修改文件:sudo vim /etc/modules 添加:bonding mode=6 miimon=100
修改文件:sudo vim /etc/network/interfaces

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
复制代码# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

#source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual
bond-master bond0

auto eth1
iface eth1 inet manual
bond-master bond0

auto bond0
iface bond0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
bond-slaves eth0 eth1
bond-lacp-rate 1
bond-mode 6
bond-miimon 100

(3) Ubuntu 18.04配置

Ubuntu 18.04 采用netplan作为网络配置管理,与16.04及之前的版本区别很大
去掉文件 /etc/network/interfaces 中的所有配置
修改配置文件:sudo vim /etc/netplan/50-cloud-init.yaml

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
复制代码# This file is generated from information provided by
# the datasource. Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
bonds:
bond0:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
interfaces:
- eth0
- eth1
nameservers:
addresses:
- 192.168.1.114
search:
- corp.xxx.com
parameters:
mode: balance-alb
ethernets:
eth0: {}
eth1: {}
version: 2

然后运行命令使配置立即生效:sudo netplan apply

  1. keepalived配置虚拟IP

一般服务推荐使用虚拟IP,方便配置备用服务器
安装:sudo apt-get install keepalived
编辑配置文件:sudo vim /etc/keepalived/keepalived.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
复制代码vrrp_instance VI_1 {
state MASTER
interface em2
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 51
}
virtual_ipaddress {
192.168.2.4/24
192.168.2.5/24
}
}

其中:priority表示优先级,高优先级的服务器作为MASTER,低优先级的作为SLAVE
查看虚拟IP:ip addr

  1. Ubuntu LVM扩容

  1. 查看磁盘设备:ls /dev/sd*,新添加三块磁盘为例
    显示:/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sdb /dev/sdc /dev/sdd
    其中sdb,sdc,sdd为三个新磁盘
  2. 磁盘上创建物理分区:fdisk /dev/sdb
    p 查看分区表,使用 gpt 分区表(Disklabel type),gpt支持大磁盘
    n 创建分区,都使用默认值
    t 更改分区类型,使用 Linux LVM
    w 保存更改并退出
    其他磁盘类似
  3. 创建物理卷:pvcreate /dev/sdd1pvcreate /dev/sd[b,c,d]1直接创建所有物理卷
  4. 将物理卷添加到卷组,使用vgdisplay查看卷组
    vgextend host-vg /dev/sdb1
    vgextend host-vg /dev/sdb1 /dev/sdc1 /dev/sdd1
  5. 对逻辑卷扩容:lvextend -l +100%FREE /dev/host-vg/root
  6. 让系统重新识别:resize2fs /dev/host-vg/root
  1. Ubuntu挂载U盘

  1. 插入U盘,之后需要设置挂载点。
  2. 首先运行命令fdisk -l查看磁盘信息,由信息可得其路径“/dev/sdb1”,磁盘格式为fat32.
  3. 运行挂载命令:mount -t vfat /dev/sdb1 /media
  4. 运行命令cd media进入挂载U盘的主目录。
  5. 运行ls命令可以查看目录下的文件。
添加新磁盘并挂载到指定目录

创建分区 sudo fdisk /dev/sda
格式化 sudo mkfs.ext4 /dev/sda1
挂载到对应目录 sudo mount /dev/sda1 /mnt

  1. 安装docker

  1. DaoCloud快速安装docker:get.daocloud.io/#install-do…
  2. docker命令不再需要sudo
1
2
3
4
复制代码# 添加当前用户到docker组
sudo usermod -aG docker $USER
#切换当前会话到新 group 或者重启 X 会话
newgrp - docker 或 pkill X
  1. 解决docker pull默认使用https问题
1
2
3
4
5
6
7
复制代码# Ubuntu 14.04
sudo vim /etc/default/docker, 添加
DOCKER_OPTS="--insecure-registry 0.0.0.0/0"
# Ubuntu 16.04
sudo vim /etc/docker/daemon.json, 添加
{"insecure-registries":["0.0.0.0/0"]}
# 之后重启docker服务
  1. 配置本地 docker Hub

1
2
3
4
5
6
7
复制代码docker run -d --restart=always --name myDockerHub \
-p 5000:5000 \
-v /home/${USER}/docker-registry:/opt/docker-image \
-e SQLALCHEMY_INDEX_DATABASE=sqlite:////opt/docker-image/docker-registry.db \
-e STORAGE_PATH=/opt/docker-image/data registry:0.9.0

echo -e "\033[32;49;1mMy-Docker-Hub started......\033[39;49;0m"
  1. 禁用IPv6

修改 /etc/sysctl.conf 文件,添加:

1
2
3
4
复制代码net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1

然后运行:sudo sysctl -p,就可以用 ifconfigip a 命令查看是否没有 IPv6 地址了

  1. 安装Linux-dash系统监视工具

Linux-dash 是一个低开销 Linux 服务器监控系统,基于 Web 的监控界面。

  1. 安装apache2: apt-get install apache2
  2. 安装php5: apt-get install php5
  3. 修改apache2的端口:vim /etc/apache2/ports.conf
  4. 下载Linux-dash:
    cd /var/www/html/
    git clone https://github.com/afaqurk/linux-dash.git
  5. 重启apache2:sudo service apache2 restart
  6. 通过浏览器登陆监视页面: http://ip:port/linux-dash

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%