Linux 如何通过虚拟接口发送请求

Linux 如何通过虚拟接口发送请求,linux,networking,Linux,Networking,我已经使用创建了一个虚拟接口 ifconfig eth0:1 192.168.50.10 netmask 255.255.255.0 up 现在,我使用curl通过虚拟接口向服务器发送请求: curl --interface 192.168.50.10 http://192.168.50.1:8080/myhostedapp 这工作正常,我的应用程序显示源ip为192.168.50.10,但如果服务器位于不同的子网上,并且可以从物理接口(eth0)访问,则连接超时 因此,这是可行的(通过物理

我已经使用创建了一个虚拟接口

ifconfig eth0:1 192.168.50.10 netmask 255.255.255.0 up
现在,我使用curl通过虚拟接口向服务器发送请求:

curl --interface 192.168.50.10 http://192.168.50.1:8080/myhostedapp
这工作正常,我的应用程序显示源ip为192.168.50.10,但如果服务器位于不同的子网上,并且可以从物理接口(eth0)访问,则连接超时

因此,这是可行的(通过物理接口):
curlhttp://10.10.50.1:8080/myhostedapp

但这失败了:
curl——接口192.168.50.10http://10.10.50.1:8080/myhostedapp

为了使
10.10.50.1
达到
192.168.50.10
,我将其添加到路由表中


我需要配置什么,以便可以从
192.168.50.10
访问
10.10.50.1

您必须设置iptunnel您可以看到此链接,这将使它更清晰,另外一件事是,当您添加路由时,您添加了带有网关的路由

谢谢和问候,

首先,你不应该再使用ifconfig了。大约10年来,它一直未维护,并且已知存在一些问题,特别是关于“虚拟接口”

最好使用
iproute2
软件包中的
ip

另请参阅这篇关于
ifconfig
ip
以及替换命令的内容的文章:


现在,关于您的问题:您的路由表是什么样子的?请提供
ip地址显示eth0
ip路由显示
的输出。我怀疑您的路由表是罪魁祸首。

您的两个IP 10.10.50.1和192.168.60.10位于不同的子网中,因此您需要在它们之间安装一个路由器。但这是离题的,所以…服务器10.10.50.1可以通过真实的ip从我的本地机器访问。问题是无法通过虚拟IP访问。感谢您提供有关iproute2的信息。我将在使用ip设置后重试。谢谢,我将尝试使用iptunnel并让您知道它是如何运行的。是的,我在服务器10.10.50.1上添加了路由,网关作为本地机器的IP。我能够从服务器ping到本地计算机。当然,请尝试iptunnel,它将等待更新