出于某种原因,让我们说您要将IP地址从ent12移到ent14。 以下是您必须完成的步骤:

  1. 保存所有有关ent12的信息。 如果在此以太网上定义了默认路由,则也要保存它。
  2. 保存ent12的所有路由和路由信息。 请注意,在我们的情况下,ent12是用于登录服务器的主要以太网。 因此,接下来的步骤必须在控制台上完成,否则,您将丢失会话,并且只能从控制台上登录。
  3. 关闭并分离ent12(此时,您的用户将无法登录此服务器)。
  4. 在ent14上定义IP地址。
  5. 如果是在ent12上定义的,则在ent14上定义默认路由。 此时,某些用户也许可以登录,但有些用户可能要等到完成下一步才能登录。
  6. 在ent14上重新创建路由(完成此步骤后,用户应该可以登录)。
  7. 如果需要,请删除ent12。

本文的“ 使用脚本”部分可帮助您最大程度地减少停机时间,尤其是在ent12上有很多路由的情况下。 现在让我们遍历这些步骤中的每一个。

步骤1:保存所有有关ent12的信息

您可以使用smit chinet保存ent12的定义。 在此示例中,已使用ent0。 ent12的输出将类似于ent0的输出。 图1显示了ent0的输出。

图1. smit chinet输出

保存此页面上显示的信息,以备日后在ent14上定义时使用。 以下是此页面上最重要的信息:

Network Interface Name                             en0
INTERNET ADDRESS (dotted decimal)                  [1.22.333.44]
Network MASK (hexadecimal or dotted decimal)       [255.255.255.0]

如果运行命令, netstat -rn | grep default netstat -rn | grep default ,您将获得以下条目:

default   222.333.55.1    UG        74   862520865   en12

此项表明默认网关在en12上定义。 如前所述,这并不奇怪,因为ent12是登录到该服务器的主要以太网。 您需要保存网关222.333.55.1 ,以便稍后在ent14上对其进行定义。

步骤2:保存ent12的所有路由和路由信息

这部分很容易。 您必须运行netstat -rn命令。 有关输出,请参见图2。

图2. netstat -rn命令的输出

您可以使用netstat –rn命令中的以下行在ent14上创建此路由。

222.333.55/26   222.333.55.16    UHSb        0   0   en12

您需要重新创建这些路由,否则某些AIX服务器可能无法访问该服务器。 在稍后的“ 步骤6:在ent14上创建以太网路由”部分中,我将向您展示如何在ent14上创建此路由。

步骤3:放下并分离ent12

您必须在控制台上才能关闭和分离ent12,否则您将丢失会话。 您的用户将无法登录到服务器,因为ent12是用于登录的主要以太网,直到您完成对ent14的重新定义并使其与路由一起可用。 要关闭和分离ent12,必须使用smit chinet 。 将当前状态从上更改为分离 。 分离ent12后,它就变得无法使用,并且使用netstat -rn命令时,它的所有路由都将不再可用,并且不会显示。

步骤4:在ent14上定义IP地址

您必须使用ent12的信息来定义ent14上的IP地址。 您可以运行smit chinet来定义ent14。 使用您在步骤1中保存的ent12的IP地址和网络掩码。

步骤5:在ent14上定义默认网关

您可以使用smit tcpip选择“ 最低配置和启动” ,然后使用ent14在ent14上定义默认网关。 这是您需要更改的系统管理界面工具(SMIT)中的条目的样子:

Default Gateway
Address (dotted decimal or symbolic name)     []

在这种情况下,需要在“ 地址”字段中键入222.333.55.1 ,然后按Enter。

步骤6:在ent14上创建以太网路由

在ent14上,您必须创建在ent12上定义的路由。 这是有关如何使用ent12的netstat -rn命令的输出在ent14上创建这些路由的示例。 请参考上一节“ 步骤2:保存ent12的所有路由和路由信息”中提到的以下路由。

222.333.55/26   222.333.55.16    UHSb        0   0   en12

此路由来自ent12的netstat -rn的输出。 在此输出中查找ent12条目。 您需要执行以下步骤来添加它:

  1. 输入smit route ,然后按Enter。
  2. 选择添加静态路由 ,然后按Enter。
  3. 在“ 目标地址”字段中输入222.333.55.0 (有关如何获取IP地址,请参阅“ 比较route add命令和chdev命令或smitty ”部分。)
  4. 在“ 网关地址”字段中输入222.333.55.16 。
  5. 在网络掩码字段中输入255.255.255.192 ( 255.255.255.192是/ 26的网络掩码)。
  6. 向下滚动到“ 选择接口”选项,然后选择“ PF4” ,然后选择“ ent14” 。

