# 源端在云上，不能访问公网，需要全程无公网迁移
本指导针对源端和目的端均位于华为云，且源端无法访问公网并希望实现全程无公网迁移的场景，提供相应的解决方案和操作指南。
#### 源端和目的端同区域的全程无公网迁移
该场景需要满足的条件和具体的操作步骤如下：
#### 前提条件
源端和目的端位于同一Region并且所属的VPC网络互通，同时所处Region属于SMS内网支持的Region。具体支持的Region请参见下表。
表1支持无公网迁移的Region内网域名 
| 区域名称    | 区域代号       | 内网域名                              |
|:---|:---|:---|
| 华南-广州   | cn-south-1 | sms.cn-south-1.myhuaweicloud.com  |
| 华北-北京四 | cn-north-4 | sms.cn-north-4.myhuaweicloud.com |
| 华东-上海一  | cn-east-3     | sms.cn-east-3.myhuaweicloud.com    |
| 华东-上海二   | cn-east-2   | sms.cn-east-2.myhuaweicloud.com  |
   
#### 创建迁移任务
1. [在源端服务器下载并安装SMS-Agent](https://support.huaweicloud.com/qs-sms/sms3_02_0004.html)。
2. 用管理员账号登录源端服务器并启动SMS-Agent，输入AK、SK 和sms_domain信息。 
   本次启动是为了拉取SMS的配置文件，启动会报错失败，属于正常现象，因为此时云服务域名还没有替换成内网域名。
   
   
3. 根据源端服务器的操作系统，执行以下命令替换云服务域名： 
   - Linux系统，执行以下命令。
     ```
     cd SMS-Agent/agent/config  # 进入配置文件目录
     sed -i 's/sms.ap-southeast-1.myhuaweicloud.com/sms.区域代号.myhuaweicloud.com/g' ./cloud-region.json  # 替换SMS内网域名
     sed -i 's/iam.myhuaweicloud.com/iam.区域代号.myhuaweicloud.com/g' ./cloud-region.json  # 替换IAM内网域名
     sed -i 's/mainRegion.*/mainRegion": "区域代号",/g' ./cloud-region.json  # 替换mainRegion代号
     ```
     
   
   - Windows系统（Python 2版本），运行PowerShell，执行以下命令。
     ```
     (Get-Content -Path "C:\SMS-Agent-Py2\config\cloud-region.json" -Raw) -replace "iam.myhuaweicloud.com", "iam.区域代号.myhuaweicloud.com" | Set-Content -Path "C:\SMS-Agent-Py2\config\cloud-region.json"
     (Get-Content -Path "C:\SMS-Agent-Py2\config\cloud-region.json" -Raw) -replace "sms.ap-southeast-1.myhuaweicloud.com", "sms.区域代号.myhuaweicloud.com" | Set-Content -Path "C:\SMS-Agent-Py2\config\cloud-region.json"
     (Get-Content -Path "C:\SMS-Agent-Py2\config\cloud-region.json" -Raw) -replace '"mainRegion":.*', '"mainRegion": "区域代号",' | Set-Content -Path "C:\SMS-Agent-Py2\config\cloud-region.json"
     ```
     
   
   - Windows系统（Python 3版本），运行PowerShell，执行以下命令。
     ```
     (Get-Content -Path "C:\SMS-Agent-Py3\config\cloud-region.json" -Raw) -replace "iam.myhuaweicloud.com", "iam.区域代号.myhuaweicloud.com" | Set-Content -Path "C:\SMS-Agent-Py3\config\cloud-region.json"
     (Get-Content -Path "C:\SMS-Agent-Py3\config\cloud-region.json" -Raw) -replace "sms.ap-southeast-1.myhuaweicloud.com", "sms.区域代号.myhuaweicloud.com" | Set-Content -Path "C:\SMS-Agent-Py3\config\cloud-region.json"
     (Get-Content -Path "C:\SMS-Agent-Py3\config\cloud-region.json" -Raw) -replace '"mainRegion":.*', '"mainRegion": "区域代号",' | Set-Content -Path "C:\SMS-Agent-Py3\config\cloud-region.json"
     ```
     
   
   
   
   
4. 重启SMS-Agent，输入AK、SK，域名处输入y，确认使用上次输入的域名。等待出现成功标识后，前往SMS控制台[设置迁移目的端](https://support.huaweicloud.com/qs-sms/sms3_02_0009.html)并启动迁移。需要特别注意，在配置目的端时"网络类型"选择"私网"。
 
#### 源端和目的端不在同一区域的全程无公网迁移
该场景需要满足的条件和具体的操作步骤如下：
#### 前提条件
目的端Region属于SMS管理面内网支持的Region。具体支持的Region请参见下表。
表2支持无公网迁移的Region内网域名 
| 区域名称    | 区域代号       | 内网域名                              |
|:---|:---|:---|
| 华南-广州   | cn-south-1 | sms.cn-south-1.myhuaweicloud.com  |
| 华北-北京四 | cn-north-4 | sms.cn-north-4.myhuaweicloud.com |
| 华东-上海一  | cn-east-3     | sms.cn-east-3.myhuaweicloud.com    |
| 华东-上海二   | cn-east-2   | sms.cn-east-2.myhuaweicloud.com  |
   
#### 创建迁移任务
本场景需要在目的端Region创建一台代理服务器，以下是具体步骤和要求：
1. 准备代理服务器。 
   - 代理服务器要求：与目的端服务器处于同一Region，无需配置EIP，仅需通过内网访问云服务。
   
   - 代理软件选择：推荐使用squid代理软件。
   
   - 代理服务器安全组配置：代理服务器的安全组需要对源端服务器的内网IP开放代理端口。
   
   
   
   
2. 安装和配置代理软件，方法请参见：[配置代理服务器](https://support.huaweicloud.com/sms_faq/sms_faq_4411.html#section2)。
3. 在源端服务器安装和配置SMS-Agent，方法请参见：[在源端服务器下载并安装迁移Agent](https://support.huaweicloud.com/sms_faq/sms_faq_4411.html#section3)。
4. SMS-Agent启动成功后，前往SMS控制台[设置迁移目的端](https://support.huaweicloud.com/qs-sms/sms3_02_0009.html)并启动迁移。需要特别注意，在配置目的端时"网络类型"选择"私网"。
 
