ubuntu 设置 NAT 转发
2016-04-17 23:13
197 查看
针对需求:
嵌入式开发中,经常使用板子和笔记本通过网线直连,如果需要板子连接到外网,就比较尴尬。
最简单方法,可以把板子接到局域网内,我们的笔记本通过局域网交换机连接到板子,可是,这样要很多修改 IP 的操作;通常情况下,这时,你还需要一台小交换机和几根网线在你桌子上。很麻烦对不对?
这里提供了一个替代方法:可以配置笔记本 IPV4 转发,笔记本用 Wi-Fi 来连接到网络,然后,板子与笔记本有线连接的情况下,板子可以通过笔记本连接到外网。
大致如下图:
![](https://images2015.cnblogs.com/blog/33827/201607/33827-20160713163035592-312941534.png)
开发板修改:
1. 修改开发板 /etc/network/interface 文件,主要将 gateway 改为笔记本 IP。
2. 重新插拔网线让配置生效。(可以ifdown后ifup,插拔网线更快些 :)
笔记本(ubuntu,均需本机 root 权限):
1. 使能本机的 ip_forward : echo 1 > /proc/sys/net/ipv4/ip_forward
2. 设置 iptables 规则:
清除所有规则: iptables -F
因为清除了所有,所以需要先允许 INPUT: iptables -P INPUT ACCEPT
还需要允许 FORDWARD: iptables -P FORWARD ACCEPT
允许 NAT 转发所有包到 wlan0:iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
可以使用下面两条指令来查看配置是否有效:
1. 如果 ip_forward 是打开的,则输出 1: cat /proc/sys/net/ipv4/ip_forward
2. iptables -nvL 看有哪些规则
如果是只有一个网口的台式机,没办法,那你还是乖乖的找交换机和网线去吧~!
搞了个脚本,免得每次手动敲:
嵌入式开发中,经常使用板子和笔记本通过网线直连,如果需要板子连接到外网,就比较尴尬。
最简单方法,可以把板子接到局域网内,我们的笔记本通过局域网交换机连接到板子,可是,这样要很多修改 IP 的操作;通常情况下,这时,你还需要一台小交换机和几根网线在你桌子上。很麻烦对不对?
这里提供了一个替代方法:可以配置笔记本 IPV4 转发,笔记本用 Wi-Fi 来连接到网络,然后,板子与笔记本有线连接的情况下,板子可以通过笔记本连接到外网。
大致如下图:
![](https://images2015.cnblogs.com/blog/33827/201607/33827-20160713163035592-312941534.png)
开发板修改:
1. 修改开发板 /etc/network/interface 文件,主要将 gateway 改为笔记本 IP。
2. 重新插拔网线让配置生效。(可以ifdown后ifup,插拔网线更快些 :)
笔记本(ubuntu,均需本机 root 权限):
1. 使能本机的 ip_forward : echo 1 > /proc/sys/net/ipv4/ip_forward
2. 设置 iptables 规则:
清除所有规则: iptables -F
因为清除了所有,所以需要先允许 INPUT: iptables -P INPUT ACCEPT
还需要允许 FORDWARD: iptables -P FORWARD ACCEPT
允许 NAT 转发所有包到 wlan0:iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
可以使用下面两条指令来查看配置是否有效:
1. 如果 ip_forward 是打开的,则输出 1: cat /proc/sys/net/ipv4/ip_forward
2. iptables -nvL 看有哪些规则
如果是只有一个网口的台式机,没办法,那你还是乖乖的找交换机和网线去吧~!
搞了个脚本,免得每次手动敲:
#!/usr/bin/env bash if [ -z $1 ]; then echo "usage: forward_to [eth0|wlan0]" exit 1 fi if [ $(id -u) -ne 0 ]; then echo "Re-running script under sudo..." sudo "$0" "$@" exit 1 fi echo 1 > /proc/sys/net/ipv4/ip_forward iptables -F iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -t nat -A POSTROUTING -o $1 -j MASQUERADE #dhcpd eth0 -pf /var/run/dhcp-server/dhcpd.pid
相关文章推荐
- 课程练习二-1009连连看
- C++作业2
- ios开发之代理设计模式
- 使用WebMagic爬虫框架及javaEE SSH框架将数据保存到数据库(一)
- android studio “aapt” IOException error=2, No such file or directory"
- 学习进度第七周
- 自考结束了
- poj2488.特坑的一题
- 利用HTML5分片上传超大文件
- flash进行上传使用什么协议?
- Spring中配置数据源的4种形式
- 自考结束了
- 你是否是团队里面最默默付出的那个coder,却发现滔滔不绝的产品和设计是团队里的开心果(转)
- 都说「三观不正」,那么正确的三观是怎样的 [转]
- 笔记-->关系操作符 ==
- c++ 继承与权限
- 《第一行代码》第七章 读取系统联系人(一)
- Two Sum
- C++11 中的线程、锁和条件变量
- c++ vector用法精讲