当前位置:  建站>运营/SEO
本页文章导读:
    ▪linux网络协议栈分析笔记11-路由1-路由缓存      来吧,路由 路由是网络的核心,是linux网络协议栈的核心,我们找个入口进去看看 还记得在笔记5-IP层的处理1中ip_rcv_finish走到过一个岔口 ->ip_rcv_finish()      ->ip_route_input()  .........
    ▪Winconnect 多用户远程连接一台虚拟机      最近需要将一台安装 XP sp3 的“服务器”做成多用户可远程登录的主机,以下全文默认所说XP均代表 XP SP3。但是由于XP 默认不允许多用户远程登录的原因,网上大部分的教程大概可以分为三类.........
    ▪failed: RPC Error:RPC:程序未注册      一、场景: 在Linux上操作命令:  mount -t nfs -o rw xxx.xxx.xxx.xxx:/nfs /nfs  出现错误提示:failed: RPC Error:RPC:程序未注册 二、分析步骤: 第1步:检查对方服务器是否做了连接限制   &.........

[1]linux网络协议栈分析笔记11-路由1-路由缓存
    来源: 互联网  发布时间: 2013-10-27
来吧,路由
路由是网络的核心,是linux网络协议栈的核心,我们找个入口进去看看
还记得在笔记5-IP层的处理1中ip_rcv_finish走到过一个岔口
->ip_rcv_finish()
     ->ip_route_input()  查找路由信息
     ->if (iph->ihl > 5 && ip_rcv_options(skb)) 如果IP头部大于20字节,则表示IP头部包含IP选项,需要进行选项处理.
          goto drop;
     ->dst_input(skb);      dst_input实际上会调用skb->dst->input(skb).input函数会根据路由信息设置为合适的函数指针,
                                      如果是则递交到本地的则为ip_local_deliver,若是转发则为ip_forward
两条路径:
1) ip_local_deliver
2) ip_forward

是什么导致路径不同呢,我们看一看ip_route_input() 干了啥
int ip_route_input(struct sk_buff *skb, __be32 daddr, __be32 saddr,
             u8 tos, struct net_device *dev)
     ->net = dev_net(dev);
     ->hash = rt_hash(daddr, saddr, iif, rt_genid(net));        计算hash值,注意hash因子    
     ->                                                                             既然hash值算出来了,我们就去找吧
     rcu_read_lock();
     for (rth = rcu_dereference(rt_hash_table[hash].chain); rth;      
          rth = rcu_dereference(rth->u.dst.rt_next)) {
          if (((rth->fl.fl4_dst ^ daddr) |                    异或 相同为0                       
               (rth->fl.fl4_src ^ saddr) |
               (rth->fl.iif ^ iif) |
               rth->fl.oif |
               (rth->fl.fl4_tos ^ tos)) == 0 &&
              rth->fl.mark == skb->mark &&
              net_eq(dev_net(rth->u.dst.dev), net) &&           判断路由和报文的struct net指针地址是否相同
              !rt_is_expired(rth)) {                                        路由项是否过期 
                           找到了
               dst_use(&rth->u.dst, jiffies);                            表示路由的使用时间
               RT_CACHE_STAT_INC(in_hit);
               rcu_read_unlock();
               skb_dst_set(skb, &rth->u.dst);                         设置到skb中去
               return 0;
          }
          RT_CACHE_STAT_INC(in_hlist_search);
     }
     rcu_read_unlock(); static struct rt_hash_bucket      *rt_hash_table __read_mostly;

struct rt_hash_bucket {
     struct rtable     *chain;
};

struct rtable
{
     union
     {
          struct dst_entry     dst;
     } u;
     /* Cache lookup keys */
     struct flowi          fl;                     存放的是查找该路由节点的哈希值,该哈希值用源IP,目的地址,TOS一起确定
     struct in_device     *idev;
    
     int               rt_genid;
     unsigned          rt_flags;               一些结构性的标志,例如,RTF_UP表示这条路由可用
     __u16               rt_type;               表明了目标地址的类型,例如RTN_LOCAL,RTN_MULTICAST

     __be32               rt_dst;     /* Path destination     */              用来存放目标的IP地址
     __be32               rt_src;     /* Path source          */               路由路径的起点ip地址
     int               rt_iif;           &n
    
[2]Winconnect 多用户远程连接一台虚拟机
    来源: 互联网  发布时间: 2013-10-27

最近需要将一台安装 XP sp3 的“服务器”做成多用户可远程登录的主机,以下全文默认所说XP均代表 XP SP3。但是由于XP 默认不允许多用户远程登录的原因,网上大部分的教程大概可以分为三类:

1.修改系统设置,将XP 设置为最大只允许2个用户同时远程登录。

2.安装Winconnect  204 的破解软件,最大支持21个用户同时远程登录,针对的操作系统必须是 XP SP2

例如:http://hi.baidu.com/laolaoboke/item/15f90d0d27280b374bc4a36c

3.安装Winconnect  362 的破解软件,最大8用户,999终端同时远程登录,针对的操作系统必须是 XP SP3

例如:http://down.51cto.com/data/517589

最后第三类适合我的各项需求,采用了第三类方法

我的实验环境在一台Win7主机上,主机安装VMware 虚拟机,虚拟机里面安装两台 XP SP3 虚拟机,一台作为服务器,一台作为模拟终端,此外Win7 主机还作为另一台模拟终端。

主机及模拟设备基本情况:

模拟终端1:

名称:Win7 主机

网卡:以太网适配器 VMware Network Adapter VMnet8  

IP:192.168.131.1

子网掩码:255.255.255.0

以下全文所说 终端1 均指此设备


模拟终端2:

名称:XP-20120

网卡:XP虚拟机自带网卡

静态IP:192.168.131.3

子网掩码:255.255.255.0

以下全文所说 终端2 均指此设备


服务器:

名称:XP-201202281525

网卡:XP虚拟机自带网卡

静态IP:192.168.131.2

子网掩码:255.255.255.0

以下全文所说 服务器 均指此设备


详细过程:

一、创建两台XP虚拟机

