[{"data":1,"prerenderedAt":312},["ShallowReactive",2],{"article-7":3},{"id":4,"title":5,"body":6,"create":300,"description":89,"extension":301,"labels":302,"locked":304,"meta":305,"navigation":306,"path":307,"seo":308,"stem":309,"update":310,"__hash__":311},"articles/article/7.md","NS-3 环境搭建",{"type":7,"value":8,"toc":291},"minimark",[9,13,17,33,44,48,65,82,92,112,118,125,131,146,152,155,161,168,172,175,181,188,195,203,210,213,224,230,241,247,266,270,285],[10,11,12],"h2",{"id":12},"安装虚拟机",[14,15,16],"p",{},"这里选用的是 VMware，当然其他工具也行，就是需要 Linux 这个环境。",[14,18,19,20,27,28,32],{},"首先进入",[21,22,26],"a",{"href":23,"rel":24},"https://developer.aliyun.com/mirror/",[25],"nofollow","阿里云镜像站","，选择 ",[29,30,31],"code",{},"Ubuntu 22.04"," 镜像进行下载。",[14,34,35,36,39,40,43],{},"下载完成之后随便选择一个不会被删掉的位置就行，下面就打开 VMware 创建新的虚拟机，非常简单，单击 ",[29,37,38],{},"创建新虚拟机","  然后选择\n",[29,41,42],{},"安装程序光盘映像文件","，在路径中选择刚刚下载的 Ubuntu 镜像。后面的步骤直接按照默认值，一直往下进行就行。",[10,45,47],{"id":46},"安装-ns-3-环境","安装 NS-3 环境",[14,49,50,51,54,55,60,61,64],{},"这里选用 ",[29,52,53],{},"3.35"," 版本，可以在",[21,56,59],{"href":57,"rel":58},"https://www.nsnam.org/releases/ns-3-35/",[25],"这里","进行下载 ",[29,62,63],{},"all-in-one"," 版本，这个装起来比较方便。",[14,66,67,68,71,72,77,78,81],{},"首先，我们的虚拟机要做一些配置，为了稍后下载软件快一些，我们需要对 ",[29,69,70],{},"apt"," 的源替换为清华大学的源，Ubuntu\n的清华源可以在",[21,73,76],{"href":74,"rel":75},"https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/",[25],"这个网址","中查询到。查好对应版本的镜像源之后，我们需要修改\n",[29,79,80],{},"/etc/apt/sources.list"," 文件：",[83,84,90],"pre",{"className":85,"code":87,"language":88,"meta":89},[86],"language-bash","# 首先复制一下源文件\ncp /etc/apt/sources.list /etc/apt/sources.list.bak\n# 修改文件\nvi /etc/apt/sources.list\n# 更新 apt 软件列表\nsudo apt-get update\n","bash","",[29,91,87],{"__ignoreMap":89},[14,93,94,95,100,101,103,104,107,108,111],{},"我们可以从 NS-3 的 ",[21,96,99],{"href":97,"rel":98},"https://www.nsnam.org/wiki/Installation#Ubuntu.2FDebian.2FMint",[25],"Wiki"," 中找到，配置 ",[29,102,53],{},"\n版本的最低要求是需要安装 ",[29,105,106],{},"g++"," 和 ",[29,109,110],{},"python"," ：",[83,113,116],{"className":114,"code":115,"language":88,"meta":89},[86],"sudo apt install g++ python\n",[29,117,115],{"__ignoreMap":89},[14,119,120,121,124],{},"安装之后就需要解压前面下载的 ",[29,122,123],{},"ns-allinone-3.35.tar.bz2","：",[83,126,129],{"className":127,"code":128,"language":88,"meta":89},[86],"tar xjf ns-allinone-3.35.tar.bz2\n",[29,130,128],{"__ignoreMap":89},[14,132,133,134,137,138,141,142,145],{},"进入 ",[29,135,136],{},"ns-allinone-3.35"," 目录，输入 ",[29,139,140],{},"ls"," 可以查看目录下有个 ",[29,143,144],{},"build.py"," 文件，我们执行：",[83,147,150],{"className":148,"code":149,"language":88,"meta":89},[86],"./build.py --enable-example --enable-test\n",[29,151,149],{"__ignoreMap":89},[14,153,154],{},"接下来会看到编译过程，执行结束后会看到什么模块编译了，什么模块没有编译。如果想确认是否编译完成可以执行脚本：",[83,156,159],{"className":157,"code":158,"language":88,"meta":89},[86],"./waf --run hello-simulator\n",[29,160,158],{"__ignoreMap":89},[14,162,163,164,167],{},"运行结束之后，会看到 ",[29,165,166],{},"Hello Simulator"," 的输出。",[10,169,171],{"id":170},"实体机-vscode-配置","实体机 VSCode 配置",[14,173,174],{},"配置虚拟机的 ssh：",[83,176,179],{"className":177,"code":178,"language":88,"meta":89},[86],"# 安装 sshd\nsudo apt-get install sshd\n# 启动服务\nsudo service sshd start\n\n# 如果 sshd 安装不上，请将 apt 源换成清华源试试\n# 仍然不行的话，将 sshd 换成 openssh-server\nsudo apt-get install openssh-server\n",[29,180,178],{"__ignoreMap":89},[14,182,183,184,187],{},"在实体机的 VSCode 上，安装 ",[29,185,186],{},"Remote-SSH"," 这个插件，然后进行连接配置，",[14,189,190],{},[191,192],"img",{"alt":193,"src":194},"image","https://github.com/ttdly/ttdly.github.io/assets/108915955/55c52cb9-dc2d-454c-8583-7245e30d0955",[83,196,201],{"className":197,"code":199,"language":200,"meta":89},[198],"language-txt","Host ns-3 # 主机名\n    HostName 192.168.182.129 # 虚拟机 IP 地址\n    User root # 要登录的用户\n","txt",[29,202,199],{"__ignoreMap":89},[14,204,205,206,209],{},"虚拟机的 ip 地址可以通过 ",[29,207,208],{},"ip a"," 得到。",[14,211,212],{},"这里用 root 用户登录是因为不用超级用户权限登录的话，文件都会爆红出错。",[14,214,215,216,219,220,223],{},"但是，我们尝试连接的时候，会出现 ",[29,217,218],{},"Permission denied, please try again"," 这样的提示，需要我们编辑 ",[29,221,222],{},"/etc/ssh/sshd_config","\n这个文件：",[83,225,228],{"className":226,"code":227,"language":88,"meta":89},[86],"vi /etc/ssh/sshd_config\n",[29,229,227],{"__ignoreMap":89},[14,231,232,233,236,237,240],{},"找到 ",[29,234,235],{},"PermitRootLogin"," 字段，将其值改为 ",[29,238,239],{},"yes","，重新 ssh 服务，再连接就可以连接上了。",[83,242,245],{"className":243,"code":244,"language":88,"meta":89},[86],"# 重新启动服务\nsudo service sshd restart\n",[29,246,244],{"__ignoreMap":89},[14,248,249,250,253,254,257,258,261,262,265],{},"最后，在 VSCode 中为虚拟机装上 C/C++ 智能提示插件，按 ",[29,251,252],{},"F1"," 找到 ",[29,255,256],{},"C/C++ 编辑配置(JSON)"," 在里面将 ",[29,259,260],{},"includePath"," 字段改为\n",[29,263,264],{},"\"${workspaceFolder}/build/**\""," 这样在加载的时候快一些。配置成功之后，就能得到对代码的智能提示了。",[267,268,269],"h3",{"id":269},"自动登录",[14,271,272,273,276,277,280,281,284],{},"在使用的过程中发现，每次连接都需要输入密码，非常麻烦，所以去搜索了一下怎么自动连接，这是一个办法：\n在 Git Bash 下输入以下命令，",[29,274,275],{},"\u003CUsername>"," 是连接的用户名（例如 ",[29,278,279],{},"root","）",[29,282,283],{},"\u003CServer IP>"," 就是虚拟机的 IP （命令中不需要尖括号）",[83,286,289],{"className":287,"code":288,"language":88,"meta":89},[86],"ssh-copy-id -i ~/.ssh/id_rsa.pub \u003CUsername>@\u003CSever IP>\n",[29,290,288],{"__ignoreMap":89},{"title":89,"searchDepth":292,"depth":292,"links":293},2,[294,295,296],{"id":12,"depth":292,"text":12},{"id":46,"depth":292,"text":47},{"id":170,"depth":292,"text":171,"children":297},[298],{"id":269,"depth":299,"text":269},3,"2023-09-05T14:56:21.000Z","md",[303],"ns-3",false,{},true,"/article/7",{"title":5,"description":89},"article/7","2024-03-05T01:16:28.000Z","SVAB9gKhDANfNSbCj54M2OlKwwRnLq2JeRPAF-qSIDI",1755235549203]