如何在 Linux 上用 IP转发使内部网络连接到互联网

大家好,今天我们学习一下在 Linux 上用 iptables 实现从一个网络接口到另一个接口的IP转发(数据包转发)。IP转发的概念是,使 Linux 机器像路由器一样将数据从一个网络发送到另一个网络。所以,它能作为一个路由器或者代理服务器,实现将一个连接的互联网或者网络连接共享给多个客户端机器。

这是一些启用IP转发或网络包转发方法的简单步骤。

1. 启用 IPv4 转发

首先,我们需要在我们的 Linux 操作系统上启用 IPv4 转发。要做到这点,我们需要用 sudo 模式在 shell 或终端下执行下面的命令。


  1. $ sudo -s
  2. # echo 1 > /proc/sys/net/ipv4/ip_forward

临时IP转发

注意:上面的命令能马上启用ip转发,但只是临时的,直到下一次重启。要永久启用,我们需要使用我们惯用的文本编辑器打开 /etc/sysctl.conf 文件。


  1. # nano /etc/sysctl.conf

然后,增加 net.ipv4.ip_forward = 1 到文件中,或者删除那行的注释,保存并退出文件。


  1. net.ipv4.ip_forward = 1

编辑 Sysctl

运行下面的命令启用更改。


  1. # sysctl -p /etc/sysctl.conf

启用 Sysctl 更改

2. 配置 Iptables 防火墙

我们需要允许特定的(或者所有的)数据包通过我们的路由器。在这之前,我们要知道连接我们 Linux 的网络设备的接口名称。我们可以通过在终端或者 shell 运行以下命令获得接口名称。


  1. # ifconfig -a

Ifconfig

这里,在我们的机器中, eth2 是连接到互联网或者网络的网卡接口, wlan2 是我们要使用 iptables 从 eth2 转发数据包的接口。要实现转发,我们需要运行以下命令。


  1. # iptables -A FORWARD -i wlan2 -o eth2 -j ACCEPT

注意:请用你 Linux 机器中的可用设备名称替换 wlan2 和 eth2。

现在,由于netfilter/iptables是一个无状态的防火墙,我们需要让 iptables 允许已建立的连接通过。要做到这点,我们要运行下面的命令。


  1. # iptables -A FORWARD -i eth2 -o wlan2 -m state --state ESTABLISHED,RELATED -j ACCEPT

用 iptables 转发

3. 配置 NAT

然后,最后我们需要通过执行下面的命令修改发送到互联网的数据包的源地址为 eth2。


  1. # iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE

配置 nat

总结

最后,我们在我们以 iptables 作为防火墙 Linux 机器上成功的配置了从一个接口到另一个接口的数据包转发。这篇文章教给你将你的私有接口连接到互联网,不需要桥接接口,而是将从一个接口进来的数据包路由到另一个接口。就是这些,如果你有任何问题、建议、反馈,请写到下面的评论框中,然后我们可以改进或更新我们的内容。非常感谢!享受吧 :-)

原文发布时间为:2015-06-09

本文来自合作伙伴“Linux中国”

时间: 2024-10-27 10:56:29

如何在 Linux 上用 IP转发使内部网络连接到互联网的相关文章

Linux有问必答:如何在Linux上检查SSH的版本

Linux有问必答:如何在Linux上检查SSH的版本 Question:我想到SSH存在1和2两个版本(SSH1和SSH2).这两者之间有什么不同?还有我该怎么在Linux上检查SSH协议的版本? 安全Shell(SSH)通过加密的安全通信通道来远程登录或者远程执行命令.SSH被设计来替代不安全的明文协议,如telnet.rsh和rlogin.SSH提供了大量需要的特性,如认证.加密.数据完整性.授权和转发/通道. SSH1 vs. SSH2 SSH协议规范存在一些小版本的差异,但是有两个主要

如何在 Linux 上用 SQL 语句来查询 Apache 日志

如何在 Linux 上用 SQL 语句来查询 Apache 日志 Linux 有一个显著的特点,在正常情况下,你可以通过日志分析系统日志来了解你的系统中发生了什么,或正在发生什么.的确,系统日志是系统管理员在解决系统和应用问题时最需要的第一手资源.我们将在这篇文章中着重讲解 Apache HTTP web server 生成的 Apache access 日志. 这次,我们会通过另类的途径来分析 Apache access 日志,我们使用的工具是 asql.asql 是一个开源的工具,它能够允许

LFCS 系列第一讲:如何在 Linux 上使用 GNU sed 等命令来创建、编辑和操作文件

