如何在 Linux 上用 IP转发使内部网络连接到互联网
2015-06-15 12:02
851 查看
来源:http://linux.cn/article-5595-1.html
首先,我们需要在我们的 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]
最后,我们在我们以 iptables 作为防火墙 Linux 机器上成功的配置了从一个接口到另一个接口的数据包转发。这篇文章教给你将你的私有接口连接到互联网,不需要桥接接口,而是将从一个接口进来的数据包路由到另一个接口。就是这些,如果你有任何问题、建议、反馈,请写到下面的评论框中,然后我们可以改进或更新我们的内容。非常感谢!享受吧 :-)
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]
总结
最后,我们在我们以 iptables 作为防火墙 Linux 机器上成功的配置了从一个接口到另一个接口的数据包转发。这篇文章教给你将你的私有接口连接到互联网,不需要桥接接口,而是将从一个接口进来的数据包路由到另一个接口。就是这些,如果你有任何问题、建议、反馈,请写到下面的评论框中,然后我们可以改进或更新我们的内容。非常感谢!享受吧 :-)
相关文章推荐
- RTP错误----ERROR: Couldn't create the RTP or RTCP socket
- Ubuntu 设置NAT共享网络(命令行方法)
- 浅谈网络文案的用户体验
- 网关、路由器、DNS等网络术语的通俗比喻
- HttpClient4.3.3 https请求
- 快速Android开发系列网络篇之Android-Async-Http
- TCP连接探测中的Keepalive和心跳包
- HttpWebRequest的GetResponse或GetRequestStream偶尔超时 + 总结各种超时死掉的可能和相应的解决办法
- 用Dart搭建HTTP服务器(2)
- TCP之选项TCP_KETEPALIVE
- 全国四级-网络工程师考试总结
- 从网络接手server:2、ssh到server
- 从网络接手server:1、网络启动server
- HTTP 协议详解
- Linux网络编程14——tcp、udp迭代服务器
- Android 轻松实现网络交互模板
- Swoole 高性能网络通信框架
- 关于TCP下SOCKET的一些测试
- 简单的HTTP代理服务器实现
- 我为什么选择51cto网络视频教育