要查找与/ 26相对应的网络掩码,请在Google中搜索“子网掩码映射”文本,您将获得一些显示映射的匹配项。 有关此映射的示例,请参考以下数据。

Pref	  Mask			IPV4
/32    255.255.255.255
/31    255.255.255.254
/30    255.255.255.252
/29    255.255.255.248
/28    255.255.255.240
/27    255.255.255.224
/26    255.255.255.192
/25    255.255.255.128
/24    255.255.255    
/23    255.255.254    
/22    255.255.252    
/21    255.255.248    
/20    255.255.240    
/19    255.255.224    
/18    255.255.192    
/17    255.255.128    
/16    255.255        
/15    255.254        
/14    255.252        
/13    255.248        
/12    255.240        
/11    255.224        
/10    255.192        
/9     255.128        
/8     255            
/7     254            
/6     252            
/5     248            
/4     240            
/3     224            
/2     192

请注意以下映射中的以下条目。

/17	255.255.128
/10	255.192
/7	254

您需要为这三个条目使用以下条目作为网络掩码:

/17	255.255.128.0
/10	255.192.0.0
/7	254.0.0.0

如您所见,在这种情况下,您将必须添加零。

请注意,我们仅从ent12在ent14上创建了一条路由。 例如,如果您要创建45条路线怎么办? 在这种情况下,创建这些路线需要花费多长时间? 使用脚本部分中的脚本在不到一分钟的时间内为您创建了45条路线! 这样可以大大减少生产中断。 这样做的好处是不会出现任何错误,也不会产生任何错字。 如果您手动创建45条路线并输入多个错字,则在测试期间或以后的生产中它可能会变得难看。 应用程序团队将必须确定哪些路由存在问题,并通知您进行故障排除和修复,而在用户的生产中可能会花费很长时间。 如果应用程序团队无法确定出现问题的路由,可能会更糟,那么这可能需要更长的时间才能解决。

比较route add命令和chdev命令或smitty

如果使用route add命令添加路由,则重启后将丢失该路由。 route add命令不会更新对象数据库管理器(ODM),因此重新启动后将不会重新创建路由。 要使路由永久化,您需要使用chdev命令或smitty来创建它。 这是使用chdev命令的示例。

chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.0.0,-if,en11,,,,-static,10.137.0.0,345.98.22.4"

255.255.0.0 = Net Mask
en11 = The Ethernet you are defining the route over
10.137.0.0 = is the IP address
345.98.22.4 = is the route

您必须小心IP地址。 这是如何创建它的示例。 假设您收到添加以下路线的请求:

149.131.76/26      121.152.76.16   	on en2

该请求说添加一个IP 149.131.76的路由,其网络掩码为26,并且在以太网en2上的网关为121.152.76.16。 IP地址149.131.76缺少最后一个扩展名。 在这种情况下,您必须在末尾添加.0 ,这将使其成为149.131.76.0 ,您可以在chdev命令中使用该命令,也chdev使用smitty来添加此路由。 您的请求中可能有149.131/26而不是149.131.76/26 ,在这种情况下,您将在chdev命令中使用149.131.0.0的IP地址。 在这种情况下,您的chdev命令将如下所示:

chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.255.192,
-if,en2,,,,-static,149.131.0.0,121.152.76.16"

我已经在步骤6:在ent14上创建以太网路由中介绍了如何使用smit 创建路由 。

步骤7:如有需要,请删除ent12

此时,ent12已分离。 我通常会等待几天或一周,然后再删除它,以防万一由于某种原因,应用程序决定返回它(ent12)或退出它,然后很容易将其取回。 有关退出的更多信息,请参阅“退出”部分。 为了删除它,您可以使用以下命令:

rmdev -Rdl ent12

这将从ODM中删除ent12。

使用脚本

在您的AIX服务器上运行脚本。 请参考delete_or_recreate_static_routes_using_netstat脚本。

该脚本创建了两个脚本,分别为/ tmp / route_add和/ tmp / route_delete 。 这两个脚本是从netstat -rn命令的输出创建的。 route_add脚本为netstat -rn命令中显示的所有以太网重新创建所有路由。 在这种情况下, route_delete脚本将删除所有以太网的所有路由。 在这种情况下,您可以选择要使用的对象。 请参考此脚本的以下输出。

