`
izuoyan
  • 浏览: 9295549 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

tcp/udp客户端连接secondary IP的情况

阅读更多

linux中,如果在一张网卡上配置多个同一网段的ip,那么除了第一个被配置的之外,其余的都将是secondary IP。如果一个udp服务器bind了0.0.0.0地址,而一个udp客户端来连接一个secondary IP,那么连接是不会正常的,抓包会发现udp服务器的回复包的源ip是一个primary IP,而不是它所连接的secondary IP。对于tcp则不存在这样的问题。这是linux内核协议栈所决定的。
对于tcp而言,监听0.0.0.0会导致它接受所有连接本机ip地址的客户端,只要这个ip在本机即可,这是通过路由得知的,只要数据包越过了网络层,到达了tcp_v4_rcv并且成功在监听套接字中找到了端口,那么服务器将建立一个通信套接字,该套接字的源ip完全对应于客户端的目的ip,而对于监听0.0.0.0的udp服务器而言,由于它是没有连接的,在bind的时候,inet数据结构的saddr字段就是0.0.0.0,因此只有在服务器实际回复数据的时候到达网络层填写ip头的时候才会确定回复包的源地址,此时,协议栈已经完全忘记了来源包的目的地址(udp无连接),因此路由完毕找到了出口的时候,如果该条路由没有源地址信息,那么将会调用inet_select_addr来选择一个ip地址,这个函数选择ip的策略就是首先在路由结果的出口设备上按照一定原则找primary地址,如果找不到,则在所有的设备上按照一定原则找primary地址,可见secondary地址是无论如何都不能被选中的。
使用OpenVPN可以做一个测试,udp情况下设置服务器bind 0.0.0.0 1194,然后为服务器添加一个secondary IP-1.2.3.5/24,然后客户端连接之,会出现下面的出错报告:
Incoming packet rejected from 1.2.3.4:1194[2], expected peer address: 1.2.3.5:1194 (allow this incoming source address/port by removing --remote or adding --float)
可见事实。如果加上float就可以了,这个float并不是为了解决secondary IP的问题的,其实这并不是一个问题,这只是一个机制而已。float是为了解决服务器ip地址变化问题的,这里只是歪打正着的解决了secondary IP所谓的问题。

分享到:
评论

相关推荐

    systemvm64template-4.10-4.10.0.0-kvm.qcow2.bz2

    CloudStack4.10的系统VM文件,.../usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /data/secondary/ -f /data/secondary/systemvm64template-4.10-4.10.0.0-kvm.qcow2 -h kvm -F

    ora10g客户端

    Windows NT TCP/IP NT Protocol Adapter for 32-bit Windows: Version 10.2.0.5.0 - Production Time: 17-SEP-2011 12:24:11 Tracing not turned on. Tns error struct: ns main err code: 12560 TNS-12560: ...

    UR机器人与PC通讯

    这些通讯方式使得机器人能够与具备TCP/IP通讯模块的PLC、工控机、嵌入式系统等设备进行数据交换和控制。 2. Dashboard接口 Dashboard接口工作在端口29999,主要用于接收上位机指令,如初始化机器人、加载程序、开始...

    华为三层技术-ip路由配置

    ### 华为三层技术-ip路由配置 #### 一、引言 华为的H3C S7500E系列以太网交换机是一套高级网络设备,专为满足大规模网络需求设计。本手册《三层技术-IP路由配置指导》旨在为用户提供关于路由协议配置的深入理解,...

    华为路由器配置命令(1).docx

    - `rule permit/deny IP/TCP/UDP` 等允许或拒绝特定协议的数据包。 - `source` 和 `destination` 定义源IP地址和目标IP地址范围。 - `eq` 用于指定端口号,如TCP或UDP的端口。 8. **防火墙规则**: 华为路由器...

    systemvm64template-4.10-4.10.0.0-xen.vhd.bz2

    CloudStack4.10的系统VM文件,.../usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /home/secondary -f /home/soft/systemvm64template-4.10-4.10.0.0-xen.vhd.bz2 -h xenserver -F

    springboot数据库连接动态切换源代码.zip

    这通常在多租户系统、数据隔离或者需要在不同环境(如开发、测试、生产)之间切换数据库的情况下非常有用。本项目提供了一套完整的源代码实现,帮助开发者理解并应用这一技术。 首先,Spring Boot通过`spring-boot-...

    linux定时切换ip.docx

    在给定的文档标题和描述中,提到的是在Linux环境中使用`cron`服务来定时切换IP地址,这在多IP网络环境或者需要定期更换网络连接的情况下非常有用。以下将详细讲解如何配置和使用`cron`服务以及如何编写脚本来切换IP...

    Veronisoft.Ip.Net.Checker.1.5.3.9(sn)

    Features: - Max. number of checking IP - 70 - PING/TCP/HTTP checking - Visual(Box Design, ...- Is able to run three IP Net Checker instance on the same computer (parameter: /secondary and /tertiary)

    hadoop需要注意几个组件端口

    默认情况下,NameNode的HTTP监控界面可以通过`http://<NAMENODE_IP>:50070`访问,其中`<NAMENODE_IP>`为NameNode所在节点的IP地址,如`192.168.1.105`。在`core-site.xml`和`hdfs-site.xml`中配置`dfs.namenode....

    经典常用网络命令[全集] TXT版

    - **功能**:显示基于TCP/IP的NetBIOS协议统计信息和当前TCP/IP连接的状态。 - **应用场景**:当需要了解NetBIOS名称解析的状态时。 - **示例**: ```bash nbtstat -A 192.168.1.1 ``` #### 4. `netstat` - **...

    DRBD+Heartbeat+NFS

    - 配置NFS时,需要设置导出目录,定义哪些客户端可以访问,并确保防火墙规则允许NFS端口(如TCP/UDP的2049)通信。 在搭建"DRBD+Heartbeat+NFS"集群时,步骤通常包括: 1. 安装DRBD、Heartbeat和NFS相关软件包。 2...

    远程关机 远程关机.rar

    这个技术基于TCP/IP协议,通常使用操作系统内置的命令行工具或者第三方软件来实现。在Windows系统中,我们可以使用"ping"和"shutdown"命令来实现这一功能。 首先,了解"ping"命令,它是网络诊断工具,用于检查网络...

    如何在Linux上建立DNS服务器.pptx

    在TCP/IP网络中,DNS服务器扮演着至关重要的角色,使得用户能够通过易于记忆的域名访问网站和服务,而无需记住复杂的IP地址。 DNS服务器的运作基于一种层次结构,类似于文件系统的目录结构。顶级域(Top-Level ...

    SQL Server数据库设计与系统管理

    - **TCP/IP套接字**:使用TCP/IP协议进行连接,通常端口号为1433。 - **多协议**:支持多种协议,如IPX/SPX和TCP/IP,并提供加密支持。 - **NW/LINK IPX/SPX**:适用于NetWare平台的网络协议。 - **AppleTalk ADSP**...

    calcuate the secondary structure

    在生物信息学领域,"calculate the secondary structure" 是一个重要的任务,主要涉及到蛋白质结构分析。蛋白质的二级结构是指由一级结构(即氨基酸序列)决定的局部空间构象,包括α螺旋、β折叠、β转角和其他无规...

    SpringBoot整合Mybatis连接SQL Server 双数据源配置

    在这种情况下,"SpringBoot整合Mybatis连接SQL Server 双数据源配置" 是一个常见的技术实践。Spring Boot以其简洁的配置和强大的自动化配置能力,使得集成Mybatis并管理多个数据源变得相对简单。下面我们将详细介绍...

    《CISCO路由器配置》复习指导.doc

    7. TCP/IP模型包含网络接口层、网络互联层、传输层和应用层,数据链路层属于OSI模型而非TCP/IP模型。 8. Cisco路由器的启动模式包括SETUP、ROM Monitor和RXBoot,用户模式是操作模式之一。 Cisco路由器操作指令: 9...

Global site tag (gtag.js) - Google Analytics