本文翻译自 SAProuter
SAProuter
SAProuter 是一个 SAP 程序,可以保护您的 SAP 网络免受未经授权的访问。
SAProuter 的用途和功能
使用 SAProuter,您可以控制和记录 SAP 系统的传入连接。这对于支持从 SAP 到您的 SAP 系统的连接非常有用,如果出现问题,SAP 员工可以使用这些连接访问您的系统。
您还可以在由于网络配置而无法直接访问的程序之间建立间接连接。如果使用未注册的 IP 地址时发生地址冲突,并且存在防火墙限制,则可能会发生这种情况。
SAProuter 可用于提高网络安全性。连接和数据可以通过密码保护,以防止未经授权的外部访问。使用路由权限表,您可以指定仅允许来自选定 SAProuter 的连接。使用 SNC 层,可以允许来自已知合作伙伴的加密连接。
您可以通过减少局域网 (LAN) 内 SAP 系统与广域网 (WAN) 通信时的工作负载来提高性能和稳定性。
支持的场景
- 通过 SAProuter 进行 SAP GUI 通信(到消息服务器和/或 SAP 调度程序)
- 系统之间或 RFC 客户端与网关之间的 RFC 通信
- 支持从 SAP 到客户的连接。为了提供支持,SAP 通过特殊的专有预防措施允许传输其他协议,但这些协议不适用于生产操作,因此不会发布。
不支持的场景
- 通过 SAProuter 使用基于 HTTP 的协议在服务器组件之间进行通信(例如通过 HTTP 进行 Web 服务调用)
- 通过 SAProuter 从浏览器或业务客户端等用户界面与应用服务器(例如 Web Dynpro 或基于 BSP 的应用程序)进行通信
- 通信伙伴之间的二进制协议(例如终端服务器、X 服务器)
SAP 网络连接
以下介绍了 SAP 系统的网络连接、SAProuter 所起的作用以及如何使用 SAProuter 提高网络安全性。
NI 网络接口
定义
为了实现与各种平台的独立性,SAP 为所有网络连接开发了中间层 NI(网络接口)。它被 SAProuter 和所有 SAP 程序以及 CPI-C 和远程函数调用 (RFC) 的开发工具包使用。
结构
在 OSI 7 层模型中,NI 层构成传输层的上部,因此是靠近应用程序的部分。具体而言,这意味着 NI 使用 TCP 或 UDP。该协议也称为 SAP 协议。
OSI 层 | 协议 |
---|---|
7 应用 | |
6 演示 | |
5 会话 | |
4 传输 | NI TCP / UDP |
3 网络 | IP |
2 数据链路 | 以太网,… |
1 传输方式 |
niping 测试程序属于 NI 层,用于测试 NI 功能。预定义数量的数据包从客户端发送到服务器,由服务器返回,然后由客户端再次读取。该程序还会输出平均传输时间,并根据跟踪级别输出有关数据传输的详细信息。Niping 可用于测试有或没有 SAProuter 的网络连接。
如果输入 niping 时不带参数,则会显示在线帮助,其中包含可能的参数和其他选项。
SAP 协议
定义
使用 NI 接口进行通信的 SAP 程序所使用的协议称为 SAP 协议 。这是 TCP/IP 协议的增强版本,它补充了一个长度字段和一些错误信息选项。
使用
定义路由权限表 时,可以使用 S 作为首字母。这样就只允许 SAP 协议,也就是说,该行将照常解释,但只允许 SAP 程序(SAP GUI、SAP 应用服务器等)相互通信。
集成
NI 网络接口提供 SAP 协议作为通信的默认协议,但它也可以将 TCP/IP 协议与不理解 SAP 协议的外部程序(例如 telnet 或 lpd )一起使用。
路由连接
定义
路由连接是通过网络在两个主机之间建立的连接。路由是用于建立连接的中间站序列。
结构
您可以在有或没有 SAProuter 的情况下在 SAP 系统之间建立连接。
- 没有 SAProuter 时的连接
下图显示了没有 SAProuter 的情况下从 SAP 到客户的网络连接:
我们假设 SAP LAN(局域网)和客户 LAN 都受到防火墙的保护,以防止不必要的访问。
如果要在 SAP 工作站和客户工作站之间建立连接,则需要在防火墙上创建一个“漏洞”。需要与外部主机建立的连接越多,防火墙包含的漏洞(因此安全漏洞)就越多。
如果在不使用 SAProuter 的情况下建立连接,则需要以下信息:
1.主机的 IP 地址
或运行服务器进程的主机的逻辑名称。因此,目标主机必须具有唯一的 IP 地址。
2.进程使用的端口号或端口的逻辑名称。
服务器进程必须在其主机上使用独占端口号。此外,客户端必须知道此端口号。
注意
当使用 NI 网络接口时,主机地址和端口号可以作为逻辑名称(例如,主机 saposs、服务 sapdp00)或地址字符串(例如,形式为 www.xxx.yyy.zzz 的主机 IP 地址、端口 3200)传递。
- 有 SAProuter 时的连接
下图显示了与 SAProuter 的网络连接:
SAProuter 仅允许从固定点访问网络。因此,接入点(漏洞)的数量减少了,因为连接所需的直线更少。每个“漏洞”都由 SAProuter 守卫,其路由权限表确定可以使用的路由以及获得访问权限所需的密码。因此,防火墙中的漏洞受到监控。
如果没有 SAProuter,IP 地址必须是唯一的。这并不总是可能的,特别是在两个通常没有外部连接的网络之间的连接的情况下。SAProuter 允许两个具有相同 IP 地址的点连接。
SAProuter 不仅可用于将一台主机与特定服务连接起来,还可用于将多台主机和服务相互连接起来。路由信息以路由字符串 route string的形式提供。访问所需的密码也在路由字符串中指定。
使用 SAProuter 提高网络安全性
使用
SAProuter 提供许多旨在提高安全性的功能,例如使用 SNC - 安全网络通信。
如果您对 SAProuter 进行适当的管理,它允许您加强防火墙主机以抵御来自外部的不需要的连接。
先决条件
您有一个网络和一个防火墙。防火墙主机上运行着一个 SAProuter。
程序
防火墙主机上运行的 SAProuter 应配置为允许以下操作:
-
仅接受来自外部的 NI 协议(SAP 协议)。为此,请使用 S 条目。如果您想明确允许特定端口的本机 TCP/IP 连接,可以使用 P 条目执行此操作。
-
在路由中,无限数量的 SAProuter 不能充当此 SAProuter 下游或上游的中间站;您可以使用 Pv,n 条目规定允许的数量(请参阅创建路由权限表)。
在 UNIX 下,也可以使用选项 -S <service> 在为 root 保留的端口上启动 SAProuter。
SNC - 安全网络通信
使用
SNC 用于确保使用 Internet 的网络连接(尤其是 WAN 连接)的安全。它提供可靠的身份验证以及要传输的数据加密。
SAProuter 允许设置 SNC 连接。路由权限表可用于精确指定是否允许 SNC 连接,如果允许,则指定哪些连接。
集成
有关如何在 SAP 环境中使用 SNC 的详细说明,请参阅以下文档:安全网络通信 (SNC)
先决条件
您正在使用至少 30 版 SAProuter,并使用相关指南配置了 SNC。
以下是在两个 SAProuter 之间设置 SNC 连接的先决条件:
-
两个 SAProuter 都必须使用选项 -K <SNCname> (iSeries: ‘-K <SNCname>’ ) 启动(请参阅选项 -K <mysncname> )。)。这些名称可确保主机的真实性。
-
源主机的路由权限表中必须有一个 KT 条目。这会导致与目标主机的连接使用 SNC 层。
-
两个路由权限表中都必须有一个 KP 条目。这允许连接。
活动
要在两个 SAProuter 之间建立 SNC 连接,您需要使用选项 -K 启动它们并适当地配置路由权限表。
安装 SAProuter
从 SAP 支持门户下载最新的 SAProuter。在 UNIX 上,SAProuter 作为守护进程安装。在 Windows 上,它作为服务安装。
先决条件
首先阅读 SAProuter 的硬件要求。
建议
我们建议您始终使用最新的 SAProuter。
程序
1.下载:要下载,请按以下步骤操作:
要在 SAP 支持门户上查找最新的 SAProuter,请转到 https://support.sap.com/en/my-support/software-downloads.htmlSAP 网站上发布的信息。
选择支持包和补丁 S SAPROUTER。
2.安装:SAProuter 的安装取决于所使用的操作系统:
在 Windows 上安装 SAProuter
在 UNIX 上安装
在 IBM i 上安装 SAProuter
SAProuter 的硬件要求
SAProuter 架构和要求配置文件
由于 SAProuter(也使用 SNC)的工作主要基于 I/O(输入/输出),因此您不需要任何特别强大的 CPU。
SAProuter 处理的工作负载由打开的连接数决定。
如果需要维护超过 800 个连接,我们建议您使用选项 -Y <n> 启动新的 SAProuter 进程。这会将负载分布到多个进程中,并降低出现任何问题的风险(如果出现问题,它永远不会影响所有打开的连接。)以下经验法则适用于大量连接:每 500 个连接 1 个 SAProuter。
除了选项 -Y,您还可以设置一个脚本来监控 SAProuter 进程并在超过一定数量的连接或首次写入消息“已达到最大客户端数量”时重新启动 SAProuter(使用选项 -p 软关闭,然后重新启动)。
由于 SAProuter 进程在一个线程(单线程)中运行,并且经常忙于 I/O 调用或主机名解析,因此具有一个 CPU 的计算机可以很好地管理并行运行的多个 SAProuter 进程。
推荐硬件
对于在 SAP GUI 和应用程序服务器之间具有 3000 个并行连接的 SAProuter,传输平均数据量、少量文件下载和上传(每个连接和每 10 秒双向传输大约 8kB 数据),我们建议:
- 快速网络适配器(非常重要)
- 2 个超线程 (HTT) CPU,频率为 2GHz
- 512 MB RAM
- 50 MB 硬盘上可用空间用于 SAProuter 和配置
- 硬盘空间用于日志文件
背景
对于 3000 个用户,我们估计有六个 SAProuter 进程(将选项 -C 设置为 1000)。
如果假设三分之一的 CPU 工作量用于用户,三分之二用于系统,则每个进程都需要 4.5 MB 内存和 9% 的双向 HTT 3 GHz CPU。六个 SAProuter 进程总共需要大约 30 MB 内存和 55% 的 CPU。
有时需要几秒钟才能从 IP 地址确定主机名(反向查找),在此期间进程被阻止。原因通常是 DNS 配置中的错误。用户会注意到这些延迟,特别是当 SAProuter 上的工作负载很大时。使用选项 -D 来防止这种情况发生。
推荐的启动选项
按如下方式启动 SAProuter:
-
Windows/Unix:saprouter -r -K <SNC 名称> -Y 0 -C 1000 -D -G <日志文件> -J 2000000
-
IBM i:call saprouter( ‘-r’ ‘-K’ ‘<SNC 名称>’ ‘-Y’ ‘0’ ‘-C’ ‘1000’ ‘-D’ ‘-G’ ‘<日志文件>’ ‘-J’ ‘2000000’ )
有关在 Windows 上操作 SAProuter 的信息,请参阅 SAP Notes 734095 SAP 网站上发布的信息。
有关在 IBM i 上操作 SAProuter 的信息,请参阅 SAP Notes 2173275 SAP 网站上发布的信息。
在 UNIX 上安装
1.在目录 /usr/sap/ 中创建子目录 saprouter 。
从 SAP 服务市场 ( service.sap.com/patches ) 获取最新版本的 SAProuter,如 SAProuter 的安装中所述。 SAProuter 位于数据包 saprouter*.SAR 中;程序 niping 也位于此数据包中。将程序 saprouter 和 niping 复制到新创建的目录 /usr/sap/saprouter 。
如果无法从 SAP 服务市场复制程序,可以从目录 /usr/sap/<SID>/SYS/exe/run 复制一个版本(可能已过时)。
(可选)如果要在用于 SAP 实例的同一台计算机上启动 SAProuter,请将以下行插入文件 /usr/sap/<SID>/SYS/exe/run/startsap:
#
# Start saprouter
#
SRDIR=/usr/sap/saprouter
if [ -f $SRDIR/saprouter ] ; then
echo “\nStarting saprouter Daemon “ | tee -a $LOGFILE
echo “----------------------------“ | tee -a $LOGFILE
$SRDIR/saprouter -r -R $SRDIR/saprouttab \
| tee -a $LOGFILE &
fi
小心
在启动 SAP 实例的命令前插入这些行。
通常 SAProuter 会在不同的计算机上运行。如果是这样,则省略此步骤,并按照启动 SAProuter 中所述启动 SAProuter。
在目录 /usr/sap/saprouter 中维护路由权限表。如果要将其保存在另一个目录中或使用 saprouttab 以外的名称,则必须使用 SAProuter 选项 -R 指定此设置(请参阅选项 R <routtab> )。
在 Windows 上安装 SAProuter
您将 SAProuter 作为 Windows 上的服务安装。
上下文
注意
如果某些 Microsoft DLL 尚未替换,则可能会出现问题。您可以在 SAP Note 684106 SAP 网站上发布的信息中找到所需的内容。
程序
1.在目录 <disk drive>:\usr\sap 中创建子目录 saprouter。
2.从 SAP 支持门户网站 https://support.sap.com/patches 下载最新版本的 SAProuterSAP 网站上发布的信息(另请参阅安装 SAProuter)。
3.将程序 saprouter.exe 和 niping.exe 复制到新创建的目录 <disk drive>:\usr\sap。SAProuter 和程序 niping 位于包 saprouter*.SAR 中。
如果您无法从 SAP 支持门户网站下载程序,则可以从目录 <disk drive>:\usr\sap<SID>\SYS\exe\run 复制一个版本(可能已过时)。
4.如果 SAProuter 已通过 srvany.exe 作为服务输入,请从注册表中删除服务定义并重新启动主机。
5.使用以下语法定义服务:sc.exe create <service> binPath= “<Path to service EXE file> service -r <parameter>” type= own start= auto
注意:<parameter> 可以用要启动 SAProuter 的其他参数替换。另请参阅 SAProuter 选项。参数必须位于双引号括起来的字符串内。
有关更多信息,请参阅 SAP 网站上发布的 Note 618053 和 Note 41054。
6.定义服务的常规属性:在控制面板 > 服务中,将启动类型设置为自动并输入用户。SAProuter 不应在系统帐户下运行。
7.为了避免 Windows NT 事件日志中出现错误消息 The description for Event ID (0)",您必须在注册表中输入以下内容:在 HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Services > Event Log > Application 下创建键 saprouter 并为其定义以下值:
EventMessageFile (REG_SZ):…\saprouter\saprouter.exe
TypesSupported (REG_DWORD):0x7
这些设置不是运行 SAProuter 所必需的。它们用于在事件日志中详细显示错误消息。
8.在目录 system32 中维护路由权限表。
使用 SAProuter 选项 -R 将路由权限表保存在另一个目录中或使用 saprouttab 以外的名称(请参阅选项 -R <routtab>)。
在 IBM i 上安装 SAProuter
有关在 IBM i 上安装 SAProuter 的更多信息,请参阅 SAP 网站上发布的 Note 2173275。
使用 SAProuter
本节介绍如何启动、测试和配置 SAProuter。
启动和停止 SAProuter:选项 -r 和 -s
注意
- 在使用 SAProuter 之前,您应该测试其基本功能。
- 在输入字段中输入 saprouter 以显示 SAProuter 参数的完整列表。
- 您可以在启动系统时自动启动 SAProuter。例如,在 UNIX 下,您可以更改 /etc/rc 文件。
- 如果您想通过 SAProuter 运行大量连接(超过 1000 个),请使用选项 -r -Y <n> 启动 SAProuter,并使用选项 -C <clients> 将最大客户端数量设置为 2000:
启动 SAProuter
使用选项 -r 启动 SAProuter:
- Windows/Unix:saprouter -r
- IBM i:call saprouter (‘-r’)(如果可能,在批处理模式下)
此命令无需其他参数即可启动 SAProuter。允许的连接包含在 saprouttab 中。
注意
如果您在输入字段中输入 start start saprouter -r,SAProuter 将在新窗口中打开。您可以继续在第一个窗口中工作,例如,在此处停止 SAProuter。
停止 SAProuter
您可以使用选项 -s 停止 SAProuter:
- Windows/Unix:saprouter -s
- IBM i:call saprouter (‘-s’)(如果可能,在批处理模式下)
此命令停止 SAProuter。
注意
如果 SAProuter 未在默认服务 3299 上运行,则必须使用选项 -S <service> 指定该服务。
测试 SAProuter 基本功能
先决条件
使用 SAProuter 之前,您应该测试是否存在任何网络问题。
您需要在一台或多台主机上安装 saprouter 和 niping 程序以及三个打开的窗口(shell)。
流程
下表显示了使用 niping 时的测试场景:
SAProuter 在窗口 1 中运行,服务器在窗口 2 中运行,客户端在窗口 3 中运行。
Window 2 (host2) | Window 1 (host1) | Window 3 (host3) | |
---|---|---|---|
无 SAProuter | niping -s | niping -c -H host2 | |
有 SAProuter | niping -s | saprouter -r | niping -c -H /H/host1/H/host2 |
Window 2 (host2) | Window 1 (host1) | Window 3 (host3) | |
---|---|---|---|
无 SAProuter | call niping ‘-s’ | call niping ‘-c’ ‘-H’ ‘host2’ | |
有 SAProuter | call niping ‘-s’ | saprouter ‘-r’ | call niping ‘-c’ ‘-H’ ‘/H/host1/H/host2’ |
步骤
1.在窗口 1(在 host1 上)中启动 SAProuter。为此,请输入以下命令:
UNIX/Windows:saprouter -r
(iSeries:saprouter ‘-r’ )
此命令调用 SAProuter 而不带任何参数。
2.在窗口 2 ( host2 ) 中,启动测试程序 niping 来模拟测试服务器。输入以下命令:
UNIX/Windows:niping -s
iSeries:call niping ‘-s’
3.在窗口 3 ( host3 ) 中,启动测试程序 niping 来模拟客户端。输入以下命令:
UNIX/Windows:niping -c -H host2
iSeries:call niping ‘-c’ ‘-H’ ‘host2’
4.在窗口 3 中,使用以下命令再次启动测试程序 niping:
UNIX/Windows:niping -c -H /H/host1/H/host2
iSeries:call niping ‘-c’ ‘-H’ ‘/H/host1/H/host2’
在步骤 3 和 4 中,数据包被发送到服务器,服务器将数据包发送回来。在步骤 3 中,数据包应该更频繁地发送到服务器,因为会发生更多进程更改。
要对本地主机执行自检:
输入命令 niping -t (iSeries: call niping ‘-t’ )。
将显示包含函数名称、参数和返回代码的列表。如果自检成功,则会出现以下消息:
*** SELFTEST O.K. ***
注意
要了解 niping 提供的选项,请输入不带任何参数的 niping。
SAP Note 500235 包含有关 niping 工具的全面文档。
路由字符串
定义
路由字符串描述两台主机之间所需的连接站。路由字符串的语法如下:
(/H/host/S/service/W/pass)*
它由任意数量的子字符串组成,格式为 /H/host/S/service/W/pass。
注意
H、S 和 W 必须大写。
结构
路由字符串包含每个 SAProuter 和目标服务器的子字符串。
每个子字符串包含 SAProuter 在路由中建立连接所需的信息:主机名、端口名和密码(如果已提供)。
子字符串的语法
- /H/ 表示主机名
注意
请注意,主机名必须至少有两个字符长。 - /S/ 用于指定服务(端口);它是一个可选条目,默认值为 3299
- */W/*表示该线路上前任与后任之间的连接密码,也是可选的(默认为“”,无密码)
注意
在早期版本 (<4.0A) 中,密码输入位于一个子字符串后面,并且带有字母 /P/。
新:/H/saprouter/W/pass/H/target server
旧:/H/saprouter/H/targetserver/P/pass
(此处 pass 是主机 saprouter 上的 SAProuter 检查的密码,用于设置或禁止从源主机到目标主机的连接。)
由于向下兼容,旧的密码输入形式仍然可用。
SAProuter 的路由字符串条目
目的
路由字符串描述了使用一个或多个 SAProuter 的两个主机之间所需的连接。然后,每个 SAProuter 都会检查其路由权限表,以查看其前任和后继之间的连接是否被允许,如果允许,则进行设置。
流程
路由字符串的输入最好通过示例来说明。
下图显示了 SAP 和客户系统之间的连接示例。在此示例中,在 sappc 上工作的 SAP 服务员工想要登录到提供或使用服务 sapsrv 的客户应用程序服务器 yourapp。
SAP 服务员工登录 SAP 系统,使用 sap_rout 上的 SAProuter 和客户的 SAProuter your_rout 在 sappc 和 yourappauf 之间建立连接。
your_rout 需要密码 pass_to_app 才能连接到 yourapp。
路由字符串显示如下:
/H/sap_rout/H/your_rout/W/pass_to_app/H/yourapp/S/sapsrv
该路由字符串由参与路由的 SAProuters 解释如下:
Host/address | Service/port | Password | |
---|---|---|---|
Substring 1 | /H/sap_rout | /S/<default> | <no password> |
Substring 2 | /H/your_rout | /S/<default> | /W/pass_to_app |
Substring 3 | /H/yourapp | /S/sapsrv |
sappc 到应用服务器的连接建立步骤如下:
sappc(前端) | 根据子字符串 1 设置与 SAProuter sap_rout 的连接并传递路由信息。 |
sap_rout(SAP 端的 SAProuter) | 使用路由权限表检查是否允许路由“sappc zu your_rout 3299”,在主机 your_rout 上设置与客户 SAProuter 的连接,并传递子字符串 2 和 3。 |
your_rout(客户端的 SAProuter) | 检查是否允许路由“sap_rout to yourapp, sapsrv”。还检查密码 pass_to_app。然后 SAProuter 设置与应用程序服务器的连接。 |
SAProuter 始终只检查前一个主机名或前一个 IP 地址以及下一个子字符串 (/H/…/S/…/W/…) 以获取主机名或 IP 地址、服务和密码。最后一个子字符串不包含密码,因为路由中没有后继。
如果缺少 /S/ 部分,则使用 SAProuter 的默认端口号。如果缺少 /W/ 部分,则不使用密码。
注意
使用旧密码输入时,上述路由字符串将显示如下:
/H/sap_rout/H/your_rout/H/yourapp/S/sapsrv/P/pass_to_app
警告
请注意,主机名(位于路由字符串中的 /H/ 后面)必须至少有两个字符长。
路由权限表
使用
路由权限表包含路由上前继点和后继点的主机名和端口号(从 SAProuter 的角度来看),以及建立连接所需的密码(对应于子字符串)。它用于指定 SAProuter 允许哪些连接以及禁止哪些连接。它还指定是否建立 SNC 连接以及如果建立,则建立哪些连接。
路由权限表中条目的语法
条目 | 语法 |
---|---|
标准条目 | P/S/D <source-host> <dest-host> <dest-serv> <password> |
入站请求的 SNC 条目 | KT <SNC name src-host> <src-host> <src-serv> |
出站请求的 SNC 条目 | KT <SNC name dest-host> <dest-host> <dest-serv> |
KD、KP 和 KS 条目 | K<D/P/S> <SNCname source-host> <dest-host> <dest-serv> <password |
路由权限表的行起始
该行的开头可以如下:
条目 | 含义 |
---|---|
P(允许) | 触发 SAProuter 打开连接。P(允许)条目可以包含密码。SAProuter 检查此密码是否与客户端发送的密码相对应。 在 P 之后,您可以指定允许在路由上此 SAProuter 之前和之后的最大 SAProuter 数量,以允许连接:Pv,n。 v 是此路由上前导 SAProuter 的最大数量,n 是后导 SAProuter 的最大数量。 |
S(安全) | 仅允许使用 NI 协议进行连接。不允许使用其他协议(例如 TCP)进行连接。 使用 Sv,n,您可以确定路由上前一个和后一个 SAProuter 的数量,就像使用 P 一样。 |
D(否定) | 防止建立连接。 |
KT(重点目标) | 这定义了哪些连接应该是 SNC 连接。这可以为传入和传出连接定义(从此 SAProuter 的角度来看)。 |
K<D/P/S> | 如果路由字符串包含正确的 <密码>,则建立(加密)SNC 连接。 |
# | 使用 # 您可以插入注释行。 |
注意
SNC 条目始终以字母 K(密钥)开头。
警告
- 为了实现 SNC 连接,必须使用选项 -K 启动相应的 SAProuters,并且路由权限表必须包含相应的 KT 条目。
- 安全注意事项:
出于安全原因,SAP 建议您不要在路由权限表的 P 和 S 行中对目标主机 (<dest-host>) 和目标端口 (<dest-serv>) 使用通配符 ()。如果表包含这些行,SAProuter 会发出警告消息:*
WARNING: wildcard character used in route target
(警告:路由目标中使用通配符)
指定出站主机、目标主机和目标主机端口
元素 | |
---|---|
<source-host> | 此元素描述连接来自哪个主机(从 SAProuter 的角度来看)。 您可以在此处指定主机名、IP 地址或 IP 子网。 可以是 SAProuter。 |
<dest-host> | 使用 元素,您可以指定要连接到的主机(从 SAProuter 的角度来看)。 您可以在此处指定主机名、IP 地址或 IP 子网。 可以是 SAProuter。 |
<dest-serv> | 使用 元素,您可以指定目标主机的端口。 您还可以在此处指定端口范围,方法是用点分隔包含端口范围的两个端口。如果 的值为 3200.3298,则表示在 3200 和 3298 之间的所有端口上连接到目标服务器。 |
注意
如果 <source-host> 客户端想要通过 SAProuter 建立到 <dest-host> <dest-serv> 的连接,则 SAProuter 会在建立连接之前检查其路由权限。如果 SAProuter 收到的密码和路由与路由权限表中的条目相对应,则 SAProuter 会建立连接。如果情况并非如此,则 SAProuter 不会建立连接,并发出消息 route permission denied(路由权限被拒绝)。
路线许可表的评估
SAProuter 评估路由权限表时适用以下规则。
- 第一个匹配项:
路由权限表中的行从上到下进行评估。路由权限表中与源地址、目标地址和目标端口匹配的第一个条目决定了连接是被允许还是被拒绝。 - 无匹配项
如果路由表中没有匹配的条目,则连接被拒绝。就像最后一行是
D * * * 一样。
注意
如果 SAProuter 是路由上的最后一个 SAProuter(例如,前端),并且服务不是 SAP 服务(不是 SAP 协议),则不能在该服务中使用通配符(“*”)。仅当明确指定非 SAP 服务时才允许连接。如果上面给出的示例包含 * 而不是 telnet,并且 SAProuter 是路由上的最后一个,则不会建立 telnet 连接。
路由权限表示例
路由权限表可能如下所示:
D | host1 | host2 | ServiceX | |
D | host3 | |||
P | * | * | 3200.3298 | |
P | 155.56.*.* | 155.56.*.* | ||
P | 155.57.1011xxxx.* | |||
P | host4 | host5 | * | pass |
S | host6 | |||
P | host7 | host8 | telnet | |
P*,0 | * | * | gui |
这意味着:
- 不允许从 host1 到 host2 的任何路由,服务 serviceX
- 不允许从 host3 开始的任何路由
- 允许到使用区域 3200 到 3298 中的服务的所有服务器进程的路由
- 允许子网 155.56.0.0/16 内的所有路由
- 允许从子网 155.57.1011xxxx 开始的所有路由(最后一个字节写为二进制数;每个“x”代表 0 或 1)。
- 如果密码 pass 正确,则允许从 host4 到 host5 的所有路由
- 来自 host6 的所有路由,但仅限 SAP 协议
- 从 host7 到 host8 上的非 SAP 服务 telnet 的本机协议路由(TCP/IP)
- 如果密码 gui 正确,则所有到非 SAProuters 的连接(此路由上不允许再使用 SAProuters)
在上面的 SAProuter 路由字符串条目示例中,主机 saprouter 的路由权限表必须包含条目
P sappc your_rout
并且主机 yoursaprouter 的路由权限表必须包含条目
P saprouter yourapp sapsrv pass_to_app
具有 SNC 的路由许可表示例
使用 SNC 的路由权限表可能如下所示:
P | * | * | * | pass |
KT | S:SR@host4 | host4 | 3333 | |
KT | S:SR@host9 | host9 | * | |
KD | S:SR@host4 | host9 | * | |
KP | S:SR@host4 | * | * | pass2 |
KS | * | host10 | 4444 | |
KP | * | * | * |
这意味着:
- 如果正确指定了密码 pass,则允许所有连接。
- 从此 SAProuter 到 host4(SNC 名称 S:SR@host4)、服务 3333 的连接必须是 SNC 连接。
- 从 host9(SNC 名称 S:SR@host9 )到此 SAProuter 的连接必须是 SNC 连接。
- 不应使用此 SAProuter 设置从 SR@host4 到 host9 的 SNC 连接。
- 如果密码 pass2 正确,则允许使用此 SAProuter(任何目标主机)从 S:SR@host4 建立 SNC 连接(除非连接到 host9 ,因为根据上一条条目不允许这样做 - 第一个“匹配”的条目是决定性的!)。
- 所有作为 SNC 连接进入的到 host10 和服务 4444 的 SAP-SAP 连接(即 NI 协议)都将作为非 SNC 连接传递到 host10(不是 SNC 主机)。
- 允许所有 SNC 连接(先前的条目不适合)。
创建路由权限表
您可以使用标准文本编辑器创建路由权限表。
警告
- 您必须为网络中的每个 SAProuter 创建单独的路由权限表。
- 如果未向 SAProuter 分配特定路由权限表,则在 UNIX 和 iSeries 上使用 ./saprouttab。在 Windows 上,将在 SAProuter 的工作目录 <lwk>:\usr\sap\saprouter 中搜索文件 saprouttab。如果此文件不可用,则 SAProuter 将终止并显示相应的消息。
您可以在主机、端口和密码中使用通用条目(“ * ”)。
您可以在主机路由中使用子网。示例:
156.56.*.* | 所有以 156.56.开头的主机地址 |
133.27.17.* | 所有以 133.27.17 开头的主机地址 |
133.27.16.0 / 24 | 所有以133.27.16开头的主机地址(末尾的0/24表示前24位相关,即前三个块) |
156.56.1011xxxx.* | 从 156.56.176.* 到 156.56.191.* 的所有主机地址。 (地址第三个字节的二进制解释。“x”是可自由选择的二进制值(1 或 0)。) |
SAProuter 日志
使用
为了概览 SAProuter 的功能和容量,可以记录通过 SAProuter 建立的所有连接和执行的操作。
流程
您可以使用选项 -G 配置日志。在这里,您可以创建日志文件的名称并指定要创建的位置。
日志文件的结构
日志文件逐行构建。每行包含以下信息:
- 日期和时间:星期几、月、日、时间、年
- 操作:可能的操作包括 INIT LOGFILE(日志文件开始)、READ ROUTTAB(读取路由权限表)、CONNECT FROM/TO(建立从/到的连接)、DISCONNECT(关闭连接)、PERM DENIED(路由权限表不允许连接)。
操作后始终是句柄对 <C|S>n/m,其中字母表示操作是由客户端还是服务器初始化的,两个数字表示内部 NI 句柄编号。
示例
例如,句柄对“C1/2”表示此日志引用句柄 1 与客户端的连接(第一个数字),句柄 2 与服务器的连接(第二个数字)。前面的 C 表示操作由客户端初始化。因此,CONNECT FROM 始终用 C 表示,CONNECT TO 用 S 表示。使用 DISCONNECT 时,指定的页面是已关闭连接的页面。IP 地址和端口始终引用连接的计数器页面(对等)。带有句柄对 C1/- 的日志表示一对之间尚不存在服务器端连接。
下面描述了最重要的日志条目。
示例
动作
假设已激活日志记录,则通过 SAProuter 执行以下操作。 SAProuter 位于物理主机 ldp007(IP 地址为 10.21.72.60)和 binmain(IP 地址为 10.21.82.77)之间。
1.主机 ldp007(10.21.72.60)和主机 binmain(10.21.82.77)之间的连接已打开,端口为 sapmsBIN,客户端再次关闭该连接。
2.管理员调用本地 SAProuter 以显示连接列表(saprouter -l)。
3.主机 ldp007(10.21.72.60)和同一主机 ldp007 之间的连接已建立,端口为 3298,服务器再次关闭该连接。
4.尝试从主机 ldp007(10.21.72.60)打开到具有 telnet 端口 23 的同一主机的连接被 SAProuter 拒绝。
路由权限表
此示例中的路由权限表允许从任意主机通过端口 sapmsBIN 连接到主机 10.21.82.77,以及通过端口 3298 连接到主机 10.21.72.60:
P*10.21.82.77 sapmsBIN
P*10.21.72.60 3298
日志文件
执行这些操作后,日志文件将如下所示(不显示行号,但在此处添加以帮助描述)。
(1) Wed Dec7 13:13:59 2005 INIT LOGFILE
(2) Wed Dec7 13:13:59 2005 READ ROUTTAB ./saprouttab o.k.
(3) Wed Dec7 13:14:05 2005 CONNECT FROM C1/- host 10.21.72.60/1245 (ldp007.wdf.sap.corp)
(4) Wed Dec7 13:14:05 2005 CONNECT TO S1/2 host 10.21.82.77/sapmsBIN (binmain)
(5) Wed Dec7 13:14:05 2005 DISCONNECTC1/2 host 10.21.72.60/1245 (ldp007.wdf.sap.corp)
(6) Wed Dec7 13:14:13 2005 CONNECT FROM C2/- host 127.0.0.1/44997 (localhost)
(7) Wed Dec7 13:14:13 2005 SEND INFO TO C2/-
(8) Wed Dec7 13:14:13 2005 DISCONNECT C2/- host 127.0.0.1/44997 (localhost)
(9) Wed Dec7 13:14:23 2005 CONNECT FROM C2/- host 10.21.72.60/1276 (ldp007.wdf.sap.corp)
(10) Wed Dec7 13:14:23 2005 CONNECT TO S2/1 host 10.21.72.60/3298 (ldp007)
(11) Wed Dec7 13:14:24 2005 DISCONNECT S2/1 host 10.21.72.60/3298 (ldp007)
(12) Wed Dec7 13:14:31 2005 CONNECT FROM C2/- host 10.21.72.60/1352 (ldp007.wdf.sap.corp)
(13) Wed Dec7 13:14:31 2005 PERM DENIEDC2/- host 10.21.72.60 (ldp007.wdf.sap.corp) to ldp007/23
(14) Wed Dec7 13:14:31 2005 DISCONNECT C2/- host 10.21.72.60/1352 (ldp007.wdf.sap.corp)
描述
这些行的含义如下:
行 | 描述 |
---|---|
(1), (2) | 前两行始终位于日志文件的开头。第一行标记开始,第二行表示已成功读取路由权限表。 |
(3), (4) | 客户端(主机 10.21.72.60,端口 1245)连接到 SAProuter,并通过该主机连接到主机 10.21.82.77、端口 sapmsBIN,因为根据路由权限表允许此连接。 |
(5) | 主机 10.21.72.60、端口 1245 与主机 10.21.82.77、端口 sapmsBIN 之间的连接已被客户端关闭。 |
(6) | 在本地主机(IP 地址 127.0.0.1,端口 44997)上调用连接列表显示(saprouter –l)。使用 SAProuter 打开连接。 |
(7) | SAProuter 向客户端发送请求的连接信息。 |
(8) | 连接再次关闭。由于它不是通过 SAProuter 建立的客户端/服务器连接,因此该连接被 SAProuter 关闭。 |
(9), (10) | 客户端主机 10.21.72.60,端口 1276 想要通过 SAProuter 连接到服务器 10.21.72.60,端口 3298 v,根据路由权限表允许此连接。 SAProuter 打开连接。 |
(11) | 连接再次关闭(从服务器)。 |
(12), (13) | 客户端主机 10.21.72.60,端口 1352 想要通过 SAProuter 连接到服务器 10.21.72.60,端口 23(telent),但根据路由权限表不允许此操作。SAProuter 返回消息“permission denied(权限被拒绝)”。 |
(14) | SAProuter 关闭连接。(如果连接未经许可或出现错误,SAProuter 将关闭连接。) |
SAProuter 选项 - 参考
SAProuter 提供了许多可选功能。它们由启动 SAProuter 时指定的字母表示,或发送给活动 SAProuter。您可以通过指定管理选项和任意数量的其他选项将大多数选项组合在一起。
如果指定的 SAProuter 选项组合无效,则 SAProuter 的行为就像仅指定了 saprouter 一样,并显示联机帮助。
使用以下语法指定选项:
Syntax UNIX/Windows: saprouter -<option>
Syntax IBM iIBM i: call saprouter ( ‘<option>’ )
注意
在默认配置中,SAProuter 不允许任何路由到自身。可以使用选项 -X 明确允许从 SAProuter 到自身的“环回”。此选项可能会影响系统的安全性,因为潜在的攻击者可能会重新配置 SAProuter。因此,出于安全原因,SAP 建议您不要使用此选项。更多信息:1853140
管理选项
SAProuter 的管理选项被发送到活动的 SAProuter,启动选项 (-r) 除外。
选项 | 含义 |
---|---|
-r | 启动SAProuter |
-s | 停止SAProuter |
-n | 重新读取路由权限表 |
-t | 切换跟踪 |
-c | 关闭连接 n |
-l / -L | 显示连接信息 |
-d | 将详细信息写入跟踪文件(转储缓冲区) |
-f | 清空内部缓冲区(刷新缓冲区) |
-p | 触发软关机 |
附加选项
选项 | 含义 | 默认值 |
---|---|---|
-R | 指定路由权限表的文件 | UNIX and IBM i: ./saprouttab Windows: <lwk>:\usr\sap\saprouter\saprouttab |
-K | - | |
-G | 日志文件 | 没有日志文件 |
-J | 限制日志文件的大小 | 无尺寸限制 |
-T | 指定跟踪文件 | SAProuter 目录中的 dev_rout |
-V | 启动 SAProuter 时更改跟踪级别 | 1 |
-E | 防止覆盖跟踪和日志文件 | -(当 SAProuter 重新启动时,跟踪和日志文件将被覆盖) |
-S | 更改 SAProuter 端口 | 3299 |
-C | 更改最大客户端数量 | 800 |
-D | 不解析传入连接的 IP 地址 | - |
-6 | 激活 IPv6 | - |
-Z | 为客户端设置标准错误消息 | - |
-I | 指定传出连接的网络接口 | - |
-Y | 启动具有最大客户端数量的附加 SAProuter | SAProuter 不会自动重启(当 n=1) |
-H | 指定主机名和密码 | - |
-M | 指定传出连接的端口 | - |
专家选项
使用
SAProuter 有一些专家选项,如下所述。
先决条件
警告
请仅在咨询 SAP 后或您在此领域经验丰富时使用这些选项!
功能
提供以下专家选项:
指令 | 功能 | 默认值 |
---|---|---|
-B <bufsize> | 每个客户端的最大队列长度 | 一个 NI 包 |
-Q <queuesize> | NI 包的最大堆空间 | 20,000,000 字节 |
-W <waittimeL> | 阻止网络调用的超时(如果发生错误) | 5000 毫秒 |
错误诊断
通常,如果您在使用 SAProuter 时遇到问题,请务必参考 SAPNet 中的相关说明。
Note Number | Content |
---|---|
0012023 | ERROR => NI_PONG in more than one package |
0029684 | STFK: Route permission denied |
0062636 | saprouter terminates on ending UNIX session |
0063342 | List: NI error codes |
0139184 | Saprouter: Invalid DATA from C |
0155839 | SAProuter and the Year 2000 |
0163436 | Check connection and raise a event when connect |
0164937 | NiPBind: service ‘sap???’ in use |
0167857 | niping -s error on Windows 95/8 |
0168937 | AIX: Error code for accept exits server |
0169398 | Reliant: setup connection in the R/3 System fails |
0180075 | SAProuter for Linux |
0181896 | AS/400: Signal handling in NI |
0184896 | NI: Error correction NI |
0104576 | Package fi lter between ITS and R/3 |
0042692 | Test tool for RFC links: sapinfo |
0066168 | Required documents when analyzing RFC problems |
0025917 | Changes to /etc/hosts are not accepted |
0147021 | “Address already in use” due to TCP state |
0053459 | SAP programs for Linux |
0085749 | Using SAProuter with SNC for secure printing |
0037211 | ftp not via SAProuter : "connection refused |
SAProuter 错误消息
定义
如果 SAProuter 运行时发生错误,则 SAProuter 客户端将显示错误消息。
结构
SAProuter 错误消息由八行或更多行组成,一行或两行后插入一个空行。
LOCATION | SapRouter on myhost |
ERROR | partner not reached |
TIME | Wed Jul 23 15:24:42 1997 |
RELEASE | 40A |
COMPONENT | NI (network interface) |
VERSION | 30 |
RC | -100 |
COUNTER | 1 |
前两行很重要。它们表明:
- 相关 SAProuter 在哪个主机上运行(本例中为 myhost )
- 错误属于哪个应用程序区域(此处为连接设置)
在本例中,SAProuter 无法与其合作伙伴建立连接。建议您再次检查连接。
警告
如果没有 LOCATION 条目,则错误消息指的是本地程序。
空白行后面的信息与内部错误特别相关。如果您无法更正错误,那么当您联系 SAP 时,详细信息可能会有所帮助。
路由权限被拒绝
先决条件
最常见的错误消息之一如下:
LOCATION | SapRouter on myhost |
ERROR | route permission denied |
TIME | … |
… | … |
由于 SAProuter 不允许相关路由,因此未建立连接。
流程
仔细检查此 SAProuter 的路由权限表(在主机 myhost 上),并在必要时进行更改。
您可以使用选项 -l / -L 找出正在运行的 SAProuter 和路由权限表所在的工作目录。
请记住,路由权限表中源地址、目标地址和目标端口匹配的第一个条目是决定性的!
您可以使用选项 -n(new saprouttab)导入修改后的路由权限表。
已达到最大客户端数量
先决条件
SAProuter 不接受连接并输出以下错误消息:
LOCATION | SapRouter on myhost |
ERROR | maximum number of clients reached |
TIME | … |
… | … |
这意味着 SAProuter 无法接受任何进一步的客户端,因为已达到最大数量(默认 800)。但是,SAProuter 会继续与所有其他客户端一起运行。
流程
为了不必重新启动 SAProuter(从而结束所有现有连接),您应该使用选项 -p 对 SAProuter 执行软关闭。然后 SAProuter 继续在不同的端口上运行。然后可以在旧端口上启动 SAProuter,可能使用更多客户端(请参阅选项 -C <clients> )。然后它将再次接受客户端。
如果您想自动执行此过程,可以使用选项 -Y <n> 启动 SAProuter。每次客户端表已满时,都会自动启动新的 SAProuter。