Answers:
诀窍是调整路由表(不依赖于目标端口或源应用程序,但依赖于目标主机)。假设您使用的是Linux或OS X(如标签所示)。
假设您的默认网关是1.2.3.4,并且您有一个可以在6.7.8.9上路由流量的VPN。如果您希望邮件流量超过6.7.8.9,只需执行
sudo route add mail.myserver.com 6.7.8.9
某些版本的路由可能在地址和下一跳之间需要一个“ gw”关键字。如果要在下一跳上进行整个网络路由,只需在CIDR表示法中为目标添加一个网络掩码,例如
sudo route add 192.168.0.0/24 6.7.8.9
如果要查看现有的路由表,请使用
netstat -nrl
or
ip route list
如果您使用的是Windows,则“网络路由”将为您提供大部分帮助,但是语法完全不同。
如果只想同时激活两个NIC,则可以通过选择网络设备列表下方的齿轮来在“系统偏好设置/网络”中设置服务订单。拖放所需的顺序。
例如,我的MBP上的Ether和WiFi始终处于活动状态,而Ether设置为Wi-Fi以上。由于我在工作中使用Ether,因此我使用代理设置设置了该NIC,而没有使用Wi-Fi设置了该NIC。当我回家时,无需调整任何设置。您也可以从终端使用进行此操作/usr/bin/networksetup -ordernetworkservices
。
但是对于同时使用应用程序和非默认应用程序的情况,我很幸运,可以轻松使用@Andor的建议。如果我希望应用程序在我的情况下不使用以太币,请将该应用程序的代理设置设置为我的Wi-Fi适配器的IP地址。它将使用该接口退出,并以这种方式绕过公司代理和监视服务器。因此,如果以太的地址为1.2.3.4,并且在服务顺序中位于Wi-Fi(5.6.7.8)之前,则我的应用程序代理具有5.6.7.8。
您可能需要使用底层IO控制功能(ioctl)。尤其是:
ioctl( socket, SIOCGIFADDR, ... ); // Get network interface address
和
ioctl( socket, SIOCSIFADDR, ... ); // Set network interface address
有关更多详细信息,请参见此手册页。
问题是您将有多个通往网络连接的网关,这有点难以管理...
一些与服务器或网络相关的unix和linux工具通常具有一个称为“接口”的标志,您可以在其中告诉您要使用哪个接口,例如在tcpdump中:
tcpdump -i eth0
但是,正如我认为您在询问路由标准台式机软件一样,这变得更加困难...
无论如何,我都可以告诉您一个窍门...解决该问题的常用方法是使用代理,并且只有一个网关。如今,几乎所有使用Internet的软件都具有用于配置代理的选项,因此您可以通过以下任何一种方式来进行配置:
1.-在您网络的“不安全”(我的意思是,不实施策略)部分上设置代理,并将您的软件指向该代理。
2.-将SSH服务器设置在另一个“不安全”的地方,例如您的家庭或Internet上的专用服务器,并通过SSH具有的特殊功能打开连接,该功能可以创建袜子代理服务器:
ssh -D 1234 user@host
这样会在您的计算机上创建一个端口为“ 1234”的袜子代理服务器,该服务器将使用您的“用户”连接到您的“主机”,并通过您的“主机”具有的连接进入Internet ...然后,在本地软件上,只需打开代理配置工具,然后指向localhost:1234。
避免公司互联网政策的好窍门:P
:D
即使这个问题是针对OSX的,我仍将在Windows 7 64位版本上保留以下内容。这个问题是在强制应用程序通过特定适配器进行搜索时的最高结果之一,因此以下内容可能对其他人有用。
http://www.howtogeek.com/117890/how-to-force-an-application-to-use-a-specific-network-card/
上面的指南使用了一个名为ForceBindIp的实用程序,该实用程序被宣传为可以工作,Windows NT/2000/XP/2003
但我没有让它在Windows 7-64位上工作的问题。