# nat_stack **Repository Path**: Roccoon/nat_stack ## Basic Information - **Project Name**: nat_stack - **Description**: 国科大 计算机网络大作业 NAT部分 - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: https://blog.wanghaoyu.cn/2017/11/30/nat-stack/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2017-11-20 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 计算机网络大作业 NAT部分 ## 说明 本实验是实现在**无丢包网络**下的简易NAT地址转换。 实验环境:Mininet ## 编译 ```shell git clone https://gitee.com/873314461/nat_stack.git cd nat_stack make ``` ## 用法 ```shell # 启动mininet $ sudo python2 topo/nat_topo.py # 打开xterm mininet> xterm h1 h2 n1 # n1中启动NAT服务 ./scripts/disable_arp.sh ./scripts/disable_icmp.sh ./scripts/disable_ip_forward.sh # Archlinux中需要将-p ip改成-p ipv4 ./scripts/disable_tcp_rst.sh export LD_LIBRARY_PATH=.; # 设置lib路径 ./nat # 启动NAT服务 # 在h2节点启动简易HTTP服务器 ./scripts/disable_offloading.sh # 防止协议栈生成错误的checksum python2 -m SimpleHTTPServer # 在h1节点启动wget ./scripts/disable_offloading.sh # 防止协议栈生成错误的checksum wget http://159.226.39.123:8000 ``` ## 目录结构 带*号的表示需要完善的文件。 ``` tcp_stack ├── example # 多线程和list例子程序 ├── include # 相关头文件 ├── libipstack.so # IP查找和发送数据包相关函数实现,参见相应头文件 ├── main.c ├── Makefile ├──*nat.c # NAT相关操作 ├── nat-reference # NAT参考实现 ├── README.md ├── scripts # 禁止协议栈脚本 └── topo # Mininet拓扑文件夹 ```