怎样让某个服务绑定到特定ip

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
jiandan23
帖子: 86
注册时间: 2010-12-17 22:31
系统: Mint 19.2

怎样让某个服务绑定到特定ip

#1

帖子 jiandan23 » 2016-12-17 16:38

事情是这样子的:
有个服务程序dameon,启动后监听:*.1000。
我启动了两个实例,暂称为dameonA和dameonB。
然后我在eth0上设置了两个ip:192.168.1.1和192.168.1.2.
我希望dameonA能够监听192.168.1.1:1000,dameonB能够监听192.168.1.2:1000.
(dameon程序是别人给我的,默认是监听所有的ip,不能修改)
是否能用Linux系统的某些功能达到我的需求?
谢谢!
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 怎样让某个服务绑定到特定ip

#2

帖子 lilydjwg » 2016-12-17 17:17

为什么不能修改呢?就算是二进制的 blob,要找到那个 0.0.0.0 然后改成 192.168.1.1 也并不困难啊。反正比下边那个方案容易。

如果你非要用 Linux 系统的功能的话,你可以把程序放到不同的网络命名空间里去,然后再在主空间里使用 iptables 重定向。
头像
jiandan23
帖子: 86
注册时间: 2010-12-17 22:31
系统: Mint 19.2

Re: 怎样让某个服务绑定到特定ip

#3

帖子 jiandan23 » 2016-12-17 17:23

前提就是不要修改源程序,因为后面可能要启动几十个实例,不可能一个个的修改。
我想问一下,一张网卡能在多个命名空间中存在吗?每个命名空间中配置一个不同的ip?
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 怎样让某个服务绑定到特定ip

#4

帖子 lilydjwg » 2016-12-17 17:43

jiandan23 写了:前提就是不要修改源程序,因为后面可能要启动几十个实例,不可能一个个的修改。
我想问一下,一张网卡能在多个命名空间中存在吗?每个命名空间中配置一个不同的ip?
为什么不能一个个地修改?找到要修改的地方,写个脚本就可以了。

不能,但是你可以创建很多对 veth 网卡,分配不同的 IP,然后挂在一个网桥上,然后再配置好路由什么的。
头像
jiandan23
帖子: 86
注册时间: 2010-12-17 22:31
系统: Mint 19.2

Re: 怎样让某个服务绑定到特定ip

#5

帖子 jiandan23 » 2016-12-19 9:49

如果想修改源程序,该怎么修改?
我用的命令sed 's/0\.0\.0\.0/192.168.1.1/g'修改的,但一直提示“Segmentation fault (core dumped)”的错误。
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

Re: 怎样让某个服务绑定到特定ip

#6

帖子 oneleaf » 2016-12-19 10:30

docker 可以解决这个问题。
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 怎样让某个服务绑定到特定ip

#7

帖子 lilydjwg » 2016-12-19 11:27

jiandan23 写了:如果想修改源程序,该怎么修改?
我用的命令sed 's/0\.0\.0\.0/192.168.1.1/g'修改的,但一直提示“Segmentation fault (core dumped)”的错误。
你得懂二进制代码啊,需要找到正确的地方。
头像
jiandan23
帖子: 86
注册时间: 2010-12-17 22:31
系统: Mint 19.2

Re: 怎样让某个服务绑定到特定ip

#8

帖子 jiandan23 » 2016-12-20 11:19

这个难度还要大,修改之后的字符串要比原来的要长。
算了,我还是用iptables转发吧。 :Cry
回复