Amazon AWS EC2 如何安装 CentOS7、修改主机名(hostname)、开启 IPv6

一、背景

关于 AWS EC2 主机名(hostname):Amazon EC2 实例主机名是从在启动时动态分配给实例的 IP 地址派生的,其形式为类似于 ip-12-34-56-78 这样的内网 DNS 前缀,但是每次停止或重新启动 Amazon EC2 实例时(除非使用弹性 IP),都会收到新的私有 IPv4 地址、私有 DNS 主机名和系统主机名,这对于我们管理是十分不便的,那么如何 正确 地修改成我们需要的呢?

二、实操

1、安装 CentOS 7

AWS EC2 启动新实例时,快速启动是找不到 CetnOS 的,正确的做法是点左侧的社区 AMI,然后输入 AMI ID 搜索,这里有一个坑,搜索 CentOS 会出现一大票结果,根本看不出哪个是原版,所以最好的办法是搜索 ID,然后选择即可,ID 在这里可以找到:Cloud/AWS

比如日本机房是 ap-northeast-1,对应的 AMI ID 是 ami-571e3c30,韩国机房是 ap-northeast-2,对应的 AMI ID 是 ami-97cb19f9,这里又一个坑,不对应机房和 ID,是搜不到结果滴。

AMIID.jpg

CreateCentOS.jpg

接下来的操作跟平常创建一样,这里就不赘述了。

2018/05/25 更新

现已支持直接搜索关键字 “CentOS”,无需上述的先找到 AMI ID 才能定位。

2、修改 hostname

现网上教程基本是参考 官方 wiki 写的,然而 wiki 里写的很清楚了,仅适用于 Amazon Linux,各大教程却改个标题就说 Ubuntu 这样改、CentOS 这样改。。。甚至还有说直接改 /etc/hostname 完事儿的。。。

对于正常的主机,确实是改下 /etc/hostname 就可以显示我们想要的主机名,但是 AWS EC2 却是个奇葩货,主机名都是开机时自动从云端获取并写到 /etc/hostname 中,这就是为什么直接修改 /etc/hostname 无效的原因。

CentOS7 正确的修改方法是:

① 从 shell 运行 hostnamectl 命令,以更新 RHEL 7或Centos 7 Linux 实例的主机名

sudo hostnamectl set-hostname --static <persistent_host_name>

② 使用 文本编辑器更新 RHEL 7 或 Centos 7 Linux 实例上的 /etc/cloud/cloud.cfg 文件

sudo vim /etc/cloud/cloud.cfg

将以下字符串添加到文件的底部,以确保在重新启动/重新引导之间保留新的主机名

preserve_hostname:true

退出并保存

③ 修改 /etc/hosts,添加主机名解析,防止依赖于主机名的服务出错

sudo vim /etc/hosts

将以下字符串添加到文件的底部

127.0.0.1 <persistent_host_name>
::1       <persistent_host_name>

保存后重启即可看到刚设置的主机名,是不是很简单?

3、启用 IPv6

Amazon 原先只支持在美国东部通过弹性负载平衡来启用 IPv6,好消息是现在 EC2 已支持 IPv6 直连(为什么启用 IPv6)。

方法如下:

① 将 Amazon 提供的 IPv6 CIDR 块与 VPC 和子网相关联

将 IPv6 CIDR 块与 VPC 关联
  • 打开 Amazon VPC 控制台
  • 在导航窗格中,选中您的 VPC。
  • 点击上方的操作,编辑 CIDR:

IPv6.ENABLE.CIDR.png

  • 选择添加 IPv6 CIDR,添加 IPv6 CIDR 块后,直接点 “关闭” 即可:

IPv6.ENABLE.CIDR.SET.png

将 IPv6 CIDR 块与子网相关联
  • 在导航窗格中,选择子网。
  • 选择子网,选择子网操作,编辑 IPv6 CIDR:

IPv6.Subnet.CIDR.png

  • 选择添加 IPv6 CIDR。指定子网的十六进制对(例如00),并点击打勾图标确认输入,然后关闭:

IPv6.Subnet.CIDR.add.png

  • 一般会存在多个子网,依次重复步骤即可。

② 更新您的路由表

  • 在导航窗格中,点击路由表,然后选中与私有子网关联的路由表。
  • 在路由选项卡中,点击编辑,添加其他路由,目标为 ::/0 ,目标为 Internet 网关ID(参照 0.0.0.0/0 目标),然后保存:

IPv6.Route.add.png

③ 更新安全组规则

  • 在导航窗格中,点击安全组,然后选中您的服务器所采用的安全组。
  • 在 “入站规则” 选项卡中,选择“ 编辑”。
  • 对于每个规则,点击再添加一条规则,相应添加类似截图的规则,并在完成后保存(此处根据自己需要设置出入站规则):

IPv6.Group.add.png

  • “出站规则” 类似地添加。
  • 如果有多个安全组,也需要每个都修改以下。

④ 将 IPv6 地址分配给实例

  • 回到 EC2 实例,选择要分配 IPv6 的实例(某些实例可能不支持)。
  • 点击上方的操作,联网,管理IP地址:

EC2.ADD.png

  • 在 IPv6 地址下,点击分配新的 IP。您可以从子网范围输入特定的 IPv6 地址,也可以留空自动分配,然后点 是,更新 即可获得 IPv6 地址:

EC2.ADD.IPV6.png

⑤ 设置主机参数以支持 IPv6

使用文本编辑器,打开 /etc/sysconfig/network-scripts/ifcfg-eth0 并找到以下行:

IPV6INIT="no"

将 no 修改为 yes,并添加以下两行(如果没有 IPV6INIT 标识,直接添加下方两行即可):

DHCPV6C=yes
NM_CONTROLLED=no

⑥ 打开 /etc/sysconfig/network,添加或修改以下行,并保存更改:

NETWORKING_IPV6=yes

⑦ 通过运行以下命令在实例上重新启动网络:

sudo service network restart

⑧ 验证一下:

ifconfig

看到类似于 inet6 2406:... 字符串说明已成功启用。

IPv6.jpg

⑨ 重启失效问题:

新增脚本如下:

# vim /etc/cloud/cloud.cfg.d/99-custom-networking.cfg
network:
  version: 1
  config:
  - type: physical
    name: eth0
    subnets:
      - type: dhcp
      - type: dhcp6

参考链接:
1、Migrating to IPv6
2、How do I assign a static hostname to a private Amazon EC2 instance running RHEL 7 or Centos 7?
3、Ubuntu 修改主机名 hostname 方法


更新历史:
1、2018/05/25:增加截图,图文更形象!


ArmxMod for Typecho
个性化、自适应、功能强大的响应式主题

推广

 继续浏览关于 awscentosamazonhostnameipv6ec2 的文章

 本文最后更新于 2018/12/31 19:36:12,可能因经年累月而与现状有所差异

 引用转载请注明:VirCloud's Blog > 系统 > Amazon AWS EC2 如何安装 CentOS7、修改主机名(hostname)、开启 IPv6