如何在 Linux 上使用 iptables 设置 Internet 连接共享如何在 Linux 上使用 iptables 设置 Internet 连接共享如何在 Linux 上使用 iptables 设置 Internet 连接共享如何在 Linux 上使用 iptables 设置 Internet 连接共享
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 上使用 iptables 设置 Internet 连接共享

在本教程中,我将解释如何在 Linux 上的多个设备之间共享单个 Internet 连接。虽然消费级 WiFi 路由器如今已成为主流,但假设您家里没有路由器,那么这个问题就不再是问题了。然而,假设您有一个已经组装有调制解调器和 LAN 卡的 Linux 机器。调制解调器通过动态公共 IP 地址连接到 Internet,并且 LAN 卡连接到交换机/集线器。其他设备(Linux/Windows PC、笔记本电脑)无需任何互联网连接即可连接到交换机。要共享 Linux 盒子的互联网连接,您必须将盒子变成网关,以便它可以中继与其他设备之间的流量。

专业术语

  • 私有IP地址(不可路由的地址)是用于局域网的IP地址(通过互联网不可见)。

  • 公共IP地址(可路由地址)是通过互联网可见的IP地址。

  • IP 伪装是一项允许一组机器通过 MASQ 网关访问互联网的功能。 MASQ 网关后面的那些机器在 Internet 上永远不可见。 MASQ 网关后面的计算机的任何传出和传入流量都必须经过 MASQ 网关。

  • 网络地址转换(NAT)是一种通过IP伪装使私有IP地址到达互联网的功能。

硬件要求

  • 一台具有两个接口(一个公共 IP 地址和另一个私有 IP 地址)的 Linux 盒子,将用作网关。

  • 一台或多台具有私有 IP 地址的 Linux/Windows PC 或笔记本电脑。

  • 交换机/集线器(可选)。

分步指南

Linux 盒子(连接共享网关)上需要执行以下过程。

1. 激活IP转发

为了设置 Internet 连接共享,您需要使用内核参数在 Linux 机器上启用 IP 转发。启动内核参数存储在/etc/sysctl.conf中。

打开此文件,找到一行 # net.ipv4.ip_forward=0。删除哈希标记(即取消注释),并将值设置为 1。它应该如下所示:


net.ipv4.ip_forward = 1

您还可以通过以下命令在运行时激活 IP 转发,但此更改在重新启动后不会保留:


$ sudo sysctl -w net.ipv4.ip_forward=1
$ sudo sysctl -p

2、NAT配置

Internet 连接共享的另一个重要部分是 NAT 配置,可以使用 iptables 命令完成。 iptables 维护四个防火墙表:

  • FILTER(默认表)

  • 网络地址转换

  • 曼乐

  • 生的

在本教程中,我们将仅使用两个表:FILTER 和 NAT 表。

首先,刷新所有活动的防火墙规则。


$ sudo iptables -X
$ sudo iptables -F
$ sudo iptables -t nat -X
$ sudo iptables -t nat -F

在INPUT表上,您必须将链FORWARD设置为ACCEPT目标,这样所有通过盒子的数据包都将被正确处理。


$ sudo iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$ sudo iptables -I FORWARD  -m state --state RELATED,ESTABLISHED -j ACCEPT

在 NAT 表中,您必须为 WAN 接口启用 IP 伪装。我们假设 WAN 接口是 ppp0。要在 ppp0 接口上启用 IP 伪装,可以使用以下命令:


$ sudo iptables -t nat -I POSTROUTING -o ppp0 -j MASQUERADE

3. 配置私有IP地址

在 Linux 盒子上完成所有配置后,您必须配置其他设备(Linux/Windows PC、笔记本电脑)的 DNS 服务器和默认网关,以便它们指向 Linux 盒子。请注意,您不需要在 Linux 机器上设置 DNS 服务器。来自其他设备的每个 DNS 请求都会由 Linux 盒子自动转发到您的上游 ISP。

如果您在其他设备上使用 Linux,则可以使用以下命令更改其默认网关和 DNS 服务器。我假设您使用的是 192.168.1.0/24 私有 IP 地址段,并且 192.168.1.1 是分配给 Linux 机器的 IP 地址。


$ sudo ip route del default
$ sudo ip route add default via 192.168.1.1
$ sudo sh -c "echo 'nameserver 192.168.1.1' > /etc/resolv.conf"

如果您有其他Linux设备,可以在其他设备上重复上述命令。

如果您有 Windows 设备,您可以通过控制面板上的网络连接属性更改默认网关和 DNS 服务器。

4. 完整的脚本

这是在 Linux 机器上设置 Internet 连接共享的完整脚本。 WAN 接口 (ppp0) 需要根据您的环境进行更换。


$ sudo vi /usr/local/bin/ishare

#!/bin/bash

## Internet connection shating script

sysctl -w net.ipv4.ip_forward=1
sysctl -p
iptables -X
iptables -F
iptables -t nat -X
iptables -t nat -F
iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD  -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -I POSTROUTING -o ppp0 -j MASQUERADE

将上述脚本保存到/usr/local/bin/ishare,然后通过以下命令更改可执行位。


$ sudo chmox +x /usr/local/bin/ishare

如果您希望每次启动时都执行脚本,可以将脚本注册到/etc/rc.local。打开 /etc/rc.local,并在语句 exit 0 之前添加以下行。


/usr/local/bin/ishare
©2015-2025 艾丽卡 support@alaica.com