2007/09/13
Fw Intel SS7新产品提供电信级短信解决方案
大家可能并不十分清楚,第一封短信是在1982年发出的,内容是"Merry Christmas" , 经过了这么多年的时间,短信一直只是试验室里的东西,直到近两年,短
信才逐渐成为了人们在日常生活和节
假期间相互联系的一个非常方便、实惠的方式。举
一个简单的例子,在中国春节短短的七天期间,人们用于互相拜年和问候的短信就有70亿条之多。一方面它给电信运营商和相关网站带来了巨额的利润,但另一方面也带来了非常繁重的网络负载!
现有的网络是基于七号信令的网络,但现有的七号信令并不是专为短信而设计的,这样,在如今如此大流量的短信压力下,时常出现网络不堪负载的情况出现。例如:在去年圣诞节期间,英国的电信网络在巨大的短信流量下瘫痪。
针对这种情况, 英特尔公司及时的推出了能够满足现有网络需要的七号信令控制单元,可以为呼叫控制、无线应用和智能网应用提供七号信令连接,它向应用主机提供与其他信令接口单元系统及七号信令卡相兼容的基于消息的协议应用编程接口(API)。它每秒可以处理多达800个TCAP,或者450 ISUP或TUP呼叫,可以提供在ISUP中支持多达16.384个电路和在12链路集中支持多达12个七号信令链路,在现有网络中部署了SIU520后,对于短信的处理能力和网络负载上都大大提高。
同时,由于现有的七号信令并不是专为短信所设计,能否有更好的办法提高短信的处理能力呢?IP就是解决方案。英特尔可以提供从七号信令到IP的信令网关SG430,将在原来基于七号的处理转到IP网络上,大大提升短信处理的承载能力和处理空间。它的主要特点是提供开放的七号信令和IP之间的网络互通的标准,支持多种七号信令的接口,具有高级路由能力和多主机分布式应用服务器系统,还可以实现信号转接点(STP)的操作。
有了这样的信令处理单元和信令网关,可以使运营商顺利的升级旧的短信系统,同时可以将新的短信系统建立在有更高处理能力的IP网络上,从而使运营商能够为客户提供更加稳定和高效的短信系统。
英特尔Intel® NetStructure™ SIU520信令接口单元
Intel英特尔®NetStructure™ SIU520信令接口单元(SIU)可以为呼叫控制、无线应用和智能网应用提供七号信令连接,它向应用主机提供与其他信令接口单元系统及七号信令卡相兼容的基于消息的协议应用编程接口(API)。Intel英特尔 NetStructure SIU520能够处理各种七号信令协议,使得在世界各地都可以提供各种各样的应用。它把七号信令协议卡和带有512K缓存的双英特奔腾 III处理器相结合,从而成为高吞吐量应用的理想选择。
特性
· 每秒可以处理多达800个TCAP,或者450 ISUP或TUP呼叫
· 在TCAP, INAP, GSM-MAP, 或 IS41-MAP中支持多达16.384个同步事务处理
· 在ISUP中支持多达16.384个电路
· 在12链路集中支持多达12个七号信令链路
· 2U高的电信级服务器
· 通过IP可以连接到多达32个应用主机
· 双重容错配置
· 双冗余热切换供电选择
· 支持七号信令协议,包括MTP, ISUP, TUP, SCCP, TCAP, INAP, GSM-MAP, 和IS41-MAP
· 支持很多本地协议,包括ANSI, ITU, ETSI, 香港,法国,中国等国家的协议
· 包含Linux*, Windows* 2000, or Windows NT* 等操作系统下的驱动程序
应用
创建七号信令服务节点,包括:
· 无线节点 - 短消息服务中心(SMSC),归属位置注册(HLR), 漫游网关
· 无线短消息服务 (SMS)平台/网关
· 智能网业务控制节点(SCP), 智能节点IP
· 语音拨号 (VAD),语音门户,交互式语音应答 (IVR)或者语音信箱系统
SIU体系结构
英特尔Intel NetStructure SIU520提供了在七号信令协议栈中从MTP3向上各层协议的访问。应用主机上的驱动程序通过IP向SIU发送或者从SIU接收API消息。这种体系结构解放了应用主机,从而使之能够专注于处理器和内存资源管理,使它成为高性能分布式系统中的理想选择。
分布式事务服务器
分布式事务服务器 (DTS) 模块使TCAP实例可以运行在多个应用主机之上。到主机的路由选择根据SCCP子系统号码(SSN)或者TCAP事务标识来决定,这就使不同的主机可以运行不同的TCAP用户协议,如GSM-MAP或INAP,并能保证事务能够回溯到相应的主机。
DTS使系统的设计具有更好的灵活性,对于具体的应用,可以定制系统单元的负载。TCAP和其他应用主机是分开销售的。
系统的弹性
可以把两个Intel英特尔 NetStructure SIU520配置为共享同一个七号信令点码,这样,在单个点码内就可以提供完全弹性的操作。在正常操作情况下,两个单元分担信令负荷。如果有一个单元出现故障,另一个单元就要处理所有的信令。
SS7/IP SIGTRAN Intel英特尔® NetStructure™ SG430 信令网关
特点和优势
· 七号信令和IP之间的网络互通采用开放的标准
· 同时支持多种七号信令- ANSI/ITU/ETSI/JAPAN
· 支持多种接口- E1/T1/V.35
· 支持连接到SIGTRAN兼容的应用服务器
· 是基于IP的七号信令应用的理想选择
· 具有高级路由能力
· 多主机分布式应用服务器系统
· 实现信号转接点(STP)的操作
· 双冗余热切换电源选择
· 高性能
· SS7/SIGTRAN应用服务器软件
应用
· 移动短消息业务/位置服务
· 分布式交换
· SS7 long haul and offload
· GPRS集成
· IP电话网关
· 智能网SCP
· 提供基于IP的应用服务
概述
Intel英特尔 NetStructure SG430信令网关在新一代网络和业务平台中是很关键的设备。除了支持标准的协议和体系结构,该网关还能提高系统的可靠性、可维护性和效率。
SG430信令网关是七号信令系统和IP网络之间的接口,从而可以从IP应用程序(如软交换单元和移动网络单元)接收或者向IP应用程序发送七号信令信息。 它使这些应用程序分布在多个平台上,从而使网络具有可伸缩性和弹性。路由算法并不仅仅在IP域中重新创建七号信令链路和链路集,还形成了高级分布式业务平台的基础。该网关使用IETF组织的SIGTRAN协议,从而保证与第三方设备的互操作性。
SG430信令网关的灵活性和控制功能使它成为呼叫控制应用和事务应用的理想选择。该网关能够用于创建无线和智能网系统、IP电话网关、扩展现有网络的七号信令网的带宽等。该网关使用SIGTRAN流控制传输协议(SCTP)和适配层,通过IP网络向远端应用或者在网关之间透明地传送七号信令。SG430信令网关管理网络互通,如在IP域与七号信令之间的可用路由的监控和报告。
当新的业务和体系结构在现有网络和新的以数据为中心的网络中开始部署时,就需要有基于标准网络升级系统。SG430信令网关采用了成熟的七号信令软硬件、互操作的SIGTRAN协议,具有强大的七号信令和IP网络控制功能。
SG430信令网关是设计用于广域网(WAN)架构之上的。
应用
SG430信令网关可以用于各种应用场景和环境中。在公共电话网和其他可靠性要求很高的环境中,该信令网关是一个理想的选择。对于很多七号信令/IP应用,该信令网关都是最佳的选择。
Fw 证券远程委托解决方案 - Diva Server PRI 卡在证券委托中的应用
Diva Server PRI 卡在证券委托中的应用
需求分析:券商证券委托一般包括:电话传真委托、可视委托(又称远程大户室)和网上委托等。其中除网上委托可通过Internet网外,其它委托必须通过PSTN网来连接。在当前阶段,此类委托占有最大的客户群。以前,每个券商为了实现此类委 托,必须在券商中心的机器上装上语音卡、传真卡、座席卡来满足电话传真委托,另外还必须在另外一台机器上装上多串口卡和Modem Pool与座席卡相连来满足可 视委托,远程大户室等业务。此方案, 用户不仅需要购买很多卡, 占用很多机器 插 槽,而且在实现可视委托时,只能接受客户端PSTN模拟Modem 的呼叫, 而不 能接收目前ISDN 的连接方式,速 度非常缓慢。本文主要提 出了 一种采用Eicon Diva Server PRI 卡的新型解决方案,本方案不仅省去了在中心插上 传真卡、语音 卡、 座席卡多种卡,又省去了多串口卡和Modem Pool 构件,只需在中心的一台机 器插上1-4 块 Diva Server PRI卡后,便能满足你电话传真委托、可视 委托 、远程大 户室等多种业务,还支持WAP呼叫,SMS短消息发送等,在可视委托和远程大户室业务中 ,不仅支持PSTN Modem的模拟呼叫,也支持ISDN的数字呼叫,方案的 性价比极高 , 方案连接图如下图所示:
本方案的优点如下:
1. 同一块Diva Server PRI (30B+D)卡便能把券商的所有业务都集成在 一起: 电话 传真委托、可视委托、远程大户室、WAP查询,短消息服务 等,使方案的集成 度做到了最高,性价比做到了最高。
2. 与以前旧方案相比,省去了传真卡,更省去了支持可视委托而配备的座席卡和多用户串口卡和Modem Pool等,服务器的功能更加强大,业务更加 多样。
3. 采用纯ISDN数字技术,真正用好了ISDN综合业务的特点,并使各种委托操作 (特别是可视委托 和电话委托)处理更加快速,更为精确。
4. 用本方案实现的远程大户室可视委托不仅能实现PSTN的接入,还能实现ISDN的接入和WAP的接入,所以反应速度更为灵敏,方式更为灵活;通讯方式上:既能支持TCP/IP 的接入, 又能支持Modem AT 的方式,券商原先旧有软件不需 做移植。
5. 一台PC 最多能插4块Diva Server PRI卡,故能支持120路各类用户的呼叫; Diva Server PRI 卡 根据支持传真用户和模拟Modem用户的数量,有多种型号可供选 择,方式极为灵活。
6. Diva Server PRI 卡的高速RISC CPU 和DSP体系,使得各种应用, 如 FAX、 WAP、 Modem模拟等都有相应的DSP来处理,所以最大 限度地不占用PC 机 资 源。
7. Diva Server PRI 卡能支持CAPI 和TAPI 的开发,Eicon 独有的Diva Server SDK 更使各种应用开发起来非常方便,所以软件开发商的应用开发移植非常简单方便。
8. 本方案在同一根PRI线上实现了语音、数据、传真等各种应用,使各种应用共享一根线,通讯线路资源可获得最大限度的利用,具有最高的运行成本性价 比。
用户问答:
1. 我的可视委托业务,以前通过AT命令控制MOXA卡来实现,如我想采用你们的Diva Server PRI卡,我的应用软件是否需要做移植?
答:不需要。Diva Server PRI卡支持TCP/IP和AT命令两种通讯方 式, 所以你的 可 视委托 应用软件,不管你是TCP/IP 方式或Modem AT方式都不需 要做另外 的移植工作。
2. 目前中国电信提供的数字线有两种:1,PRI (采用DSS1信令); 2,E1线采用 (中国一号信令),请问这两种方式,哪种更适合券商使用?
答:从技术上讲,肯定是PRI线DSS1信令更适合券商使用,相对中国一号信令 PRI DSS1 有以下好处:1,PRI DSS1信令是一种共路信令,其专门有一个D 信 道来传信令,而中国 一号信令是随路信令。用PRI某些业务实现 起来特别方 便,举个例子:采用PRI就算其30个信道全部占线的情况下,如有第31个、32个呼叫进来时,中心虽然不能接收它,但中心的应用程序也能知道有多少呼叫因为线路忙不能进来,并能记录下这些呼叫的主叫号码,这对实现某些特殊应 用(如CRM)特别有用。2,ISDN是综合业务数字网,采用PRI构建的券商中心能接收ISDN、PSTN、GSM的各类模拟或数字数据传输,而普通E1线中国一号信令,则不能接收ISDN 的 数据传输。
3. 采用Diva Server PRI卡来实现传真服务,和普通的传真卡实现传真方式 相比, 是否会占用主机更多的资源?
答:不会,我们的Diva Server PRI 卡,传真应用是由专门的卡上DSP 来实现 的,而且是一个传真连接占用一个DSP资源,所以传真的格式变换等都是通过DSP 来实现的,不会占用任何的PC机资源。而且 采用我们的 Diva Server PRI卡实现传真方式更为灵活,你的应用程序在任何时候都能 接收传真信号, 而无需象普通的语音卡和传真卡方式下,需要专门用DTMF按键转到传真卡 后,才能接收传真。
4. 你们的Diva Server PRI有哪几种?客户如何来选择采用哪种卡?
答:我们的Diva Server PRI 有以下几种: Diva Server PRI-2M, Diva Server PRI-9M、Diva Server PRI-23M、 Diva Server PRI-30M,M的 数目代表 卡上 的DSP的数目,即能支持FAX和Modem的传接数目,所以根据你的需求, 你可选择不同的卡,如你需要7路传真,7路远程大户可视委托,30路语音呼 叫,则你可选择Diva Server PRI-9M 卡,当然,功能上讲,我们的 Diva Server PRI-30M卡功能最为强大,它能支持不超过30路的各类连接,包括FAX, Modem,WAP等模拟、数据会话连接。
5. 在方案特点上,你说到各种应用共享一根PRI线,通信线路资源可获得最大限度的利用,能具体解释一下吗?
答:下面以我们的Diva Server PRI-30M卡来举例说明,Diva Server PRI-30M 卡能支持不超过30的各类连接,也就是说你的各类应用,如语音,传真,远程大户室,WAP 等各类应用的最大连接数都为30,只要这些应用客 户的总和不 超过 30,你的各类应用客户都能方便进行操作访问。而在传统的方案中, 传真 数目受 到传真卡的限制,远程大户室连接数受到座席卡和Modem POOL 的限制 通信资源显然 不能共享。所以,在采用Diva Server PRI卡方式下,通信资源可 获得最大限度 的利用,具有最高的运行成本性价比。
6. 采用你们的Diva Server PRI 卡,远程大户可以用ISDN,也可以用PSTN来进 行连接,这种方式我非常喜欢,但不知在ISDN方式下,对大户的ISDN 终端设 备是 否有所限制?
答:前面我们说过,我们的Diva Server PRI卡支持TCP/IP和AT命令两种通 讯 方式。在TCP/IP通讯方式下,对终端设备没有限制,只要大户的终端设备 能拨号上网,便能和Diva Server PRI 卡来协同工作。如采用AT命令方式, 则需要大 户的ISDN终端设备 能支持COM方式下V.120协议,目前,大多数终 端设备都能支 持这种工作方式,我们Eicon的DIVA T/A 也能支持。
7. 你们的Diva Server PRI 是如何来识别一般的语音电话呼叫和远程大户室 的普通Modem呼叫的?
答:我们是通过被叫号码来识别的,一般一根PRI线,中国电信可分配你10个号码,我们可把券商的业务分成2类:1)电话和传真业务。2)远程大户和可视委托业务。我们选取2个号码,其中一个号码专门作语音和传真业务;通过简单的配置,可在软件中配置另一个号码来接收远程大户和可视委托呼叫,对不是该号码的呼叫不予理睬。通过这种方法便可清楚地鉴别一般的电话呼叫和远程大户室普通Modem的呼叫,从而做到不同应用间资源共享动态平衡,最大限度地利用线路资源。
8. 请问你们的Diva Server PRI卡支持哪些主流的操作系统,如果我们作应用程 序的开发,有没有相应的开发工具,开发难易程度如何?
答:我们的Diva Server PRI卡支持Windows 2000,Windows NT以及Linux等 目前主流的操作系统。同时,Diva Server PRI 卡支持标准的TAPI,CAPI (CAPI是ISDN上的一个开发接口国际标准)等开发工具,另外,Eicon独有的 Diva Server SDK开发工具,更为你的开发提供了一个非常简单的编程接口, 你应用程序的移植工作非常方便。我们公司也有相应的技术工程师提供全面 的技术支持和技术培训。
2007/09/12
Linux: Setup a transparent proxy with Squid in three easy steps
Main benefit of setting transparent proxy is you do not have to setup up individual browsers to work with proxies.
My Setup:
i) System: HP dual Xeon CPU system with 8 GB RAM (good for squid).
ii) Eth0: IP:192.168.1.1
iii) Eth1: IP: 192.168.2.1 (192.168.2.0/24 network (around 150 windows XP systems))
iv) OS: Red Hat Enterprise Linux 4.0 (Following instruction should work with Debian and all other Linux distros)
Eth0 connected to internet and eth1 connected to local lan i.e. system act as router.
Server Configuration
Step #1 : Squid configuration so that it will act as a transparent proxy
Step #2 : Iptables configuration
a) Configure system as router
b) Forward all http requests to 3128 (DNAT)
Step #3: Run scripts and start squid service
First, Squid server installed (use up2date squid) and configured by adding following directives to file:
# vi /etc/squid/squid.conf
Modify or add following squid directives:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
acl lan src 192.168.1.1 192.168.2.0/24
http_access allow localhost
http_access allow lan
Where,
httpd_accel_host virtual: Squid as an httpd accelerator
httpd_accel_port 80: 80 is port you want to act as a proxy
httpd_accel_with_proxy on: Squid act as both a local httpd accelerator and as a proxy.
httpd_accel_uses_host_header on: Header is turned on which is the hostname from the URL.
acl lan src 192.168.1.1 192.168.2.0/24: Access control list, only allow LAN computers to use squid
http_access allow localhost: Squid access to LAN and localhost ACL only
http_access allow lan: — same as above –
Here is the complete listing of squid.conf for your reference (grep will remove all comments and sed will remove all empty lines, thanks to David Klein for quick hint ):
# grep -v "^#" /etc/squid/squid.conf | sed -e '/^$/d'
OR, try out sed (thanks to kotnik for small sed trick)
# cat /etc/squid/squid.conf | sed '/ *#/d; /^ *$/d'
Output:
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
hosts_file /etc/hosts
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl purge method PURGE
acl CONNECT method CONNECT
cache_mem 1024 MB
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
acl lan src 192.168.1.1 192.168.2.0/24
http_access allow localhost
http_access allow lan
http_access deny all
http_reply_access allow all
icp_access allow all
visible_hostname myclient.hostname.com
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
coredump_dir /var/spool/squid
Iptables configuration
Next, I had added following rules to forward all http requests (coming to port 80) to the Squid server port 3128 :
iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 80 -j DNAT –to 192.168.1.1:3128
iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 3128
Here is complete shell script. Script first configure Linux system as router and forwards all http request to port 3128 (Download the fw.proxy shell script):
#!/bin/sh
# squid server IP
SQUID_SERVER=“192.168.1.1″
# Interface connected to Internet
INTERNET=“eth0″
# Interface connected to LAN
LAN_IN=“eth1″
# Squid port
SQUID_PORT=“3128″
# DO NOT MODIFY BELOW
# Clean old firewall
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
# Load IPTABLES modules for NAT and IP conntrack support
modprobe ip_conntrack
modprobe ip_conntrack_ftp
# For win xp ftp client
#modprobe ip_nat_ftp
echo 1 > /proc/sys/net/ipv4/ip_forward
# Setting default filter policy
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
# Unlimited access to loop back
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Allow UDP, DNS and Passive FTP
iptables -A INPUT -i $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT
# set this system as a router for Rest of LAN
iptables --table nat --append POSTROUTING --out-interface $INTERNET -j MASQUERADE
iptables --append FORWARD --in-interface $LAN_IN -j ACCEPT
# unlimited access to LAN
iptables -A INPUT -i $LAN_IN -j ACCEPT
iptables -A OUTPUT -o $LAN_IN -j ACCEPT
# DNAT port 80 request comming from LAN systems to squid 3128 ($SQUID_PORT) aka transparent proxy
iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 80 -j DNAT --to $SQUID_SERVER:$SQUID_PORT
# if it is same system
iptables -t nat -A PREROUTING -i $INTERNET -p tcp --dport 80 -j REDIRECT --to-port $SQUID_PORT
# DROP everything and Log it
iptables -A INPUT -j LOG
iptables -A INPUT -j DROP
Save shell script. Execute script so that system will act as a router and forward the ports:
# chmod +x /etc/fw.proxy
# /etc/fw.proxy
# service iptables save
# chkconfig iptables on
Start or Restart the squid:
# /etc/init.d/squid restart
# chkconfig squid on
Desktop / Client computer configuration
Point all desktop clients to your eth1 IP address (192.168.2.1) as Router/Gateway (use DHCP to distribute this information). You do not have to setup up individual browsers to work with proxies.
How do I test my squid proxy is working correctly?
See access log file /var/log/squid/access.log:
# tail -f /var/log/squid/access.log
Above command will monitor all incoming request and log them to /var/log/squid/access_log file. Now if somebody accessing a website through browser, squid will log information.
Problems and solutions
(a) Windows XP FTP Client
All Desktop client FTP session request ended with an error:
Illegal PORT command.
I had loaded the ip_nat_ftp kernel module. Just type the following command press Enter and voila!
# modprobe ip_nat_ftp
Please note that modprobe command is already added to a shell script (above).
(b) Port 443 redirection
I had block out all connection request from our router settings except for our proxy (192.168.1.1) server. So all ports including 443 (https/ssl) request denied. You cannot redirect port 443, from debian mailing list, “Long answer: SSL is specifically designed to prevent “man in the middle” attacks, and setting up squid in such a way would be the same as such a “man in the middle” attack. You might be able to successfully achive this, but not without breaking the encryption and certification that is the point behind SSL“.
Therefore, I had quickly reopen port 443 (router firewall) for all my LAN computers and problem was solved.
(c) Squid Proxy authentication in a transparent mode
You cannot use Squid authentication with a transparently intercepting proxy.
Further reading:
How do I use Iptables connection tracking feature?
How do I build a Simple Linux Firewall for DSL/Dial-up connection?
Update: Forum topic discussion: Setting up a transparent proxy with Squid peering to ISP squid server
Squid, a user’s guide
Squid FAQ
Transparent Proxy with Linux and Squid mini-HOWTO
Updated for accuracy.
Please subscribe to our free e-mail newsletter or full RSS feed to get all updates. Or just leave a reply/comment ( 106 ).
You may also be interested in (skip to comment)...
Squid Proxy Server Limit the number of simultaneous Web connections from a client with maxconn ACL
Install Squid Proxy Server on CentOS / Redhat enterprise Linux 5
Linux: How to disable the IPv6 protocol
Top 10 Hits and Zeitgeist of 2006 for your edification and fun
Linux Iptables allow SQUID proxy incoming client request
how to setup squid server
thanks in advance
-----
Aug 10th, 2005
your /etc/squid/squid.conf is probably misconfigured and
at a minimum should contain:
1] add your domain to the acl (access control lists) below the default entry
"acl CONNECT method CONNECT" line like so: [use the CIDR instead of the subnetmask]
(remember allow first then deny last)
acl yourdomainshortname src 192.168.0.0/24
acl yourdomainshortname src .yourdomain.com
you should be able to use this to refer to later in the file now...
2] search further down in the file for the line that looks like:
"INSERT YOUR OWN RULES HERE" add the following line under the
localhost rule: (refer to the items in 1] above)
http_access allow yourdomainshortname
restart squid
I believe that squid uses port 3128 by default.
to test this you can configure a browser and point it at your proxy server
troubleshooting: [do this on the proxy server]
'tail -f /var/log/messages' in a seperate bash window while restarting squid
'tail -f /var/log/squid/access.log' in a seperate bash window while
attempting connections to the proxy server. watch the output for
success & failure.
double check iptables to ensure that it isnt running a conflicting firewall
'service iptables status' if iptables is running
you can temporarily disable it and restart squid and then test again:
'service iptables stop'
In the long run you should probably configure iptables to allow, deny,
drop and log traffic as appropriate for the given ports/services that you require.
ensure that /etc/hosts is setup correctly and there are seperate entries
for localhost and your system like so:
127.0.0.1 localhost localhost.localdomain
192.168.0.x proxyserver proxyserver.yourdomain.com wwx.youretcdomain.com
/etc/hosts.allow & /etc/hosts.deny can also present conflicts. ensure
that they dont.
you can also test a given port on the localhost with telnet to see if you
are allowed to connect at all:
'telnet localhost 3128' and see if you're even allowed to connect
run the following command to check a given port
'netstat -n | grep 3128' (or any other port)
make sure you can resolve yourself and other machines in dns by using
'dig' or nslookup' to avoid the obvious...
enjoy & happy troubleshooting..
Cain
I used up all my money on you baby...
... and I want it BACK.
Fw 什么是七号信令网关
概述
现有的通信网络可分为传统的电路交换网和分组交换网。不同的网将按各自的最佳方向独立演进,融合发展。最终形成一个统一的融合的主要是以IP为基础的分组化网。然而,从传统的电路交换网到分组化网将是一个长期的渐进过渡过程。
电信业务将会跨网络发展。在语音业务和数据业务融合的过程中,以电路交换为基础的网络和以分组交换为基础的网络之间的通信势必要求信令能够互通,两个全球 最大的网络将长期共存,信令互通的潜力将是巨大的。更重要的是下一代的网络是以IP为基础的,无论是软交换体系结构还是第三代移动通信系统都采用基于IP 的分组交换网络,因此信令网关是必不可少的,信令网关就是两个不同的网之间信令互通设备。
另外在分布广阔的接入网中,利用普遍存在的IP网络来传输接入信令,如DSS1和V5.2,也有很大的市场需求。
SS7信令网关
信令网关的作用就是完成两个不同网络之间用于控制的信息的相互转换,以实现一个网络中的控制信息能够在另一个网络中延续传输。信令网关是在两个网络的边界 接收和发送信令的代理,是两个网络间的信令关口,对信令消息进行翻译、中继或终结处理。信令网关可以独立设置,也可以与其他网关综合设置,来处理与接入线 路或中继线路有关的信令。
目前使用最广泛的两个网络一个是电话交换网络,其中包括固定电话网和移动电话网,另一个是IP网络,包括Internet,Intranet和Extranet。
电话交换网络中,常用的信令如下图所示:
图中MAP,CAP,RANAP,BSSAP为移动通信系统使用的信令;ISUP,TUP,INAP为固定网使用的信令;DSS1和V5.2为接入网使用的信令。
九十年代末,IETF成立了信令传输(SIGTRAN)工作组来解决分组形式的电话信令在IP网络上传输,确定电话信令的功能和性能要求,实现在IP网络节点之间传输如SS7 ISUP,TUP和DSS1之类的信令。
SIGTRAN构架是在流控传输协议(SCTP)上加一个用户适配层(UAL)。用户适配层是由多个适配模块所组成。它们分别为上层现有的电话用户/应用 提供原来的原语接口(如管理指示,数据操作等原语),并把上层特定信令协议打包在SCTP上传输。SCTP基于标准的互联网协议(IPv4,IPv6)之 上。SIGTRAN构架如下图所示:
图中粉红色部分为SIGTRAN的协议栈,在它们之上的是对应的电话信令协议。SIGTRAN的协议栈分为2层:一层是SCTP,它提供多个流的,可靠的 数据传输,用户数据的捆绑和分段,阻塞和流量控制,防止“拒绝服务”和“伪装”的攻击等功能。另一层是用户适配层,图中由SUA、M3UA、M2UA、 M2PA、IUA和V5UA五个适配模块所组成,它们分别来满足各种电话信令协议适配的要求。
电话网中的一个信令节点与IP网中的一个信令节点不能直接相连,它们之间的相互通信需要依靠一个叫做信令网关(Signaling Gateway,SG)的中间设备来进行。从IP网络的角度来看,这个信令网关有时也叫做应用服务器通信设备,因为在UAL中常把上述的IP信令节点叫做 应用服务器(Application Server, AS)。通过信令网关实现两网信令互通的通用结构如下图所示:
由于前面所述的原因,一般来讲信令网关总是位于电话网络和IP网络之间,完成以SS7为主的传统电话信令与SIGTRAN的IP电话信令之间消息的相互转 换,支持高层信令协议(SigProt)的互通。从电话网的角度来看,由于信令网关主要完成SS7信令的处理,所以通常把它叫做七号信令网关。当信令网关 与其他网络设备集成时,其中有一侧的接口将成为内部接口。例如在上图中,如果信令网关与左边的信令端点(SEP)设备集成时其左侧的TTSP接口将成为内 部接口,同样与ISEP集成时其右侧的IP电话信令接口成为内部接口。
应用举例
在下面的例子是信令网关在WCDMA 3G 移动通信网络中的应用。它是一种可能的实现方案之一,实际的网络按不同的具体需有不同的配备。
下图的例子表示了WCDMA电路交换域(CS)的结构。本例使用了基于IP的核心网络,并在图中加上了媒体服务器(Media Server)。媒体服务器在MSC-Server的控制下可以提供简单的通知服务,在应用服务器的控制下可以提供增殖服务,如语音短信、会议电话等。
在这个例子中媒体和信令网关(Media & Signalling Gateway)、移动交换中心网关服务器(GMSC Server)、拜访位置寄存器(VLR)、归宿位置寄存器(HLR)都集成了信令网关的功能,它们分别起到无线接入网的信令网关和漫游信令网关的作用。 独立设置的信令网关(Signalling Gateway)完成传输信令网关的作用。
产品选型
在信令网关设备中,需使用包括系统平台、接口资源板、信令板、处理器板、以及协议软件等。信令网关有很高的可靠性要求,通过冗余设计,避免单点故障。通常实现双机主备配置时,可使用HA软件。
1) 平台
根据信令网关系统的不同实现方式,采用不同的平台。
PICMG 2.16 Blade System
例如:ADLINK cPSB-2100,cPSB-800,cPSB-880 系列
CompactPCI with H.110 System
Intel x86 base:ADLINK cPCIS-6400(4U),cPCIS-3330(9U)系列
Sun UltraSPARC base:ADLINK cSP-4502(4U),cSP-9802(9U)系列
2) 信令接口板
根据要求实现的信令链路不同,以及信令处理能力的不同,可选用多种信令板,板上实现MTP1、MTP2,如:
Interphase 系列产品,如iSPAN 4539、iSPAN 6535、iSPAN 1635等,
NMS TX-TX3220C 系列
东进 (DonJin) D607C/1207C
3) CPU板
负责高层协议的处理(MTP3以上层协议),以及实现SS7网管。可采用ADLINK多款高性能处理器板,如cPCI-6840 1.6GHz Pentium® M 处理器板、cPCI-6810 Intel LV Tualatin处理器板、cPCI-6860 双Xeon 2.4GHz处理器等。
4) 协议软件
根据信令网关所处网络中不同位置,需选择实现以下多层协议:MTP3、SCCP、Q.921、LAPV5 、M2UA、M2PA、M3UA、SUA、V5UA、IUA、SCTP、IP等。可选择如Trillium、Hughes等协议软件商提供的协议软件。
2007/09/11
VBA Script OLE Example
t = Timer
While objIE.Busy Or objIE.readyState <> 4
If Timer - t > 30 Then '30秒であきらめる
MsgBox "タイムアウトしました"
End
End If
Wend
End Sub
'IE Example
Sub Translate()
'Dim objIE As InternetExplorer
Dim objIE As Object
Dim RngURL As Range
Dim RngText As Range
On Error Resume Next
MsgBox "回線の状況により、処理に2分程度かかることがあります。"
Set RngURL = Range("ExciteURL")
Set RngText = Range("英文和訳")
RngText.Columns(2).ClearContents
Set objIE = CreateObject("InternetExplorer.Application")
'objIE.Visible = True
yURL = RngURL
With objIE
.Navigate yURL
Call IEWait(objIE)
End With
For i = 1 To 5
If RngText(i, 1).Value = "" Then Exit For
With objIE.Document.all
Set tmp = .Item("start")
.Item("before")(0).Value = RngText(i, 1).Value
.Item("start").Click
End With
Call IEWait(objIE)
RngText(i, 2).Value = objIE.Document.all.Item("after")(0).Value
Next
objIE.Quit
Errorexists = (Error() <> "")
On Error GoTo 0
If Errorexists Then
MsgBox "何らかの原因で正常に処理できませんでした"
Else
MsgBox "正常に処理が終了しました"
End If
End Sub
Sub FMJExample()
On Error Resume Next
'FMJのオブジェクトの変数
Dim FMAP As New FMPRO50Lib.Application
'Dim FMAP As Object
'Dim Docs As FMPRO50Lib.Documents
Dim Docs As Object
'Dim Doc As FMPRO50Lib.Document
Dim Doc As Object
'普通の変数
Dim RngFileName As Range
Dim RngScriptName As Range
Dim RngResult As Range
Dim tarDir As String
Dim t As Double
On Error Resume Next
'変数初期化
Set FMAP = CreateObject("FMPRO50Lib.Application")
Set Docs = FMAP.Documents
Set RngFileName = Range("ファイル名")
Set RngScriptName = Range("スクリプト名")
Set RngResult = Range("実行結果")
tarDir = ThisWorkbook.Path
RngResult.ClearContents
'FMJ開いてスクリプト実行して閉じる
FMAP.Visible = True
For i = 1 To 10
t = Timer
If RngFileName(i) = "" Then Exit For
'FMJ開く
On Error Resume Next
Set Doc = Docs.Open(tarDir & "\" & RngFileName(i), "")
Doc.Activate
ErrExists = (Error() <> "")
On Error GoTo 0
If ErrExists Then
RngResult(i, 2) = "ファイルがありません"
Else
'スクリプト実行
Doc.DoFMScript (RngScriptName(i))
If FMAP.ScriptStatus = 0 Then
RngResult(i, 2) = "スクリプトがありません"
Else
'スクリプトが終わるまで待つ
While FMAP.ScriptStatus <> 0
Wend
'閉じる
Doc.Close
End If
End If
RngResult(i, 1) = Timer - t
Next
FMAP.Quit
Errorexists = (Error() <> "")
On Error GoTo 0
If Errorexists Then
MsgBox "Error" & Errorexists
Else
MsgBox "Finished Successfully"
End If
End Sub
' Outlook Example
Sub GetSbj()
Dim olApp As Object
Dim NameSpc As Object
'Dim Fldr As Outlook.MAPIFolder
Dim Fldr As Object
'Dim mailitem As Outlook.mailitem
Dim mailitem As Object
Dim Rng As Range
On Error Resume Next
Set olApp = CreateObject("outlook.application")
Set NameSpc = olApp.GetNamespace("MAPI")
Set Fldr = NameSpc.GetDefaultFolder(6) '6=olFolderInbox:受信フォルダ
Set Rng = Range("SbjOut")
Rng.ClearContents
i = 1
For Each mailitem In Fldr.Items
Rng(i, 1) = mailitem.Subject
i = i + 1
If i > 5 Then Exit For
Next
Errorexists = (Error() <> "")
On Error GoTo 0
If Errorexists Then
MsgBox "Error" & Errorexists
Else
MsgBox "Finished Successfully"
End If
End Sub
ユーザー・エラーからの復旧方法
◆まえがき
データベースに対して、操作上あるいはプログラム上の変更が誤って行われた
場合、それが原因でデータが失われたり破損したりすることがあります。
通常、表の削除などのユーザー・エラーでは、失われた変更の再入力(失われ
た変更の記録が存在する場合)、削除したオブジェクトのインポート(エクス
ポート・ファイルが存在する場合)、個々の表領域のリカバリ(表領域の
Point-in-Time リカバリ(TSPITR ))、データベース全体の不完全リカバリの
いずれかの作業が必要になります。
この文書では、その中から”データベース全体の不完全リカバリの手順”につい
てご紹介させて頂きます。
◆ 目次
1. 処理の概要
2. 前提条件
3. 実行手順と実行例
4. 補足
*1.処理の概要*
バックアップから必要なデータファイルのみを開発系にリストアし、かつ該当オブ
ジェクトが存在した時間までリカバリします。その後、EXPORT・IMPORTを行う事に
より本番系のデータベースは最新の状態を保持しつつ、該当オブジェクトを削除前
の状態に戻す事ができます。
*2.前提条件*
1.SYSTEM表領域、ROLLBACK SEGMENT(UNDO SEGMENT)用表領域、失われた
オブジェクトが存在する表領域のバックアップが存在すること。
2.アーカイブ運用であること。
3.同じOS・Oracle環境の開発系データベースがあること。
4.ディスク容量的に余裕があること。 Page 2
Standard Vol.73
Copyright(C) K.K.Ashisuto All right Reserved
2
*3.実行手順と実行例*
以下のような仮定で障害が発生し、一部のバックアップだけを本番系から
開発系にリストアを行い、時間ベースの不完全リカバリを実行します。
・1/1の時点でフルバックアップを取得し、1/10の18:10の時点で誤って
以下のような表を削除してしまいました。
SQL> SELECT owner,segment_name,tablespace_name
2
FROM dba_segments
3
WHERE owner='TESTUSER' AND segment_name='TEST';
OWNER
SEGMENT_NAME TABLESPACE_NAME
--------------- --------------- ---------------
TESTUSER
TEST
USERS
SQL> DROP TABLE test;
表が削除されました。
SQL> SELECT owner,segment_name,tablespace_name
2 FROM dba_segments
3 WHERE owner='TESTUSER' AND segment_name='TEST';
レコードが選択されませんでした。
SQL> SELECT sysdate FROM dual;
SYSDATE
-------------------
2004-01-10 18:10:00Page 3
Standard Vol.73
Copyright(C) K.K.Ashisuto All right Reserved
3
a.取得済みバックアップから必要なデータファイル(失われたオブジェクトが
存在する表領域) を開発系にリストアします。
※SYSTEM表領域やROLLBACK SEGMENT(UNDO SEGMENT)用の 表領域も含みます。
b.制御ファイルをリストアします。
リストアする際は開発系の初期化パラメータファイル
control_filesパラメータと同一の位置にするか必要に応じてパラメータ
を編集して下さい。
開発系でリストアした情報
■開発系構成画面Page 4
Standard Vol.73
Copyright(C) K.K.Ashisuto All right Reserved
4
上記の場合、control_filesパラメータは以下のように設定します。
c.アーカイブログファイルをlog_archive_destで指定したディレクトリに
戻します。
ここで、最新の状態のオンラインREDOログファイルもリストアする必要が
ある場合は本番系にて強制的にログスイッチ(※1)を発生させ、
作成されたアーカイブログファイルを含めて下さい。
(※1)ログスイッチは管理者ユーザにて以下のように実行します。
d. パスワードファイルをご使用の環境でない場合、この手順はSKIPして下さい。
制御ファイルをバックアップしたタイミングでパスワードファイルの
バックアップも取得していれば、そのファイルをリストアしてください。
UNIX : $ORACLE_HOME/dbs下の位置にあるorapw[SID名].ora
Windows: %ORACLE_HOME/database下の位置にあるPWD[SID名].ora
バックアップが存在しない場合、開発系のパスワードファイルを削除(または
RENAME)後、以下のコマンドにて再作成することが可能でございます。
UNIX:
WINDOWS:
control_files=("E:¥Ora901¥oradata¥test901¥control01.ctl")
SQL> ALTER SYSTEM SWITCH LOGFILE;
% cd $ORACLE_HOME/dbs
% ORAPWD FILE=orapw$ORACLE_SID PASSWORD=
PROMPT> cd %ORACLE_HOME%¥database
PROMPT> ORAPWD file=PWD%ORACLE_SID%.ora PASSWORD=
Standard Vol.73
Copyright(C) K.K.Ashisuto All right Reserved
5
d.STARTUP MOUNTで起動します。
e.不要なデータファイルをOFFLINE DROPする
V$DATAFILEを検索すると、本番系のデータファイル構成となっており
開発系にリストアしていないファイルも含めてすべて表示されます。
リストアの対象とならないデータファイルをすべてOFFLINE DROPします。
(例)
SQL> SELECT name,status FROM v$datafile;
NAME
STATUS
---------------------------------------- -------
C:¥V901¥ORADATA¥TEST901¥SYSTEM01.DBF
SYSTEM
C:¥V901¥ORADATA¥TEST901¥UNDOTBS01.DBF
ONLINE
C:¥V901¥ORADATA¥TEST901¥INDX01.DBF
ONLINE
C:¥V901¥ORADATA¥TEST901¥TOOLS01.DBF
ONLINE
C:¥V901¥ORADATA¥TEST901¥USERS01.DBF
ONLINE
SQL> ALTER DATABASE DATAFILE 'C:¥V901¥ORADATA¥TEST901¥INDX01.DBF'
OFFLINE DROP;
データベースが変更されました。
SQL> ALTER DATABASE DATAFILE 'C:¥V901¥ORADATA¥TEST901¥TOOLS01.DBF'
OFFLINE DROP;
データベースが変更されました。
SQL> STARTUP MOUNTPage 6
Standard Vol.73
Copyright(C) K.K.Ashisuto All right Reserved
6
f.本番系とは異なるPATHにファイルをリストアしたい場合は、以下の操作を
行います。 PATHが同じ場合、この手順はSKIPして下さい。
V$DATAFILEを検索すると、リストアしたファイルが本番系のPATHのまま
表示されますので、 それらのデータファイルをRENAMEします。また、
データファイルだけでなくオンラインREDOログファイルについても PATHが
替わる場合は 同様にRENAMEします。
例)
■開発系構成画面より
≪データファイルの場合≫
SQL> ALTER DATABASE RENAME FILE 'c:¥v901¥oradata¥test901¥system01.dbf'
TO 'e:¥ora901¥oradata¥test901¥system01.dbf';
データベースが変更されました。
SQL> ALTER DATABASE RENAME FILE 'c:¥v901¥oradata¥test901¥undotbs01.dbf'
TO 'e:¥ora901¥oradata¥test901¥undotbs01.dbf';
データベースが変更されました。
SQL> ALTER DATABASE RENAME FILE 'c:¥v901¥oradata¥test901¥users01.dbf'
TO 'e:¥ora901¥oradata¥test901¥users01.dbf';
データベースが変更されました。 Page 7
Standard Vol.73
Copyright(C) K.K.Ashisuto All right Reserved
7
≪ オンラインREDOログファイルの場合≫
上記コマンド実行後、以下のように開発系のファイルのPATHが変更されて
いることが確認できます。
(※f)手順eでOFFLINE DROPしたものはSTATUS列は
"RECOVER"となり、ファイルのPATHは本番系のままとなって
おりますが問題ございません。
SQL> ALTER DATABASE RENAME FILE 'c:¥v901¥oradata¥test901¥redo01.log'
TO 'e:¥ora901¥oradata¥test901¥redo01.log';
データベースが変更されました。
SQL> ALTER DATABASE RENAME FILE 'c:¥v901¥oradata¥test901¥redo02.log'
TO 'e:¥ora901¥oradata¥test901¥redo02.log';
データベースが変更されました。
SQL> ALTER DATABASE RENAME FILE 'c:¥v901¥oradata¥test901¥redo03.log'
TO 'e:¥ora901¥oradata¥test901¥redo03.log';
データベースが変更されました。
SQL> SELECT name,status FROM v$datafile;
NAME
STATUS
---------------------------------------- -------
E:¥ORA901¥ORADATA¥TEST901¥SYSTEM01.DBF SYSTEM
E:¥ORA901¥ORADATA¥TEST901¥UNDOTBS01.DBF ONLINE
C:¥V901¥ORADATA¥TEST901¥INDX01.DBF
RECOVER(※f)
C:¥V901¥ORADATA¥TEST901¥TOOLS01.DBF
RECOVER(※f)
E:¥ORA901¥ORADATA¥TEST901¥USERS01.DBF ONLINE Page 8
Standard Vol.73
Copyright(C) K.K.Ashisuto All right Reserved
8
g.時間ベースの不完全リカバリを実行します。
該当オブジェクトを削除する前の時間を指定してください。
(時間について不明な場合はLogMinerを使用して解析・特定して
いただければと存じます。LogMinerの使用方法につきましては
本文書では割愛させて頂きます。)
SQL> SELECT * FROM v$logfile;
GROUP#
STATUS TYPE MEMBER
---------- ------- ------- --------------------------------------
3
ONLINE E:¥ORA901¥ORADATA¥TEST901¥REDO03.LOG
2
ONLINE E:¥ORA901¥ORADATA¥TEST901¥REDO02.LOG
1
ONLINE E:¥ORA901¥ORADATA¥TEST901¥REDO01.LOGPage 9
Standard Vol.73
Copyright(C) K.K.Ashisuto All right Reserved
9
(例)
SQL> SET AUTORECOVERY ON
SQL> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL TIME '2004-01-1018:00:00'
ORA-00279: 変更279764(03/16/2004 06:51:37で生成)にはスレッド1が必要です
ORA-00289: 検討すべきログ・ファイル:E:¥ORA901¥ORADATA¥TEST901¥ARCHIVE¥1_4.ARC
ORA-00280: 変更279764(スレッド1)は順序番号4に存在します。
ORA-00279: 変更279790(03/16/2004 07:00:46で生成)にはスレッド1が必要です
ORA-00289: 検討すべきログ・ファイル:E:¥ORA901¥ORADATA¥TEST901¥ARCHIVE¥1_5.ARC
ORA-00280: 変更279790(スレッド1)は順序番号5に存在します。
ORA-00278:
ログ・ファイル'E:¥ORA901¥ORADATA¥TEST901¥ARCHIVE¥1_4.ARC'はこのリカバリでは必要
なくなりました
・・・・(中略)指定された時間までのアーカイブログが自動的に適用されます。
ORA-00279: 変更279798(03/16/2004 07:01:18で生成)にはスレッド1が必要です
ORA-00289: 検討すべきログ・ファイル:E:¥ORA901¥ORADATA¥TEST901¥ARCHIVE¥1_10.ARC
ORA-00280: 変更279798(スレッド1)は順序番号10に存在します。
ORA-00278:
ログ・ファイル'E:¥ORA901¥ORADATA¥TEST901¥ARCHIVE¥1_9.ARC'はこのリカバリでは必要
なくなりました
ログが適用されました。
メディア・リカバリが完了しました。Page 10
Standard Vol.73
Copyright(C) K.K.Ashisuto All right Reserved
10
h. 不完全回復の後にはログ順序番号をリセットするため
RESETLOGS による起動が必要となります。以下のコマンドで
OPENしてください。
ログ順序番号がリセットされたことにより、今まで取得された
バックアップは無効となりますので、再度データベースのコールド
バックアップの取得を行ってください。
i. 以上の作業により、 削除してしまったオブジェクトが存在する状態の
データベースが作成されますので、該当オブジェクトに対しEXPORTを
実行し、IMPORTにより本番環境に戻して下さい。
開発系にて
本番系にて
j.本番系にて以下のSQL文を実行することと、削除された表がリカバリできている
ことが確認できます。
SQL> ALTER DATABASE OPEN RESETLOGS;
% EXP testuser/testuser FILE=testtable.dmp TABLES=test LOG=testtable_exp.log
% IMP testuser/testuser FILE=testtable.dmp TABLES=test LOG=testtable_imp.log
SQL> SELECT owner,segment_name,tablespace_name
2 FROM dba_segments
3 WHERE owner='TESTUSER' AND segment_name='TEST';
OWNER
SEGMENT_NAME TABLESPACE_NAME
--------------- --------------- ---------------
TESTUSER
TEST
USERS Page 11
Standard Vol.73
Copyright(C) K.K.Ashisuto All right Reserved
11
*5.補足*
権限を正しく管理することで、ユーザーが運用に与える被害を減らすことができ
ます。さらに、事前に効果的なリカバリ方法を計画するとユーザー・エラーのリ
カバリ作業を軽減できます。
alter database datafile ... offline drop
Datafiles were not designed to be dropped. (See also Metalink note 111316.1) This is true even though there is alter database datafile offline drop.
However, if the datafile is the only datafile in its tablespace, it can be removed together with the tablespace:
DROP TABLESPACE ts_data INCLUDING CONTENTS;
With Oracle 10g Release 2, it's finally possible to drop a datafile as long as
it's not the only datafile within the tablespace, and
the tablespace is only and in read-write status
:
alter tablespace ts_something drop datafile '/path/to/datafile.dbf'
Fuzzy datafiles
A datafile that contains a block whose SCN is more recent than the SCN of its header is called a fuzzy datafile.
2007/09/05
ssh and firewall
の接続を試みているのですが, ちょっとつまづいております.
http://hp.vector.co.jp/authors/VA000770/docs/NikkeiLinux00-12/config.ja.html
を参考にしてやったことは以下の通りです.
Kernel 2.4.6 Microsoft Proxy Server 2.0
+----------------+ STDIN +------------+ +-----------+
| |------->| |-------| |
| ssh 2.5.2p2-3 | | proxy-klab | | web proxy |
| |<-------| command |<------| |
+----------------+ STDOUT +------------+ https +-----------+
Client Machine ^ |
https | | https
< inside > | |
----------Firewall--------------------------------+---+-----
< outside > kernel-2.2.19 | |
+-----------------+ | |
| |-----+ |
| ssh 2.5.2p2-3 | |
| port 443 |<--------+
+-----------------+
Server Machine
Firewall の内側にある, Microsoft Proxy Server 2.0 がうけつけているポー
トは, 80 番 (http) と, 21 番 (ftp) と, 443 番 (https) にあてたものだけ
です. やろうとしているのは, Firewall の外側にある Server Machine の
sshd サーバを, port 443 (https) で走らせ, FIrewall の内側の Client
Machine の ssh クライアントから, proxy-klab という perl script を介し
て, web proxy 経由で, Server Machine の https の 443 番ポートにアクセ
スし, ssh コネクションをはるということです.
そのために, まず, Firewall の外側にある Server Machine の
/etc/ssh/sshd_config において, 「Port 22」という記述を,「Port 443」に
書き変えて, 「/etc/init.d/ssh restart」とし, port 443 番 (https) で sshd を立ち上げ直しました.
次に, Firewall の内側にある Client Machine の ~/.ssh/config で,
Compression yes
Host ip.address.of.Server.Machine
Port 443
ForwardAgent yes
ForwardX11 yes
ProxyCommand /path/to/proxy-klab %h %p
としました. そして, 本メール末尾に添える proxy-klab という perl script
を用意し, 以下のようにすると,
# ssh -v -l UID ip.address.of.Server.Machine
OpenSSH_2.5.2p2, SSH protocols 1.5/2.0, OpenSSL 0x0090601f
debug1: Seeding random number generator
debug1: Rhosts Authentication disabled, originating port will not be trusted.
debug1: ssh_connect: getuid 1000 geteuid 1000 anon 1
debug1: Executing proxy command: /path/to/proxy-klab ip.address.of.Server.Machine 443
debug1: unknown identity file /home/UID/.ssh/identity
debug1: identity file /home/UID/.ssh/identity type -1
debug1: unknown identity file /home/UID/.ssh/id_rsa
debug1: identity file /home/UID/.ssh/id_rsa type -1
debug1: unknown identity file /home/UID/.ssh/id_dsa
debug1: identity file /home/UID/.ssh/id_dsa type -1
と, ここでネゴシエーションが止まってしまいます. この時, サーバ側には,
Jul 18 23:03:33 phys5 sshd[2222]: Did not receive identification string from ipp.address.of.client.Machine
というログが残っていました.
同様の環境で, proxy server が 「Microsoft Proxy Server 2.0」ではなく,
「squid-1.1.20」に変えたものだと, この方法で ssh で上手く外に出られる
ことは確認できています. したがって, 怪しいのは, この方法と MS の proxy
server との相性 (もしくは設定の違い) ということになるのですが, どなた
か同様の状況に遭遇された方はいらっしゃいますでしょうか. MS Proxy が返
すメッセージについてもう少し調べてみようと思いますが, 何でもよいので情
報を頂けたら有難いです. よろしくお願いします.
# Microsoft Proxy Server 2.0 の web proxy は ftp URL もうけつけるので
# すが, 愛用の ncftp だと外に出ることができません. Netscape では,
# ftp://UID:passward@ip.address.of.Server.Machine とアドレスを指定する
# と, うまくログインでき, ファイルのダウンロードはできるのですが, ファ
# イルのアップロードはできません. ncftp の作者は,
# FIREWALL-PROXY-README で「Note that NcFTP does _not_ work with HTTP
# proxies that accept FTP URLs. Why? Because they accept HTTP
# requests, silly, not FTP, which this program does.」とちょっとお怒り
# の様子です. ssh で上手く接続できれば ftp はいらないのですが,
# HTTP proxy を経由で, ftp で接続することができるクライアントがもしあ
# れば, 教えて下さい.
---
wada
# dpkg -l ssh
ii ssh 2.5.2p2-3 Secure rlogin/rsh/rcp replacement (OpenSSH)
# cat proxy-klab
#! /usr/bin/perl
$PROXY_KLAB = "ip.address.of.proxy.server";
$PROXY_KLAB_PORT = 80;
$Verbose = 0;
while ($_ = shift) {
last if ! /^-(.*)/;
if ($1 =~ /^v+$/) { $Verbose += length($&); next; }
print <<EOF;
Usage: proxy [option...]
Options:
-v Verbose mode
EOF
}
$HOST = $_;
if ($_ = shift) {
$PORT = $_;
} else {
$PORT = 23;
}
print "Verbose Level: $Verbose\n" if $Verbose;
use Socket;
($name, $aliases, $proto) = getprotobyname('tcp');
($name, $aliases, $type, $len, $thataddr) = gethostbyname($PROXY_KLAB);
$that = sockaddr_in($PROXY_KLAB_PORT, $thataddr);
socket(S, PF_INET, SOCK_STREAM, $proto) || die "socket: $!";
connect(S, $that) || die "connect: $!";
if ($Verbose > 1) {
$Rin = &fhbits('STDIN S');
} else {
$Rin = &fhbits('S');
}
&login;
&connect;
exit 0;
# login 処理
sub login {
&receive(0.1);
&send("CONNECT $HOST:$PORT HTTP/1.0\r\n\r\n");
do { &receive(0.1); } until (/HTTP\/[\d\.]+ 200.*\n\n/);
$Raw =~ m/HTTP\/[\d\.]+ 200.*[\r\n]+/;
$Raw = $';
}
# connect
sub connect {
local($rout);
print "CONNECT\n" if $Verbose;
$Rin = &fhbits('STDIN S');
syswrite(STDOUT,$Raw,length($Raw));
while ((select($rout=$Rin,undef,undef,undef))[0]) {
if (vec($rout,fileno(S),1)) {
return if sysread(S,$_,1024) <= 0; # EOF
syswrite(STDOUT,$_,length);
}
if (vec($rout,fileno(STDIN),1)) {
return if sysread(STDIN,$_,1024) <= 0; # EOF
syswrite(S,$_,length);
}
}
}
# send(str);
# str を送る
sub send {
undef $Buffer;
undef $Raw;
while( $_ = shift ) {
print if $Verbose > 2;
syswrite(S,$_,length);
}
}
# receive(s);
# s 秒入力が途絶えるまで待つ
sub receive {
local($timeout) = shift;
local($rout);
while ((select($rout=$Rin,undef,undef,$timeout))[0]) {
if (vec($rout,fileno(S),1)) {
&abort if sysread(S,$_,1024) <= 0; # EOF
$Raw .= $_;
tr/\r\000\012\021\023\032/\n/d;
$Buffer .= $_;
print if $Verbose > 1;
}
if (vec($rout,fileno(STDIN),1)) {
&abort if sysread(STDIN,$_,1024) <= 0; # EOF
s/\n/\r/g;
syswrite(S,$_,length);
}
}
$_ = $Buffer;
}
sub fhbits {
local(@fhlist) = split(' ',$_[0]);
local($bits);
for (@fhlist) {
vec($bits,fileno($_),1) = 1;
}
$bits;
}
sub abort {
exit(1);
}
ssh を使った Firewall 越えの問題が解決したので報告致します.
From: wada@mail2.off.ne.jp
Subject: [debian-users:29218] ssh を使った Firewall 越え
Date: Thu, 19 Jul 2001 17:01:42 +0900
> firewall の内側の Debian マシンから, 外側にある Debian マシンへの ssh
> の接続を試みているのですが, ちょっとつまづいております.
> 次に, Firewall の内側にある Client Machine の ~/.ssh/config で,
>
> ProxyCommand /path/to/proxy-klab %h %p
>
> としました. そして, 本メール末尾に添える proxy-klab という perl script
> を用意し, 以下のようにすると,
Web proxy サーバの MS proxy 2.0 に telnet をかけてみたら, squid の時と
異なる反応を返してくるので, 用意した proxy-klab という perl script と
の相性が悪かったと思い, こいつを改造することを考えて ssh のプロトコル
を色々調べているうちに, 以下のソースに辿りつきました.
http://www.imasy.or.jp/~gotoh/connect.c
この connect.c をコンパイルし (gcc -o connect connect.c),
/etc/ssh/ssh_config もしくは ~/.ssh/config で,
Host Name
HostName Ip.Address.Of.Server.Machine
Port 443
#ProxyCommand /home/wada/bin/proxy-klab %h %p
ProxyCommand /home/wada/bin/connect -H Ip.Address.Of.Proxy.Server %h %p
としたらあっさり上手くいきました. お騒がせしましたがお蔭様で幸せになれ
ました.
CVS-SSH2 Server installation (debian)
Install the CVS server: apt-get install cvs. This will install CVS, the daemon gets started with inetd and the CVS root is by default /var/lib/cvs. By default you can connect to your CVS server via pserver, but you shouldn't use pserver when you set up a public CVS server, as the password gets not encrypted when you log on. I want to create a SSH tunnel to connect the CVS server:
Linux:
Basics: create a CVS user, lets call him cvsuser (quite creative, eh?). Create the file ~/.profile and add this text:
export CVS_RSH=ssh
prepare the SSH-keyfile, create the empty file ~/.ssh/authorized_keys2
Windows:
I use eclipse a my IDE, choose this menu [Window / Preferences / Team / CVS / SSH2 Connection / Key Management] and create the SSH keypair. Paste the public key into the ~/.ssh/authorized_keys2 file and copy the private key to a safe place.
NOTE: I wasn't able to use puttygen generated SSH keys with eclipse, I think this is because putty uses a special private key format eclipse can't use.
Linux:
Restrict shell access:
I don't want that my CVS user can use my server to tunnel connections or use a shell and browse on the server, so I added some basic security features:
Create a file /bin/cvssh, chmod 755 it and add this content:
#!/bin/bash
if [ "$2" != "cvs server" ]; then
echo "Access Denied"
exit 1
fi
cvs server
exit
Edit the file /etc/passwd and change the shell of the cvsuser (usually /bin/bash) to /bin/cvssh. Thanks to novell for this info.
Restrict SSH tunneling:
Edit the file ~/.ssh/authorized_keys2 and add the option no-port-forwarding in front of the public key.