如何在 Linux 上用 IP转发使内部网络连接到互联网
大家好,今天我们学习一下在 Linux 上用 iptables 实现从一个网络接口到另一个接口的IP转发(数据包转发)。IP转发的概念是,使 Linux 机器像路由器一样将数据从一个网络发送到另一个网络。所以,它能作为一个路由器或者代理服务器,实现将一个连接的互联网或者网络连接共享给多个客户端机器。
这是一些启用IP转发或网络包转发方法的简单步骤。
首先,我们需要在我们的 Linux 操作系统上启用 IPv4 转发。要做到这点,我们需要用 sudo 模式在 shell 或终端下执行下面的命令。
$ sudo -s # echo 1 /proc/sys/net/ipv4/ip_forward
临时IP转发
注意:上面的命令能马上启用ip转发,但只是临时的,直到下一次重启。要永久启用,我们需要使用我们惯用的文本编辑器打开 /etc/sysctl.conf 文件。
# nano /etc/sysctl.conf
然后,增加 net.ipv4.ip_forward = 1 到文件中,或者删除那行的注释,保存并退出文件。
net.ipv4.ip_forward = 1
编辑 Sysctl
运行下面的命令启用更改。
# sysctl -p /etc/sysctl.conf
启用 Sysctl 更改
2. 配置 Iptables 防火墙我们需要允许特定的(或者所有的)数据包通过我们的路由器。在这之前,我们要知道连接我们 Linux 的网络设备的接口名称。我们可以通过在终端或者 shell 运行以下命令获得接口名称。
# ifconfig -a
Ifconfig
这里,在我们的机器中, eth2 是连接到互联网或者网络的网卡接口, wlan2 是我们要使用 iptables 从 eth2 转发数据包的接口。要实现转发,我们需要运行以下命令。
# iptables -A FORWARD -i wlan2 -o eth2 -j ACCEPT
注意:请用你 Linux 机器中的可用设备名称替换 wlan2 和 eth2。
现在,由于netfilter/iptables是一个无状态的防火墙,我们需要让 iptables 允许已建立的连接通过。要做到这点,我们要运行下面的命令。
# iptables -A FORWARD -i eth2 -o wlan2 -m state --state ESTABLISHED,RELATED -j ACCEPT
用 iptables 转发
3. 配置 NAT然后,最后我们需要通过执行下面的命令修改发送到互联网的数据包的源地址为 eth2。
# iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
配置 nat
最后,我们在我们以 iptables 作为防火墙 Linux 机器上成功的配置了从一个接口到另一个接口的数据包转发。这篇文章教给你将你的私有接口连接到互联网,不需要桥接接口,而是将从一个接口进来的数据包路由到另一个接口。就是这些,如果你有任何问题、建议、反馈,请写到下面的评论框中,然后我们可以改进或更新我们的内容。非常感谢!享受吧 :-)
原文发布时间为:2015-06-09
本文来自云栖社区合作伙伴“Linux中国”
《Linux高性能服务器编程》——2.5 IP转发 本节书摘来自华章计算机《Linux高性能服务器编程》一书中的第2章,第2.5节,作者 游双,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
U盘安装Linux CentOS 6.5 64位操作系统(来自互联网) 从centOS6.5开始直接把iso文件写入u盘就行了。 方法1:windows平台:1.用UltraISO打开iso(如:CentOS-6.5-x86_64-bin-DVD1.iso)2.然后点 启动 - 写入硬盘映像 ,硬盘驱动器是你的u盘,映像文件安装光盘iso,写入方式是USB-HDD+,点击 写入 按钮。
相关文章
- linux 混杂设备驱动之adc驱动
- Linux查看访问IP
- Get ip address from hostname in C using Linux sockets
- linux下通过iptables只允许指定ip地址访问指定端口的设置方法
- 【学习总结】快速上手Linux玩转典型应用-第6章-linux常用命令讲解
- WINDOWS和Linux上安装php7 alpha 并安装 yaf
- linux命令:查看本机IP地址 curl ip.gs
- paip.注册java程序为LINUX系统服务的总结。
- linux驱动开发重点关注内容--摘自《嵌入式Linux驱动模板精讲与项目实践》
- 【Linux 内核】编译 Linux 内核 ② ( 解压内核源码 | 查询当前 Linux 内核版本号 | 进入并查看 linux 内核源码目录 )
- 在linux/unix中查找大文件
- Linux配置定时,使用 crontab -e 与 直接编辑 /etc/crontab 的区别
- linux shell检查字符串是否是IP
- L69.linux命令每日一练 -- 第十章 Linux网络管理命令 -- arpping和telnet
- L61.linux命令每日一练 -- 第九章 Linux进程管理命令 -- renice和nohup
- L44.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- su和visudo
- 10 Linux iostat 命令报告 CPU 和 IO 统计信息
- zynq linux系统上通过寄存器读写直接调用HLS IP
- Linux 的 Shell
- 【技术分享】linux各种一句话反弹shell总结——攻击者指定服务端,受害者主机(无公网IP)主动连接攻击者的服务端程序(CC server),开启一个shell交互,就叫反弹shell。
- Linux Redis集群搭建与集群客户端实现
- 【看表情包学Linux】Redirect 重定向 | 时间相关指令 | 文件查找 | 打包与压缩
- Linux通过域名得到ip