登录
首页 >  Golang >  Go问答

Go语言服务器未在tun0接口上监听

来源:stackoverflow

时间:2024-03-23 17:57:26 306浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《Go语言服务器未在tun0接口上监听》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

我正在运行一个简单的标准 go tcp 服务器,我想将其绑定到我的 tun0 接口。

服务器是:

func main() {
    conn, err := net.listen("tcp", "10.1.0.21:4444")
    if err != nil {
        fmt.println(err)
        return
    }
    defer conn.close()

    fmt.println("running on 10.1.0.21:4444")
    c, err := conn.accept()
    if err != nil {
        fmt.println(err)
        return
    }

    for {
        data, err := bufio.newreader(c).readstring('\n')
        if err != nil {
            fmt.println(err)
            return
        }

        fmt.print("got ", data)
        mytime := "hello"
        c.write([]byte(mytime))
    }
}

以 root 身份创建 tun0,我运行:

ip tuntap add mode tun dev tun0
ip addr add 10.1.0.20/24 dev tun0
ip link set dev tun0 up

监听10.1.0.21时,服务器无法运行:

监听 tcp 10.1.0.21:4444: 绑定:无法分配请求的地址

它可以侦听 10.1.0.20,但 wireshark(作为 root)不会拦截 tun0 上的任何数据包,而我使用 netcat (nc) 向其发送数据包并且服务器成功响应。

为什么不能绑定到10.1.0.21?为什么 wireshark 侦听 10.1.0.20 时无法拦截任何流量?


解决方案


确保选择环回接口来捕获该流量,因为该流量是本地的。另请参阅:https://www.naturalborncoder.com/virtualization/2014/10/17/understanding-tun-tap-interfaces/

关于绑定到 10.1.0.21 的其他问题已在上面的评论中得到解答。

理论要掌握,实操不能落!以上关于《Go语言服务器未在tun0接口上监听》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>