CentOS7 「操作日志」

这篇文章不定期更新在使用 CentOS 7 过程中的操作日志。

说明:下列大部分操作都是在阿里云 ECS 进行的。

最小化安装之后

网络管理

1
2
nmcli d
nmtui

激活网卡即可

无法重启 network

network.service - LSB: Bring up/down networking

this error pops up with any issue while setting up network: IP conflict, routing issues, etc.

Can’t start CentOS 7 “network” service

解决办法: 暂时移除 /etc/sysconfig/network-scripts/ifcfg-* 中用不到的网络接口配置。

软件包管理

查看某个软件包的安装信息

1
2
3
4
5
# 查看是否安装某个软件包
rpm -qa {package}

# 列表展示所有相关信息
rpm -ql {package}

正确地更换 SSH 端口

新增端口

!!! 不要直接干掉 22 端口

1
2
3
4
5
# 注意不是修改 /etc/ssh/ssh_config !!!
vim /etc/ssh/sshd_config

# 重启 sshd
systemctl restart sshd

Selinux

1
2
3
yum install policycoreutils-python
semanage port -a -t ssh_port_t -p tcp 1024
semanage port -l | grep ssh

防火墙

CentOS 6 => iptables

1
2
3
4
# 安全起见
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 12345 -j ACCEPT
service iptables save

CentOS 7 => fireware

1
2
3
4
5
6
7
8
9
systemctl stop iptables.service
systemctl unmask firewalld.service
systemctl enable firewalld.service
systemctl start firewalld.service

# 安全起见
firewall-cmd --add-port=22/tcp --permanent
firewall-cmd --add-port=10101/tcp --permanent
firewall-cmd --reload

查看已开放端口

1
2
firewall-cmd --list-ports
/etc/init.d/iptables status

查看 sshd 是否监听了新端口

1
2
3
ss -tnlp | grep sshd
yum install -y net-tools
netstat -tulpn | grep :4444

测试新端口并删除默认端口

!!! 一定要先试试新端口是否可以连接 若能才删除默认 22 端口 否则就等只有恢复磁盘和快照了…

1
2
3
4
vim /etc/ssh/sshd_config

firewall-cmd --permanent --zone=public --remove-port=22/tcp
firewall-cmd --reload

ssh 取消监听 22 端口,就已经配置好了,防火墙只不过是在 ssh 外多一层访问限制。

此时若使用 22 端口连接则会提示:ssh: connect to host {ip} port 22: Connection refused

如果要做的更好还可以将 22 端口的访问流量转向访问者本地:

1
firewall-cmd --permanent --zone=public --add-forward-port=port=22:proto=tcp:toport=22:toaddr=127.0.0.1

此时若使用 22 端口连接则会提示:*_ssh_exchangeidentification: read: Connection reset by peer*。

另外,使用一个未监听或未放行的端口连接的提示是:*_ssh_exchangeidentification: read: Operation timed out*。

撤销重定向:

1
firewall-cmd --permanent --zone=public --remove-forward-port=port=22:proto=tcp:toport=22:toaddr=127.0.0.1

说明:阿里云 ECS 默认没有对端口进行特殊限制,因此可以不用设置安全组规则

阿里云 ECS/CentOS 7 启用 IPv6(6in4)

获取免费 IPv4 + IPv6 地址

https://www.tunnelbroker.net 注册即可,详情略。

只需要注意一点,要用阿里云 ECS 的「公网」 IPv4 才能换 IPv6。换取成功 IPv6 同时还会有一个国外 IPv4

配置 CentOS 7

启用 IPv6

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
vim /etc/modprobe.d/disable_ipv6.conf

# ...
options ipv6 disable=0 # 默认是 1
# ...

vim /etc/sysconfig/network

# ...
NETWORKING_IPV6=yes
# ...

vim /etc/sysctl.conf # 有则改 无则追加

# ...
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0

# 测试
lsmod | grep ipv6
ifconfig | grep -i inet6

配置 IPv6 代理

下面命令根据上面网址创建 IPv6 成功后选择示例配置中的 Linux-route2 模版改动如下:

1
2
3
4
5
6
7
8
9
modprobe ipv6
ip tunnel add he-ipv6 mode sit remote <国外代理 IPv4> local <CentOS 7 内网 IPv4> ttl 255
ip link set he-ipv6 up
ip addr add <国外代理 IPv6> dev he-ipv6 # 例如:2001:xxx:xxxx:xx::2/64
ip -6 route add ::/0 dev he-ipv6

# 测试
ip -f inet6 addr
ifconfig he-ipv6

注意这里的 CentOS 7 内网 IPv4 并不是阿里云提供的弹性公网 IP,而是系统内的 IPv4 地址。用 ip -f inet addr 查看得到的那个,否则会出现 ping6 失败。(根阿里云 ECS 的网络类型、安全组什么的都无关)

NOTE: When behind a firewall appliance that passes protocol 41, use the IPv4 address you get from your appliance’s DHCP service instead of the IPv4 endpoint you provided to our broker.

监听 IPv6 地址

1
2
3
4
5
6
7
8
9
10
11
# nginx
# ...

listen 80;
listen [::]:80 ipv6only=off;
listen [::]:443 ssl;
listen 443 ssl http2;
# ...

# 测试是否监听成功 (`State` 为 LISTEN 的记录是否有 `tcp6` 的 Proto)
netstat -tuln

配置 IPv6 DNS

不配置 IPv6 DNS 服务器,直接在 CentOS 7 使用 ping6 命令(Windows ping -6)ping IPv6 地址是 ping 不通的。

1
2
3
4
5
6
7
8
9
vi /etc/resolv.conf

options timeout:1 attempts:1 rotate single-request-reopen
; generated by /usr/sbin/dhclient-script
; ...

; Google IPv6 DNS
nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844

然后测试是否能够解析 IPv6,如果有正常输出则表示 DNS64 配置成功。

1
ping6 -c 3 ipv6.google.com

防火墙放行 41 端口

When using 6to4, you do not transmit IPv6 packets. Instead, special IPv4 packets are wrapped around IPv6 payloads. These packets have IPv4 protocol 41, as defined by RFC 2473.

1
2
3
4
5
6
7
# firewall-cmd
firewall-cmd --add-port=41/tcp --permanent
firewall-cmd --reload

# iptables
iptables -t filter -I INPUT -p 41 -j ACCEPT
iptables -t filter -I OUTPUT -p 41 -j ACCEPT

域名解析新增 AAAA 记录

到域名解析处分别添加主机为 www@,值为上面获取到的 IPv6 地址的 AAAA 记录。

测试网址 IPv6 连接情况

访问:Is Your Site IPv6 ready?,输入自己的网站域名即可检测。

FAQ

  • 为什么手机测试依然不能连接 IPv6 地址?

请确保手机网络环境支持 IPv6 解析。

rsync

每小时同步数据库备份

1
0 */1 * * * /usr/bin/rsync -zrtopg --progress -e ssh user@example.com:/data/to/be/synced/ /path/to/store/backup

防火墙

  • 拒绝某个 IP 访问
1
2
3
4
5
6
7
8
9
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='118.89.37.80' reject"
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='47.52.149.164' reject"

firewall-cmd --reload

firewall-cmd --list-rich-rules

# 取消已拒绝的对某个 IP 的访问限制
firewall-cmd --permanent --remove-rich-rule="rule family='ipv4' source address='118.89.37.80' port protocol='tcp' port='80' reject"

参考

Powered by Hexo and Hexo-theme-hiker

Copyright © 2017 - 2023 Keep It Simple And Stupid All Rights Reserved.

访客数 : | 访问量 :