博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何在 Linux 上用 IP转发使内部网络连接到互联网
阅读量:6863 次
发布时间:2019-06-26

本文共 1388 字,大约阅读时间需要 4 分钟。

大家好,今天我们学习一下在 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转发

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

 
  1. # nano /etc/sysctl.conf

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

 
  1. net.ipv4.ip_forward = 1

编辑 Sysctl

编辑 Sysctl

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

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

启用 Sysctl 更改

启用 Sysctl 更改

2. 配置 Iptables 防火墙

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

 
  1. # ifconfig -a

Ifconfig

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 转发

用 iptables 转发

3. 配置 NAT

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

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

配置 nat

配置 nat

总结

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

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

本文来自云栖社区合作伙伴“Linux中国”

转载地址:http://byeyl.baihongyu.com/

你可能感兴趣的文章
gcc/g++添加头文件目录和库文件目录
查看>>
python 批量处理文件重命名
查看>>
mysql,mairadb启动脚本
查看>>
jQuery温度计,支持摄氏度华氏度同时展示
查看>>
oracle 11g goldengate DML单向复制测试环境搭建
查看>>
Linux Web服务器网站故障分析常用的命令
查看>>
python 实现 Centos 7.1 下系统自动分区并mount到/data*
查看>>
一文看懂自动驾驶中应用的机器学习算法
查看>>
Cisco之ARP配置
查看>>
pycharm代码自动补全功能
查看>>
linux下给php安装pdo_mysql和zlib以及测试模式的选择(禅道安装过程中遇到的问题)...
查看>>
shell特殊符号cut命令,sort_wc_uniq命令,tee_tr_split命令
查看>>
centos 7--LNMP环境部署
查看>>
咨询公司建议完美批准私有化
查看>>
如何定位cpu占用率高的java线程
查看>>
基于centos6的mysql5.7.13主从部署(一)
查看>>
Nginx与php的整合
查看>>
常用SQL语句
查看>>
理解OVER子句
查看>>
[开发工具]JBuilder2008已经发布
查看>>