V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
deerlamp
V2EX  ›  服务器

ubuntu机器单网卡多IP问题

  •  
  •   deerlamp · 2012-06-08 15:27:49 +08:00 · 5141 次点击
    这是一个创建于 4582 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现有台ubuntu机器,单网卡上配置了多个IP,比如
    192.168.10.51 - 59
    怎么可以设定某个程序使用某个特定的IP地址发送/接受包?

    当然不考虑改动程序代码的方法
    22 条回复    1970-01-01 08:00:00 +08:00
    liwei
        1
    liwei  
       2012-06-08 22:47:33 +08:00
    如果程序通信的地址是固定,可以试试加一条路由:

    ip route add DEST_ADDRESS via 192.168.10.51 dev eth0


    PS: 不太清楚为什么会有这样的需求,能详细说说你需要这样配置的场景么?
    deerlamp
        2
    deerlamp  
    OP
       2012-06-08 22:58:59 +08:00
    @liwei 比如我从这台机器访问别的机器,想让对方看到我是在某个ip上的
    liwei
        3
    liwei  
       2012-06-08 23:08:01 +08:00
    @deerlamp 那你就只配置一个IP呗,干嘛配置那么多
    deerlamp
        4
    deerlamp  
    OP
       2012-06-08 23:24:46 +08:00
    @liwei ...但是其他ip有其他的需要啊。。
    kendisk
        5
    kendisk  
       2012-06-08 23:37:13 +08:00   ❤️ 1
    开虚拟机,一个虚拟机可以给 128内存,装上linux,可以有很多了、
    ljbha007
        6
    ljbha007  
       2012-06-08 23:42:29 +08:00
    其实你可以把你的问题和要实现的功能说得更具体一点 我感觉你说的办法不一定是最好的办法 但是前提是得知道你具体的需求
    deerlamp
        7
    deerlamp  
    OP
       2012-06-08 23:43:49 +08:00
    @kendisk 这方法不错
    deerlamp
        8
    deerlamp  
    OP
       2012-06-08 23:47:11 +08:00
    @ljbha007 比如我在这台机器上开个客户端程序访问某服务器,但让对方服务器看到的是这个客户端程序是从某个特定的ip地址(这里比如是192.168.10.56,但该机器单网卡绑定了51-59个多个ip)访问的
    服务器和该ubuntu机器是在同个lan里面
    ljbha007
        9
    ljbha007  
       2012-06-08 23:51:48 +08:00
    @deerlamp 既然是同一台机器发出来的请求 为什么要分别从不同的IP发送呢? 如果IP仅仅是一个区分功能用的参数的话那完全没必要这么做;比如如果是HTTP协议可以通过在请求头中加入额外的参数或者直接在请求方法的参数中加入特定的参数

    所以还是不清楚为什么你要这么做
    deerlamp
        10
    deerlamp  
    OP
       2012-06-09 00:24:08 +08:00
    @ljbha007 可能从ip地址的安全性上来考虑 不想暴露主ip地址
    ljbha007
        11
    ljbha007  
       2012-06-09 01:11:58 +08:00
    @deerlamp 那直接用nginx做反向代理代理好了
    deerlamp
        12
    deerlamp  
    OP
       2012-06-09 04:48:42 +08:00
    @ljbha007 但如果都在一台机器上的话,反向代理也可以做到隐藏IP吗?
    flyingnn
        13
    flyingnn  
       2012-06-09 09:59:48 +08:00
    用iptable试试行不?
    humiaozuzu
        14
    humiaozuzu  
       2012-06-09 10:16:25 +08:00
    http://superuser.com/questions/241178/how-to-use-different-network-interfaces-for-different-processes
    这里有linux下解决方案,不过我没有发现现成的程序,mac下倒是有很多。
    ljbha007
        15
    ljbha007  
       2012-06-09 12:25:44 +08:00
    @deerlamp 不好意思 我看错了 我把“主IP地址”看成了“主服务器IP地址”
    ljbha007
        16
    ljbha007  
       2012-06-09 13:21:36 +08:00
    @deerlamp 通过一个ifconfig 可以为一个网卡获取多个IP

    http://linux.byexamples.com/archives/111/configure-multiple-ip-for-a-same-network-interface/

    但是要指定程序使用哪个网络界面必须要程序有相关的参数设置才行 如果那个程序是写死的使用某一个固定界面或者系统默认路由的话 那就没有办法了 只能开虚拟机
    deerlamp
        17
    deerlamp  
    OP
       2012-06-09 13:42:54 +08:00
    @ljbha007 谢谢 权衡到现在 也是觉得虚拟机的方法更靠谱
    搜了一下ubuntu下有KVM或XEN两种开源方案,网上都说KVM是未来方向,但据我了解KVM是全虚拟化,安全性更好,但就性能和稳定还不及XEN,v2ex上已有这方面的讨论吗?
    另外对于KVM,ubuntu 10.04和12.04的内核对KVM的支持有多大的不同?
    ljbha007
        18
    ljbha007  
       2012-06-09 15:43:11 +08:00
    @deerlamp 不知道
    kfc315
        19
    kfc315  
       2012-06-09 15:57:10 +08:00
    传说中的 address minting 么 = =
    我觉得 @liwei 说得靠谱。
    haijd
        20
    haijd  
       2012-06-09 16:05:52 +08:00
    这个问题的最佳办法是,看你那个客户端软件有没有绑定ip的功能。
    deerlamp
        21
    deerlamp  
    OP
       2012-06-09 16:14:17 +08:00
    @haijd 有的可以 有的不可以而且非开源。。。而且目的服务器有多个,IP也未知,不好设定路由表;所以目前我在考虑弄虚拟机
    haijd
        22
    haijd  
       2012-06-09 17:48:30 +08:00
    @deerlamp 这种情况基本上只能用虚拟机了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5959 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 02:33 · PVG 10:33 · LAX 18:33 · JFK 21:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.