# 常见网络场景下的网络要求和配置方法
#### 背景说明
主机迁移过程中，关于数据流向和网络要求是用户最关心和最常遇到的问题。华为云的SMS服务在迁移过程中主要涉及的流量分为两部分：控制流和数据流。
- **控制流**：控制流是指源端主机与云服务管理面之间的通信。为确保迁移过程的顺利进行，需要检查源端主机出方向是否有限制，并确保源端主机能够访问迁移过程中依赖的云服务，包括SMS、IAM、ECS、EVS、VPC、IMS等服务的域名。
- **数据流** ：数据流涉及从源端到目的端的数据传输。为确保数据流的畅通，需要检查目的端服务器的安全组配置，确保目的端安全组对源端IP开放了指定的迁移端口。如果源端主机无法直接访问公网或与目的端直接通信，需要配置代理服务器。在这种情况下，需要额外考虑以下因素：
  - 代理服务器的配置，确保它能够正确转发源端主机的流量。
  
  - 代理服务器的安全组设置，确保对源端IP开放了代理端口。
   
 
#### 源端可以访问公网，源端和目的端公网互通
1. 在源端[下载SMS-Agent并启动](https://support.huaweicloud.com/qs-sms/sms3_02_0004.html)。
2. 在[设置目的端](https://support.huaweicloud.com/qs-sms/sms3_02_0009.html)时选择**公网迁移** 。
   需要确保目的端安全组对源端**公网IP** 开放指定迁移端口。安全组的配置方法请参考[如何配置目的端服务器安全组规则？](https://support.huaweicloud.com/sms_faq/sms_faq_0011.html)
   
 
#### 源端可以访问公网，源端和目的端能直接内网互通
1. 需要您自行确保源端和目的端内网能直接互通。
2. 在源端[下载SMS-Agent并启动](https://support.huaweicloud.com/qs-sms/sms3_02_0004.html)。
3. 在[设置目的端](https://support.huaweicloud.com/qs-sms/sms3_02_0009.html)时选择**私网迁移** 。
   需要确保目的端安全组对源端**内网IP** 开放指定迁移端口。安全组的配置方法请参考[如何配置目的端服务器安全组规则？](https://support.huaweicloud.com/sms_faq/sms_faq_0011.html)
   
 
#### 源端无法访问公网，源端和目的端能直接内网互通
1. 准备一台能访问公网且与源端内网互通的代理服务器。代理机器的安全组要对源端内网IP开放代理端口。
2. 在代理服务器安装代理软件（Linux推荐squid，Windows推荐wproxy）。
3. 在源端下载SMS-Agent安装包，并修改SMS-Agent配置文件中的代理配置参数，然后启动SMS-Agent。详细操作介绍请参考[配置代理服务器访问华为云](https://support.huaweicloud.com/sms_faq/sms_faq_4411.html)。
4. 在[设置目的端](https://support.huaweicloud.com/qs-sms/sms3_02_0009.html)时选择**私网迁移** 。
   需要确保目的端安全组对源端**内网IP** 开放指定迁移端口。安全组的配置方法请参考[如何配置目的端服务器安全组规则？](https://support.huaweicloud.com/sms_faq/sms_faq_0011.html)
   
 
#### 源端无法访问公网，源端和目的端不能直接互通
通过中转代理服务器转发管理面和数据面流量。要求该中转代理服务器能和源端服务器、华为云目的端服务器网络互通。
1. 配置一台管理面代理服务器以访问云服务后端，方法请参考[配置代理服务器访问华为云](https://support.huaweicloud.com/sms_faq/sms_faq_4411.html)中的步骤1。
2. 根据同时迁移的主机数量和数据量大小，创建至少一台数据流代理服务器并安装Nginx。可以执行如下命令进行安装：
   ```
   yum install nginx -y
   ```
   
3. 配置Nginx以转发数据流。以下操作以在CentOS 8上配置为例：
   1. 编辑/etc/ssh/sshd_config文件，找到 port 22这一行，去掉默认的#注释，并在下面新增一行Port 2222。 ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000002068787528.png "点击放大")
      
   
   2. 执行以下命令重启SSH服务，使配置生效：
      ```
      systemctl restart sshd.service
      ```
      
   
   3. 执行以下命令添加防火墙规则：
      ```
      iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEPT
      ```
      
   
   4. 编辑/etc/ssh/sshd_config配置文件，找到 port 22这一行，重新加#恢复注释，然后执行以下命令重启sshd服务：
      ```
      systemctl restart sshd.service
      ```
      
   
   5. 修改/etc/nginx/nginx.conf配置文件。
      - Linux文件级迁移在文件末尾添加以下内容，要求和文件中的http{}同级。有多台主机迁移就添加多个映射，default backend1是映射本代理服务器不可缺少。
        ```
        stream {
            map $remote_addr $backend {
               default backend1;
               源端1号主机ip  backend2;
               源端2号主机ip  backend3;
            }
         
           server {
               listen 22;
               proxy_pass $backend;
           }
         
            upstream backend1 {  server 本代理主机ip:22; }
            upstream backend2 {  server 目的端1号主机ip:22; }
            upstream backend3 {  server 目的端2号主机ip:22; }
        }
        ```
        
      
      - Windows迁移在文件末尾添加以下内容，要求和文件中的http{}同级。有多台主机迁移就添加多个upstream backend_x_xx和map映射，配置样例如下：
        ```
        stream {
            # 1号机器
            upstream backend_1_22 {
                server 目的端机器1号机器ip:22;
            }
            upstream backend_1_8899 {
                server 目的端机器1号机器ip:8899;
            }
            upstream backend_1_8900 {
                server 目的端机器1号机器ip:8900;
            }
            # 2号机器
            upstream backend_2_22 {
                server 目的端机器2号机器ip:22;
            }
            upstream backend_2_8899 {
                server 目的端机器2号机器ip:8899;
            }
            upstream backend_2_8900 {
                server 目的端机器2号机器ip:8900;
            }
            map $remote_addr $backend_22 {
                1号源端服务器ip  "backend_1_22";
                2号源端服务器ip  "backend_2_22";
                default X:22;
            }
            map $remote_addr $backend_8899 {
                1号源端服务器ip  "backend_1_8899";
                2号源端服务器ip  "backend_2_8899";
                default X:8899;
            }
            map $remote_addr $backend_8900 {
                1号源端服务器ip  "backend_1_8900";
                2号源端服务器ip  "backend_2_8900";
                default X:8900;
            }
            server {
                listen 22;
                proxy_pass $backend_22;
            }
            server {
                listen 8899;
                proxy_pass $backend_8899;
            }
            server {
                listen 8900;
                proxy_pass $backend_8900;
            }
        }
        ```
        
       
   
   6. 执行以下命令检查Nginx配置文件是否更改正确：
      ```
      nginx -t
      ```
      当出现successful标识即代表成功。
      
   
   7. 配置文件检查无误后，启动Nginx服务：
      ```
      nginx
      ```
      
   
   8. 使用以下命令来查看Nginx是否正在监听指定的端口：
      ```
      netstat -ntpl
      ```
      
    
4. 在源端下载SMS-Agent安装包，并修改SMS-Agent配置文件中的代理配置参数，然后启动SMS-Agent。详细操作介绍请参考[配置代理服务器访问华为云](https://support.huaweicloud.com/sms_faq/sms_faq_4411.html)中的步骤2。
5. 在[设置目的端](https://support.huaweicloud.com/qs-sms/sms3_02_0009.html)时，将代理服务器的内网IP填写到专线中转IP配置。
   ![](https://support.huaweicloud.com/bestpractice-sms/public_sys-resources/caution_3.0-zh-cn.png)
   需要确保中转代理服务器入方向端口对源端IP开放，目的端主机入方向端口对中转代理服务器IP开放。
   图1填写专线中转IP配置   
   ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000002543357907.png "点击放大")
   
   
 
#### MgC主机批量迁移网络场景
MgC当前不支持完全无公网的迁移场景。
1. 在与源端互通的内网环境中安装迁移中心Agent。安装方法和要求请参考[安装Windows版本的迁移中心Agent](https://support.huaweicloud.com/tg-mgc/mgc_04_0002.html)。
2. 参考[线下主机迁移上云](https://support.huaweicloud.com/bestpractice-mgc/mgc_05_0016.html)最佳实践中的步骤二至步骤八，创建主机批量迁移工作流。在"步骤七：迁移参数配置"中，迁移网络配置说明如下：
   - 如果源端可以访问公网，在迁移网络类型选择公网迁移。
     图2选择公网迁移   
     ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000002543358153.png)
     
     
   
   - 如果源端无法访问公网，您需要准备一台可以访问公网的代理服务器并安装代理软件，方法可参考[配置代理服务器访问华为云](https://support.huaweicloud.com/sms_faq/sms_faq_4411.html)中的步骤1。对该代理服务器的网络要求如下：
     - 该代理机器可以在源端内网，也可以在云上，只需和源端待迁移服务器内网互通即可。
     
     - 需要确保代理服务器入方向代理端口对源端IP开放。
     
     
     配置完代理服务器后，在迁移网络配置选择私网迁移，输入代理服务器的私网IP和代理软件指定的代理端口。
     图3选择私网迁移   
     ![](https://support.huaweicloud.com/bestpractice-sms/zh-cn_image_0000002543358555.png)
     
     
   
   
   ![](https://support.huaweicloud.com/bestpractice-sms/public_sys-resources/caution_3.0-zh-cn.png)
   需要确保目的端安全组对源端服务器开放指定迁移端口。安全组的配置方法请参考[如何配置目的端服务器安全组规则？](https://support.huaweicloud.com/sms_faq/sms_faq_0011.html)
   
 
