0

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

我的主要目标是在 udp 上使用 openvpn,这似乎不适用于具有多个 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 协议本身造成的,因为应用程序可以确定在哪个接口地址接收到数据包。

4

1 回答 1

0

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

于 2015-08-09T16:22:42.240 回答