提要:
IP通信路径是依据路由表定义的远程IP、网卡、路由设备等要素构建的,其中同网段多个IP的通信路径都使用同一条路由。值得关注的是,多数的应用程序,除监听等待可指定IP绑定端口外,对外访问一般是不指定IP,其对外通信的发起IP,都是依据路由定义的网卡及所在IP。
由于防火墙只允许特定IP对外访问,同网段多IP的综合应用系统,可能存在因路由定义的IP被防火墙拒绝而导致访问失败。本文重点介绍了同网段IP如何通过定义静态路由,来指定IP来与防火墙进行外联通信的方法,以下分两种情况进行分析。
一、同网段多IP分别定义在不同网卡
第一种情况是,在同网段多IP的服务器,创建Default路由时若未指定网卡,路由是绑定在设备号最小的en0(IP为115.6.61.12,如图1),如提要所述,多数应用都未指定对外通信IP,对外访问默认都是通过路由定义的en0 IP发起。因防火墙安全规划及NAT地址转换的技术限制,防火墙只允许应用通过en2 IP(115.6.61.14)发起通信,这时我们可通过手工增加一条静态路由,指定通过防火墙的对外访问均从en2 IP发起。
分析和测试
1、网络基本信息
AIXtest02-root:/>ifconfig -a
en0: flags=4e080863,80<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT,PSEG,CHAIN>
inet 115.6.61.12 netmask 0xffffff00 broadcast 115.6.61.255
en1: flags=4e080863,80<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT,PSEG,CHAIN>
inet 115.6.61.13 netmask 0xffffff00 broadcast 115.6.61.255
en2: flags=4e080863,80<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT,PSEG,CHAIN>
inet 115.6.61.14 netmask 0xffffff00 broadcast 115.6.61.255
lo0: flags=e08084b<UP,BROADCAST,LOOPBACK,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT>
inet 127.0.0.1 netmask 0xff000000 broadcast 127.255.255.255
inet6 ::1/0
tcp_sendspace 65536 tcp_recvspace 65536
AIXtest02-root:/>netstat -rn
Routing tables
Destination Gateway Flags Refs Use If PMTU Exp Groups
default 115.6.61.254 UGc 0 0 en0 - - -
115.4.15.90 115.6.61.254 UGHW 1 20 en0 1500 - -
115.6.61.0 115.6.61.12 UHSb 0 0 en0 - - - =>
115.6.61.0 115.6.61.14 UHSb 0 0 en2 - - - =>
115.6.61.0 115.6.61.13 UHSb 0 0 en1 - - - =>
115.6.61/24 115.6.61.12 U 1 122 en0 - - - =>
115.6.61/24 115.6.61.14 U 0 0 en2 - - - =>
115.6.61/24 115.6.61.13 U 2 18 en1 - - -
115.6.61.12 127.0.0.1 UGHS 0 9 lo0 - - -
115.6.61.13 127.0.0.1 UGHS 0 1711 lo0 - - -
115.6.61.14 127.0.0.1 UGHS 0 0 lo0 - - -
115.6.61.255 115.6.61.12 UHSb 0 0 en0 - - - =>
115.6.61.255 115.6.61.14 UHSb 0 0 en2 - - - =>
115.6.61.255 115.6.61.13 UHSb 0 0 en1 - - -
2、通信发起IP测试
通信路径分析命令traceroute可看到通信发起IP,从路由测试结果可看出,通信是由default路由定义的IP发起,这无法满足防火墙需求。
AIXtest02-root:/>traceroute 115.2.18.121
trying to get source for 115.2.18.121
source should be 115.6.61.12
traceroute to 115.2.18.121 (115.2.18.121) from 115.6.61.12 (115.6.61.12), 30 hops max
outgoing MTU = 1500
1 115.6.61.254 (115.6.61.254) 2 ms 1 ms 1 ms
2 115.3.196.33 (115.3.196.33) 1 ms 1 ms 1 ms
。。。(略)
3、手工增加静态路由,强行指定与115.2.18.121通信路径由en2 IP(115.6.61.14)发起。
1)增加路由
test-root:/>route add -host 115.2.18.121 115.6.61.14
115.6.61.14 host 115.2.18.121: gateway 115.6.61.14
test-root:/>netstat -rn
Routing tables
Destination Gateway Flags Refs Use If PMTU Exp Groups
default 115.6.61.254 UGc 0 0 en0 - - -
115.2.18.121 115.6.61.14 UGH 0 0 en2 - - - (新增的路由)
2)通信路径测试成功
AIXtest02-root:/>traceroute 115.2.18.121
trying to get source for 115.2.18.121
source should be 115.6.61.12
traceroute to 115.2.18.121 (115.2.18.121) from 115.6.61.14 (115.6.61.14), 30 hops max
outgoing MTU = 1500
1 115.6.61.254 (115.6.61.254) 2 ms 1 ms 1 ms
2 115.3.196.33 (115.3.196.33) 1 ms 1 ms 1 ms
。。。(略)
二、同网卡同网段IP的静态路由
AIX系统允许一张网卡定义多个IP,那第二种情况就是,一张网卡定义了2个同网段IP(一个是本地IP,另一个是别名IP),如提要所述,多数应用都不会指定对外通信IP,AIX默认只会使用本地IP。当防火墙只允许别名IP外联访问,能否好像第一种情况通过设置静态路由,来强制使用别名IP通信?答案是肯定的,但与第一种情况有区别的是,必须激活“是否为网卡路由”选项为yes,以下是分析和测试结果。
分析和测试:
1、网络基本信息
test-root:/>ifconfig -a
en0: flags=4e080863,80<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT,PSEG,CHAIN>
inet 115.6.61.100 netmask 0xffffff00 broadcast 115.6.61.255 (本地IP)
inet 115.6.61.8 netmask 0xffffff00 broadcast 115.6.61.255 (别名IP)
lo0: flags=e08084b<UP,BROADCAST,LOOPBACK,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT>
inet 127.0.0.1 netmask 0xff000000 broadcast 127.255.255.255
inet6 ::1/0
tcp_sendspace 65536 tcp_recvspace 65536
test-root:/>netstat -rn
Routing tables
Destination Gateway Flags Refs Use If PMTU Exp Groups
default 115.6.61.254 UGc 0 0 en0 - - -
115.4.15.129 115.6.61.254 UGHW 2 722 en0 1500 - -
115.6.61.0 115.6.61.100 UHSb 0 0 en0 - - - =>
115.6.61/24 115.6.61.100 U 6 981 en0 - - -
115.6.61.8 127.0.0.1 UGHS 1 217 lo0 - - -
115.6.61.100 127.0.0.1 UGHS 38 1101 lo0 - - -
115.6.61.255 115.6.61.100 UHSb 0 4 en0 - - -
2、从路由测试结果可看出,通信路径的解析是由本地IP提交至default路由。
test-root:/>traceroute 115.2.18.121
trying to get source for 115.2.18.121
source should be 115.6.61.100
traceroute to 115.2.18.121 (115.2.18.121) from 115.6.61.100 (115.6.61.100), 30 hops max
outgoing MTU = 1500
1 115.6.61.254 (115.6.61.254) 3 ms 1 ms 1 ms
2 115.3.196.33 (115.3.196.33) 1 ms 1 ms 1 ms
3、手工增加静态路由,强行指定与115.2.18.121通信路径由本地IP负责解析,但测试失败。
1)增加路由
test-root:/>route add -host 115.2.18.121 115.6.61.8
115.6.61.8 host 115.2.18.121: gateway 115.6.61.8
test-root:/>netstat -rn
Routing tables
Destination Gateway Flags Refs Use If PMTU Exp Groups
default 115.6.61.254 UGc 0 0 en0 - - -
115.2.18.121 115.6.61.8 UGH 0 0 en0 - - - (新增的路由)
2)验证失败
test-root:/>traceroute 115.2.18.121
trying to get source for 115.2.18.121
source should be 115.6.61.100
traceroute to 115.2.18.121 (115.2.18.121) from 115.6.61.100 (115.6.61.100), 30 hops max
outgoing MTU = 1500
3、考虑到别名IP不是路由设备(解决问题的关键),激活“是否为网卡路由”选项为yes,从路由测试的结果验证了,通信路径的解析已改为别名IP提交至default路由。
1)增加静态路由,并激活网卡路由选项interface
test-root:/>route add -interface -host 115.2.18.121 115.6.61.8
注:interface--Manipulates interface routing entries
test-root:/>netstat -rn
Routing tables
Destination Gateway Flags Refs Use If PMTU Exp Groups
Route Tree for Protocol Family 2 (Internet):
default 115.6.61.254 UGc 0 0 en0 - - -
115.2.18.121 115.6.61.8 UH 0 0 en0 - - - (新增路由,Flags为“UH”可看出已无路由设备的“G”标志)
2)通信路径解析改为别名IP提交至default路由
test-root:/>traceroute 115.2.18.121
trying to get source for 115.2.18.121
source should be 115.6.61.8
traceroute to 115.2.18.121 (115.2.18.121) from 115.6.61.8 (115.6.61.8), 30 hops max
outgoing MTU = 1500
1 115.6.61.254 (115.6.61.254) 3 ms 1 ms 1 ms
2 115.3.196.41 (115.3.196.41) 1 ms 1 ms 1 ms