如何在ssh端口转发时解析远程服务器的域名

时间:2017-08-15 23:01:19

标签: mongodb go ssh portforwarding mgo

我正在尝试使用端口转发连接到远程mongodb服务器。在mgo.DialInfo中,拨号服务器将向中间主机返回连接(类型为*net.Conn),Addrs将是远程mongodb服务器地址(一组种子服务器)的字符串。我的问题是,如果我提供这些服务器的远程IP地址,该程序工作正常,我能够连接到远程mongodb服务器,但因为,IP地址可以更改我想给出服务器的域名,说 mongodbserver1 mongodbserver2 当我提供时,程序挂起。据我所知,该程序正在尝试解析本地计算机上的域名,这些域名无法正常工作,需要在中间主机上解析。我想知道如何做到这一点。

在代码方面,以下工作正常,

dialinfo := mgo.DialInfo{
    Addrs:    {"1.2.3.45","1.2.3.56"}
    Database: Mongo1,
    Username: User,
    Password: Pwd,
    Timeout:  60 * time.Second,
    DialServer: func(addr *mgo.ServerAddr) (net.Conn, error) {
        conn, err := connectToCluster("172.12.13.145")
        if err != nil {
            fmt.Println("couldn't connect to the cluster, trying again..")
            return nil, err
        }
        remote, err := conn.Dial("tcp", addr.String())
        if err != nil {
            fmt.Println("couldn't connect to the mongodb server:", addr.String())
        }
        return remote, err
    },
}
session, err = mgo.DialWithInfo(dialinfo)

但下面的那个不起作用

  dialinfo := mgo.DialInfo{
    Addrs:    {"mongodbserver1","mongodbserver2"}
    Database: Mongo1,
    Username: User,
    Password: Pwd,
    Timeout:  60 * time.Second,
    DialServer: func(addr *mgo.ServerAddr) (net.Conn, error) {
        conn, err := connectToCluster("172.12.13.145")
        if err != nil {
            fmt.Println("couldn't connect to the cluster, trying again..")
            return nil, err
        }
        remote, err := conn.Dial("tcp", addr.String())
        if err != nil {
            fmt.Println("couldn't connect to the mongodb server:", addr.String())
        }
        return remote, err
    },
}
session, err = mgo.DialWithInfo(dialinfo)

1 个答案:

答案 0 :(得分:-1)

配置名称解析以在您的计算机上运行。这可能意味着将测试条目添加到/etc/hosts(如果您使用的是* nix)。或者,您可以将生产DNS服务器的条目添加到/etc/resolv.conf(同样,假设为* nix)。

相关问题