如何让现有程序在对外通信时使用特定的ip地址

whg01 2010-07-28 03:39:20
一个网卡绑定了2个ip,如何让某个程序进行网络通信时,只使用2个ip中的特定的一个ip地址?不考虑修改程序的源代码。
...全文
194 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangjinlong3768038 2013-02-21
  • 打赏
  • 举报
回复
版主如何解决的,求教。 能否给个源码
whg01 2010-07-29
  • 打赏
  • 举报
回复
设置route解决问题,不是很好的办法,但也只能这样了。
一品川 2010-07-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 steptodream 的回复:]
又看了看 我觉得用iptables实现你的想法

比如你的程序使用的1000号端口
你的服务器有三个ip地址 ip1 ip2 ip3
那么可以用iptables做这样的设置
无论使用哪个ip访问你服务器的1000端口 都把它们转向ip1的1000号端口

不知道这样是否满足你的要求?
[/Quote]顶!
steptodream 2010-07-28
  • 打赏
  • 举报
回复
又看了看 我觉得用iptables实现你的想法

比如你的程序使用的1000号端口
你的服务器有三个ip地址 ip1 ip2 ip3
那么可以用iptables做这样的设置
无论使用哪个ip访问你服务器的1000端口 都把它们转向ip1的1000号端口

不知道这样是否满足你的要求?
whg01 2010-07-28
  • 打赏
  • 举报
回复
那在Linux上,能不能设置网卡绑定的某个IP为默认使用的IP?
Wenxy1 2010-07-28
  • 打赏
  • 举报
回复
最好的方法,也许是改源代码,程序在运行时加一个参数 -ip xxx.xxx.xxx.xxx, 然后bind()到此IP上, 这样多方便呀!
Wenxy1 2010-07-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 whg01 的回复:]

不能为某个进程单独设置路由吗?
Up。
[/Quote]
看来,您不了解tcp/ip协议,路由过程发生在IP层。

若你知道此进程的源端口或者目的端口号,也许netfilter可以转发实现你的要求。你googlenetfilter或者iptables相关资料吧。我不了解这个。
steptodream 2010-07-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 whg01 的回复:]

不能为某个进程单独设置路由吗?
Up。
[/Quote]
第一次听到这种说法
whg01 2010-07-28
  • 打赏
  • 举报
回复
不能为某个进程单独设置路由吗?
Up。
panzifei 2010-07-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wenxy1 的回复:]
删除网卡中的一个IP,只设置一个IP。
[/Quote]
Wenxy1 2010-07-28
  • 打赏
  • 举报
回复
删除网卡中的一个IP,只设置一个IP。

19,619

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