     本文不详述,可参见其他软文,方法一样的。

二、Win7主机与两台虚拟机的互联

服务器设置:

虚拟机配置如下图


服务器IP配置如下图



终端2:

虚拟机配置如下图


终端IP配置如下图



终端1:


配置成功应该为以上三台机器ip可以互相ping 通


三、配置服务器允许远程连接

1.通过 “开始”-“控制面板”-“用户帐户”给系统管理员 administrator 设置密码,并且新建两个管理员用户,并设置密码

这里我新建的两个管理员用户是用户名为: dd    和  pds  

并修改设置“更改用户登录或注销方式”


改为:


2.设置“我的电脑”-“属性”-“远程”如下图:


3.点击“选择远程用户”添加远程登录用户,如下图


配置成功性校验:此时应该可以通过 “终端2” 远程连接 “服务器”


四、安装 winconnect 362 

1.下载安装包,安装里面的 WinConnect Server XP v2.0.0.362.exe 这里我使用默认安装路径 C:\Program Files\BeTwin ,安装成功后按照提示重启系统。

2.将安装包里Crack 文件夹里面的东西全部复制到安装目录下,并且运行“WCS362.vbs”

修改所需的用户数和终端数,并按照提示重启,此时软件还不能正常运行,需要修改远程端口


3.修改远程连接默认端口,确保以下注册表参数值如下

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp

参数名:PortNumber   值:6110

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp

参数名:PortNumber   值:6110

4.运行效果。修改端口后,需要刷新一段时间才行



五:终端连接服务器

终端2使用用户 dd 连接服务器:


注意若登录后只显示黑屏,则按住  CTRL + ALT + END 

服务器效果


终端1 使用pds 用户 连接服务器:



终端1 使用dd 用户连接服务器:


可以多终端使用同一个用户连接:



六、卸载 winconnect 

1.卸载 winconnect软件主体

2.修改远程连接为默认端口 3389

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp

参数名:PortNumber   值: 3389


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp

参数名:PortNumber   值: 3389



注意:1.修改端口后,重启服务器端,才可以远程连接

2.在虚拟机中使用挂起功能,在下次启动时可能会出现ip能ping 通但是远程连接失效的情况
















作者:pangdingshan 发表于2013-4-14 22:45:01 原文链接
阅读:11 评论:0 查看评论

    
[3]failed: RPC Error:RPC:程序未注册
    来源: 互联网  发布时间: 2013-10-27

一、场景:

在Linux上操作命令: 

mount -t nfs -o rw xxx.xxx.xxx.xxx:/nfs /nfs 

出现错误提示:failed: RPC Error:RPC:程序未注册


二、分析步骤:

第1步:检查对方服务器是否做了连接限制

         登录到对方服务器 , 查看/etc/hosts.allow 和 /etc/hosts.deny 文件.其中hosts.deny 是拒绝了其中对应IP的主机的连接,hosts.allow 是允许其中对应IP主机的连接。

[root@lsxy ~]$ tail /etc/hosts.allow
#
# hosts.allow   This file describes the names of the hosts which are
#               allowed to use the local INET services, as decided
#               by the '/usr/sbin/tcpd' server.
#

[root@lsxy ~]$ tail /etc/hosts.deny
#
# hosts.deny    This file describes the names of the hosts which are
#               *not* allowed to use the local INET services, as decided
#               by the '/usr/sbin/tcpd' server.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow.  In particular
# you should know that NFS uses portmap!

从里面内容可知,对方服务并未对他方主机的连接做任何限制。


第2步:是否是由相关服务未启动导致:

检查portmap服务、nfs服务。其中portmap服务是用来支持RPC连接,RPC被用于NFS以及NIS 等服务。

1、检查portmap服务的状态:

         [root@lsxy etc]# service portmap status
         portmap (pid 20862) 正在运行...

     说明portmap服务正常启动运行。

2、检查nfs服务的状态:

         [root@lsxy etc]# service nfs status
         rpc.mountd 已停
         nfsd 已停
         rpc.rquotad 已停

      问题应该差不多查找到了——nfs服务未启动导致。


三、解决方法:

1、启动nfs服务:

     [root@lsxy etc]# service nfs start
     启动 NFS 服务:                                            [  确定  ]
     关掉 NFS 配额:                                            [  确定  ]
     启动 NFS 守护进程:                                     [  确定  ]
     启动 NFS mountd:                                      [  确定  ]


2、重启portmap服务:

[root@lsxy etc]# service portmap reload
停止 portmap:                                             [  确定  ]
启动 portmap:                                             [  确定  ]


这时再去操作命令

    
最新技术文章:
 




特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3