route add script is in /tmp/route_add. Info derived from "netstat -rn " and NOT from "lsattr -El inet0"
------------------------------------------------------------------------------------------------------
#!/usr/bin/ksh
chdev -l inet0 -a route="net,-hopcount,0,-netmask,,-if,en10,,,,-static,10.44.7.0,10.44.7.45"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.255.0,-if,en10,,,,-static,10.44.7.0,10.44.7.45"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,,-if,en10,,,,-static,10.44.7.255,10.44.7.45"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.0.0,-if,en11,,,,-static,10.137.0.0,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.252.0,-if,en11,,,,-static,10.567.16.0,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.255.0,-if,en11,,,,-static,10.567.24.0,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.255.128,-if,en11,,,,-static,10.567.25.0,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.255.128,-if,en11,,,,-static,10.567.25.128,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.240.0,-if,en11,,,,-static,10.208.0.0,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.255.240,-if,en11,,,,-static,32.75.241.192,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.255.128,-if,en11,,,,-static,62.567.25.0,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.255.224,-if,en11,,,,-static,62.567.25.160,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,,-if,en11,,,,-static,62.567.128.138,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,,-if,en11,,,,-static,62.567.128.139,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,,-if,en11,,,,-static,62.567.128.140,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,,-if,en11,,,,-static,62.567.128.141,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,,-if,en11,,,,-static,62.567.128.143,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,,-if,en11,,,,-static,62.567.128.146,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,,-if,en11,,,,-static,62.567.128.147,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.255.240,-if,en11,,,,-static,129.35.22.0,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.248.0,-if,en11,,,,-static,146.89.168.0,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,,-if,en11,,,,-static,345.98.22.0,345.98.22.1"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.255.248,-if,en11,,,,-static,345.98.22.0,345.98.22.1"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,,-if,en11,,,,-static,345.98.22.7,345.98.22.1"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.255.224,-if,en11,,,,-static,345.98.128.224,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.0.0,-if,en11,,,,-static,172.29.0.0,345.98.22.4"
route delete script is in /tmp/route_delete. Info derived from "netstat -rn" and NOT from "lsattr -El inet0"
------------------------------------------------------------------------------------------------------------
#!/usr/bin/ksh
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,,-if,en10,,,,-static,10.44.7.0,10.44.7.45"
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,255.255.255.0,-if,en10,,,,-static,10.44.7.0,10.44.7.45"
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,,-if,en10,,,,-static,10.44.7.255,10.44.7.45"
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,255.255.0.0,-if,en11,,,,-static,10.137.0.0,345.98.22.4"
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,255.255.252.0,-if,en11,,,,-static,10.567.16.0,345.98.22.4"
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,255.255.255.0,-if,en11,,,,-static,10.567.24.0,345.98.22.4"
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,255.255.255.128,-if,en11,,,,-static,10.567.25.0,345.98.22.4"
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,255.255.255.128,-if,en11,,,,-static,10.567.25.128,345.98.22.4"
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,255.255.240.0,-if,en11,,,,-static,10.208.0.0,345.98.22.4"
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,255.255.255.240,-if,en11,,,,-static,32.75.241.192,345.98.22.4"
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,255.255.255.128,-if,en11,,,,-static,62.567.25.0,345.98.22.4"
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,255.255.255.224,-if,en11,,,,-static,62.567.25.160,345.98.22.4"
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,,-if,en11,,,,-static,62.567.128.138,345.98.22.4"
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,,-if,en11,,,,-static,62.567.128.139,345.98.22.4"
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,,-if,en11,,,,-static,62.567.128.140,345.98.22.4"
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,,-if,en11,,,,-static,62.567.128.141,345.98.22.4"
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,,-if,en11,,,,-static,62.567.128.143,345.98.22.4"
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,,-if,en11,,,,-static,62.567.128.146,345.98.22.4"
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,,-if,en11,,,,-static,62.567.128.147,345.98.22.4"
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,255.255.255.240,-if,en11,,,,-static,129.35.22.0,345.98.22.4"
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,255.255.248.0,-if,en11,,,,-static,146.89.168.0,345.98.22.4"
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,,-if,en11,,,,-static,345.98.22.0,345.98.22.1"
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,255.255.255.248,-if,en11,,,,-static,345.98.22.0,345.98.22.1"
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,,-if,en11,,,,-static,345.98.22.7,345.98.22.1"
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,255.255.255.224,-if,en11,,,,-static,345.98.128.224,345.98.22.4"
chdev -l inet0 -a delroute="net,-hopcount,0,-netmask,255.255.0.0,-if,en11,,,,-static,172.29.0.0,345.98.22.4"
route add script is in /tmp/route_add. Info derived from "netstat -rn" and NOT from "lsattr -El inet0"
route delete script is in /tmp/route_delete. Info derived from "netstat -rn" and NOT from "lsattr -El inet0"

