Linux上用IP转发使内部网络连接互联网
ip转发的概念:
使 linux 机器像路由器一样将数据从一个网络发送到另一个网络。所以,它能作为一个路由器或者代理服务器,实现将一个连接的互联网或者网络连接共享给多个客户端机器。
1. 启用 ipv4 转发
首先,我们需要在我们的 linux 操作系统上启用 ipv4 转发。要做到这点,我们需要使用root用户在 shell 或终端下执行下面的命令。
#echo 1 > /proc/sys/net/ipv4/ip_forward
临时ip转发
注意:上面的命令能马上启用ip转发,但只是临时的,直到下一次重启。要永久启用,我们需要使用我们惯用的文本编辑器打开 /etc/sysctl.conf 文件。
#vim /etc/sysctl.conf
然后,增加net.ipv4.ip_forward = 1 到文件中,或者删除那行的注释,保存并退出文件。
net.ipv4.ip_forward= 1
运行下面的命令启用更改。
#sysctl -p /etc/sysctl.conf
2. 配置 iptables 防火墙
我们需要允许特定的(或者所有的)数据包通过我们的路由器。在这之前,我们要知道连接我们 linux 的网络设备的接口名称。我们可以通过在终端或者 shell 运行以下命令获得接口名称。
#ifconfig -a
这里,在我们的机器中, eth0 是连接到互联网或者网络的网卡接口, wlan2 是我们要使用 iptables 从 eth0 转发数据包的接口。要实现转发,我们需要运行以下命令。
#iptables -a forward -i wlan2 -o eth0 -j accept
注意:请用你 linux 机器中的可用设备名称替换 wlan2 和 eth0。
现在,由于netfilter/iptables是一个无状态的防火墙,我们需要让 iptables 允许已建立的连接通过。要做到这点,我们要运行下面的命令。
3. 配置 nat
然后,最后我们需要通过执行下面的命令修改发送到互联网的数据包的源地址为 eth0。
#iptables -t nat -a postrouting -o eth0 -j masquerade
下一篇: Python笔记:模板方法模式