如何在 Linux 上用 IP转发使内部网络连接到互联网
2015-06-16 14:01
459 查看
大家好,今天我们学习一下在 Linux 上用 iptables 实现从一个网络接口到另一个接口的IP转发(数据包转发)。IP转发的概念是,使 Linux 机器像路由器一样将数据从一个网络发送到另一个网络。所以,它能作为一个路由器或者代理服务器,实现将一个连接的互联网或者网络连接共享给多个客户端机器。
这是一些启用IP转发或网络包转发方法的简单步骤。
首先,我们需要在我们的 Linux 操作系统上启用 IPv4 转发。要做到这点,我们需要用 sudo 模式在 shell 或终端下执行下面的命令。
[/code]
注意:上面的命令能马上启用ip转发,但只是临时的,直到下一次重启。要永久启用,我们需要使用我们惯用的文本编辑器打开 /etc/sysctl.conf 文件。
[/code]
然后,增加 net.ipv4.ip_forward = 1 到文件中,或者删除那行的注释,保存并退出文件。
[/code]
运行下面的命令启用更改。
[/code]
我们需要允许特定的(或者所有的)数据包通过我们的路由器。在这之前,我们要知道连接我们 Linux 的网络设备的接口名称。我们可以通过在终端或者 shell 运行以下命令获得接口名称。
[/code]
这里,在我们的机器中, eth2 是连接到互联网或者网络的网卡接口, wlan2 是我们要使用 iptables 从 eth2 转发数据包的接口。要实现转发,我们需要运行以下命令。
[/code]
注意:请用你 Linux 机器中的可用设备名称替换 wlan2 和 eth2。
现在,由于netfilter/iptables是一个无状态的防火墙,我们需要让 iptables 允许已建立的连接通过。要做到这点,我们要运行下面的命令。
[/code]
然后,最后我们需要通过执行下面的命令修改发送到互联网的数据包的源地址为 eth2。
[/code]
这是一些启用IP转发或网络包转发方法的简单步骤。
1. 启用 IPv4 转发
首先,我们需要在我们的 Linux 操作系统上启用 IPv4 转发。要做到这点,我们需要用 sudo 模式在 shell 或终端下执行下面的命令。$ sudo -s
# echo 1 > /proc/sys/net/ipv4/ip_forward
[/code]
注意:上面的命令能马上启用ip转发,但只是临时的,直到下一次重启。要永久启用,我们需要使用我们惯用的文本编辑器打开 /etc/sysctl.conf 文件。
# nano /etc/sysctl.conf
[/code]
然后,增加 net.ipv4.ip_forward = 1 到文件中,或者删除那行的注释,保存并退出文件。
net.ipv4.ip_forward = 1
[/code]
运行下面的命令启用更改。
# sysctl -p /etc/sysctl.conf
[/code]
2. 配置 Iptables 防火墙
我们需要允许特定的(或者所有的)数据包通过我们的路由器。在这之前,我们要知道连接我们 Linux 的网络设备的接口名称。我们可以通过在终端或者 shell 运行以下命令获得接口名称。# ifconfig -a
[/code]
这里,在我们的机器中, eth2 是连接到互联网或者网络的网卡接口, wlan2 是我们要使用 iptables 从 eth2 转发数据包的接口。要实现转发,我们需要运行以下命令。
# iptables -A FORWARD -i wlan2 -o eth2 -j ACCEPT
[/code]
注意:请用你 Linux 机器中的可用设备名称替换 wlan2 和 eth2。
现在,由于netfilter/iptables是一个无状态的防火墙,我们需要让 iptables 允许已建立的连接通过。要做到这点,我们要运行下面的命令。
# iptables -A FORWARD -i eth2 -o wlan2 -m state --state ESTABLISHED,RELATED -j ACCEPT
[/code]
3. 配置 NAT
然后,最后我们需要通过执行下面的命令修改发送到互联网的数据包的源地址为 eth2。# iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
[/code]
相关文章推荐
- Xen安全架构sHype/ACM和XSM/Flask的相关网络资源
- 转-Android联网 — HttpURLConnection和HttpClient选择哪个好?
- jdbc工作原理
- 获取网络状态及跳转到网络设置界面
- HttpClient的CircularRedirectException异常原因及解决办法
- IOS中显示和隐藏状态栏的网络活动标志
- 简述TCP/IP四层体系结构及每层作用
- 使用fiddler模拟http请求
- 【Nginx】使用nginx搭建https服务器
- Vmware vSphere 5.0系列教程之四 vSphere网络原理及vSwitch简介
- 使用vmware配置centos 6.0+网络出现的各种问题解决方案
- 细说 ASP.NET控制HTTP缓存
- 社会网络分析法SNA
- Fatal error: Undefined class constant 'MYSQL_ATTR_INIT_COMMAND' in D:\phpStudy\http\obd\ThinkPHP\Li
- Java多线程与网络编程综合使用
- OVS : 构建网桥和网桥相连的网络
- cocos2d-X 棋牌手机游戏《萌妹斗地主》网络版完整源码下载
- 九、网络编程
- 用 Java 实现断点续传 (HTTP)
- TCP协议三次握手过程分析