请注意在输出顶部位于route_add脚本之前的以下语句。

route_add脚本位于/ tmp / route_add中。 信息从netstat -rn派生,而不是从lsattr -El inet0派生。

这只是在提醒您,脚本的输出来自netstat命令,而不是lsattr ,并且保存在/ tmp / route_add中 。 在route_delete脚本之前也有类似的语句。

route_add脚本具有两个以太网ent10和ent11。 netstat命令输出仅具有这两个以太网。 该脚本仅由只能创建静态路由器的chdev命令组成。 现在让我们说您要将以太网ent11移到新的以太网ent12。 在这种情况下,运行命令grep en11 /tmp/route_add ,您将获得以下输出。

chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.255.0,-if,en11,,,,-static,10.567.24.0,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.255.128,-if,en11,,,,-static,10.567.25.0,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.255.128,-if,en11,,,,-static,10.567.25.128,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.240.0,-if,en11,,,,-static,10.208.0.0,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.255.240,-if,en11,,,,-static,32.75.241.192,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.255.128,-if,en11,,,,-static,62.567.25.0,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.255.224,-if,en11,,,,-static,62.567.25.160,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,,-if,en11,,,,-static,62.567.128.138,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,,-if,en11,,,,-static,62.567.128.139,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,,-if,en11,,,,-static,62.567.128.140,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,,-if,en11,,,,-static,62.567.128.141,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,,-if,en11,,,,-static,62.567.128.143,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,,-if,en11,,,,-static,62.567.128.146,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,,-if,en11,,,,-static,62.567.128.147,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.255.240,-if,en11,,,,-static,129.35.22.0,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.248.0,-if,en11,,,,-static,146.89.168.0,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,,-if,en11,,,,-static,345.98.22.0,345.98.22.1"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.255.248,-if,en11,,,,-static,345.98.22.0,345.98.22.1"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,,-if,en11,,,,-static,345.98.22.7,345.98.22.1"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.255.224,-if,en11,,,,-static,345.98.128.224,345.98.22.4"
chdev -l inet0 -a route="net,-hopcount,0,-netmask,255.255.0.0,-if,en11,,,,-static,172.29.0.0,345.98.22.4"

这些是您将用来在ent12上创建来自ent11的路由的命令集。 您所要做的就是将ent11更改为ent12,您便拥有了所需的所有命令。 您可以将这些命令放入名为route_add_ent12的脚本中,并在必须在ent12上创建路由时运行它。 那将是第6步。在第6步中,在示例中,在标题ent14上创建以太网路由下,我们仅在ent14上创建了一个路由。 通常,在这种情况下,我为ent11和ent12创建四个脚本,如下所示:

  • route_delete_ent11(用于删除ent11路由的脚本)
  • route_add_ent12(用于在ent12上从ent11重新创建路由的脚本)
  • route_delete_ent12(用于删除回退时使用的ent12路由的脚本)
  • route_add_ent11(在回退的情况下重新创建ent11路由的脚本)

请注意,我通常不使用脚本route_delete_ent11 ,在上面的示例中也没有使用它。 取而代之的是,分离ent11具有从ent11删除路由的作用,并且它们不再显示在netstat -rn的输出中。 在背出来的情况下,而不是使用route_add_ent11来重新创建ent11的路线,我只是ent11从分离改变了使用smit chinet及再instates它的路由。 有关退出的完整说明,请参阅“退出”部分。 但是,我喜欢保存这些脚本,以防万一以后出现问题,它们可以使我很好地了解ent11和ent12在移动IP地址前后的含义。 如果需要,他们还可以删除或重新添加任何以太网上的任何路由。 要创建这四个脚本,可以将grep命令与route_add和route_delete使用,就像我在上面使用它创建route_add_ent12一样。

退出

如果由于某种原因,应用程序组决定退出,则可以关闭并分离ent14。 这应该删除ent14的路由并使它们不可用。 使用netstat -rn进行验证,以确保未显示路由和ent14。 现在,您可以使用smit chinet将ent12的“ 当前状态 ”更改为up 。 这使ent12可用并恢复其路由。 使用netstat -rn验证并确保在ent12上定义了所有路由。 如果遇到意外问题,则始终可以使用上一部分中创建的四个路由脚本来修复它们。 这些脚本可以帮助解决问题。 他们将使添加或删除路由变得非常容易。

翻译自: https://www.ibm.com/developerworks/aix/library/au-moving-ip-address/index.html