为什么从默认接口地址而不是接收客户端数据包的地址发送UDP数据包?

时间:2015-04-02 12:58:04

标签: linux networking udp network-interface

很长一段时间我使用UDP协议进行通信的几个软件(早期版本的Teamspeak 3,netcat,openvpn)遇到了麻烦。今天我发现了这个问题。

我的主要目标是使用openvpn over udp,这似乎不适用于我的服务器上有多个ip地址(运行Ubuntu Server Kernel 3.2.0-35-generic)。

使用以下配置:

# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 11:11:11:11:11:11
          inet addr:1.1.1.240  Bcast:1.1.1.255  Mask:255.255.255.224
          ...

# cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto  eth0
iface eth0 inet static
  address   1.1.1.240
  broadcast 1.1.1.255
  netmask   255.255.255.224
  gateway   1.1.1.225

up ip addr add 1.1.1.249/27 dev eth0
down ip addr del 1.1.1.249/27 dev eth0

up ip addr add 2.2.2.59/29 dev eth0
down ip addr del 2.2.2.59/29 dev eth0
up route add -net 2.2.2.56 netmask 255.255.255.248 gw 2.2.2.57 eth0

# default route to access subnet
up route add -net 1.1.1.224 netmask 255.255.255.224 gw 1.1.1.225 eth0

问题:

服务器上的一个简单的tcpdump显示, 2.2.2.59 收到的udp数据包(使用netcat和openvpn测试)从 1.1.1.240 (客户端:123.11)回复。 22.33)

13:55:30.253472 IP 123.11.22.33.54489 > 2.2.2.59.1223: UDP, length 5
13:55:36.826658 IP 1.1.1.240.1223 > 123.11.22.33.54489: UDP, length 5

问题:

由于网络接口或应用程序本身(OpenVPN,netcat)配置错误导致此问题?

/某个应用程序是否可以侦听多个IP地址并从接收到UDP的数据包的接口地址进行回复,就像使用TCP时一样。

我知道您可以绑定特定ip的应用程序,但这不是可行的方法。

我看不出这种行为是由于UDP协议本身造成的,因为应用程序可以确定收到数据包的接口地址。

1 个答案:

答案 0 :(得分:0)

具体来说,openvpn具有--multihome选项,可以正确处理这种情况。

相关问题