LFCS 系列第一讲:如何在 Linux 上使用 GNU sed 等命令来创建.编辑和操作文件 Linux 基金会宣布了一个全新的 LFCS(Linux 基金会认证系统管理员Linux Foundation Certified Sysadmin)认证计划.这一计划旨在帮助遍布全世界的人们获得其在处理 Linux 系统管理任务上能力的认证.这些能力包括支持运行的系统服务,以及第一手的故障诊断.分析,以及为工程师团队在升级时提供明智的决策. Linux 基金会认证系统管理员--第一讲 请观看下面关于

如何在 Linux 上使用 Gmail SMTP 服务器发送邮件通知

如何在 Linux 上使用 Gmail SMTP 服务器发送邮件通知 假定你想配置一个 Linux 应用,用于从你的服务器或桌面客户端发送邮件信息.邮件信息可能是邮件简报.状态更新(如 Cachet).监控警报(如 Monit).磁盘时间(如 RAID mdadm)等等.当你要建立自己的 邮件发送服务器 传递信息时 ,你可以替代使用一个免费的公共 SMTP 服务器,从而避免遭受维护之苦. 谷歌的 Gmail 服务就是最可靠的 免费 SMTP 服务器 之一.想要从应用中发送邮件通知,你仅需在应用中

如何在 Linux 上使用 x2go 设置远程桌面

由于一切都迁移到了云上,作为提高职员生产力的一种方式,虚拟远程桌面在工业中越来越流行.尤其对于那些需要在多个地方和设备之间不停漫游的人,远程桌面可以让他们和工作环境保持无缝连接.远程桌面对于雇主同样有吸引力,可以在工作环境中提高敏捷性和灵活性,由于硬件整合.桌面安全加固等原因降低 IT 花费. 在 Linux 世界中,理所当然设置远程桌面有很多选择,支持许多协议(例如 RDP.RFB.NX) 和服务器/客户端实现(例如 TigerVNC.RealVNC.FreeNX.x2go.X11vnc.Te

如何在 Linux 上使用 SSHfs 挂载一个远程文件系统

如何在 Linux 上使用 SSHfs 挂载一个远程文件系统 你曾经想过用安全 shell 挂载一个远程文件系统到本地吗?如果有的话,SSHfs 也许就是你所需要的.它通过使用 SSH 和 Fuse(LCTT 译注:Filesystem in Userspace,用户态文件系统,是 Linux 中用于挂载某些网络空间,如 SSH,到本地文件系统的模块) 允许你挂载远程计算机(或者服务器)到本地. 注意: 这篇文章假设你明白SSH 如何工作并在你的系统中配置 SSH. 准备 在使用 SSHfs 挂

如何在Linux上安装Telegram Messenger应用

如何在Linux上安装Telegram Messenger应用 Telegram是和whatsapp类似的及时通讯应用.它有一个庞大的用户群,并且很多独特的特性. Telegram Messenger for Linux 这篇文章让你了解Telegram应用,以及在Linux Box上的详细安装命令. Telegram的特性 支持移动设备 有桌面版本 第三方开发者可以访问Telegram的应用程序接口(API). 支持Android, iphone/ipad, Windows Phone, We

如何在 Linux 上使用 BackupPC 来架设跨平台的备份服务器

如何在 Linux 上使用 BackupPC 来架设跨平台的备份服务器 也许你没有从我先前关于 backupninja 和 backup-manager 的两篇文章中发现,我是一个超级备"粉".当提到备份,我宁愿备份的太多而不希望备份不足,因为如果我们有需要的话,你将会感激你为重要数据生成额外的拷贝所付出的时间和精力. 在这篇文章中,我将向你介绍 BackupPC,一个跨平台的备份服务器软件,它可以通过网络为 Linux,Windows 和 MacOS 等系统上的客户端主机拉取备份.B

如何在 Linux 上配置点对点 VPN

如何在 Linux 上配置点对点 VPN 一个传统的 VPN(如 OpenVPN.PPTP)由一个 VPN 服务器和一个或多个连接到这台服务器的客户端组成.当任意两个 VPN 客户端彼此通信时,VPN 服务器需要中继它们之间的 VPN 数据流量.这样一个中心辐射型的 VPN 拓扑结构存在的问题是,当连接的客户端增多以后,VPN 服务器很容易成为一个性能上的瓶颈.从某种意义上来说,中心化的 VPN 服务器也同样成为一个单点故障的来源,也就是当 VPN 服务器出现故障的时候,整个 VPN 都将无法被