IPTABLE做NAT共享小区宽带上网

本文介绍了一位用户在RedHat 7.2上使用iptables进行NAT配置以实现内部网络共享小区宽带上网的过程。通过修正iptables规则,成功解决了内部主机无法正常访问互联网的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我用新装的redhat 7.2,公司的代理服务器有两个网卡:eth0:172.16.0.1/24(公司内部网段),eth1:10.12.9.172/24(小区宽带分配的地址),在linux服务器上可以上网,打算用iptable做NAT公司共享上网,于是:
echo 1 〉/proc/sys/net/ipv4/ip_forward
modprobe iptable_nat
modprobe ip_table
modprobe ip_nat_table
modprobe ip_conntrack
modprobe ip_conntrack_ftp
iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -o eth0 -j SNAT --to 10.12.9.172
iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 172.16.0.1
之后,只是在172.16.0.2上可以ping到所有广域地址,比如:202.96.134.133等,但是,就是不能上网,发现DNS不能解析,有发现telnet,ftp都不能出去,请大家帮忙检查问题何在?为何只可以过ICMP报文,是否和firewall有关呢?急切盼复,谢谢!
求助IPTABLE做NAT共享小区宽带上网,谢谢!

把FIREWALL设为NONE试试

oak
求助IPTABLE做NAT共享小区宽带上网,谢谢!

现在问题完全解决了,经检查和故障在现,是我的iptable语句出错,应该为
去除PREROUTING语句,并更改POSTROUTING语句为:iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -o eth1 -j SNAT --to 10.12.9.172,希望对以后需要在相同场景下配置服务器的朋友有所帮助,并谢谢所有关心的朋友!
在内部主机连接到外部网络时,当第一个数据包到达NAT路由器时,router检查它的NAT表,因为是NAT是静态配置的,故可以查询出来(simply entry),然后router将数据包的内部局部IP(源地址)更换成内部全局地址,再转发出去。外部主机接受到数据包用接受到的内部全局地址来响应,NAT接受到外部回来的数据包,再根据NAT表把地址翻译成内部局部IP,转发过去。为什么要“将数据包的内部局部IP(源地址)更换成内部全局地址,再转发 出去。外部主机接受到数据包用接受到的内部全局地址来响应,NAT接受到 外部回来的数据包,再根据NAT表把地址翻译成内部局部IP,转发过去。
### iptables 四表五链与 NAT 配置详解 #### 一、iptables 的四张表及其功能 iptables 是 Linux 系统中的一个重要工具,用于管理网络数据包过滤和地址转换等功能。它主要由 **filter 表**、**nat 表**、**mangle 表** 和 **raw 表** 组成。 1. **Filter 表** Filter 表是最常用的表之一,主要用于处理数据包的过滤逻辑。它的核心目标是决定是否允许某个数据包通过防火墙[^1]。 2. **Nat 表** Nat 表负责网络地址转换(Network Address Translation),通常应用于路由转发场景下的源地址或目的地址修改操作。例如,当服务器对外提供服务时,可以通过此表隐藏内部真实 IP 地址[^4]。 3. **Mangle 表** Mangle 表的功能是对特定的数据包进行标记或者修改其头部信息,比如调整 TTL 值等特殊需求下使用该表来实现更精细控制。 4. **Raw 表** Raw 表用来指定哪些连接不经过 conntrack 连接跟踪机制处理,在某些情况下可以提高性能并减少资源消耗。 --- #### 二、iptables 的五个规则链 iptables 中每张表都包含若干条链(Chain)。以下是常见的五种规则链: 1. **INPUT 链** 处理进入本机的目标流量。如果一条外部请求要到达本地主机,则会先匹配 INPUT 链上的规则。 2. **OUTPUT 链** 控制从本机发出的所有流量行为模式设定;任何离开当前系统的通信都将经历这一阶段检测过程。 3. **FORWARD 链** 负责转发到其他设备而非终止于自身的数据流判断依据制定标准^。 4. **PREROUTING 链 (位于 nat 表)** 数据包刚进入路由器之前就会被 PREROUTING 所拦截下来相应的更改动作如 DNAT(目的地重定向). 5. **POSTROUTING 链 (同样存在于 nat 表内)** 当数据包即将离开网卡前最后一步执行 SNAT 或 MASQUERADE 功能完成源IP替换工作以便让回应报文能够正确返回给发起者. --- #### 三、NAT 工作原理及配置实例 ##### 1. NAT 的两种形式 - **SNAT**: Source Network Address Translation, 修改的是发送方的 IP 地址; - **DNAT**: Destination Network Address Translation, 改变接收者的 IP 地址。 ##### 2. 实现 Internet 访问共享(SNAT/MASQURADE) 假设有一台运行着 iptables 的机器充当网关角色,并希望局域网内的计算机能经由此出口上网: ```bash # 开启 IPv4 转发功能 echo 1 > /proc/sys/net/ipv4/ip_forward # 设置 POSTROUTING 规则启用 masquerade 模式动态映射外网接口 ip iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE ``` 上述命令中 `-o eth0` 参数指定了向外连通所使用的物理网络适配器名称 `eth0`, 如果实际环境有所不同需替换成对应值。 ##### 3. 提供 Web 服务(DNAT) 为了让外界可通过公网 IP 来访问部署在私有子网里的 web server , 可以这样设置 : ```bash iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j DNAT --to-destination 192.168.1.10:80 ``` 这里我们将入站 TCP 流量的目的端口号设为了 HTTP 协议默认监听点即第 80 号端口 , 并将其重新导向至 LAN 下某成员节点上运行的服务进程所在位置 。 同样需要注意输入参数里涉及的具体硬件设施代号可能因场合而异应作出相应调整 . --- #### 四、保存规则的方法 为了避免重启后丢失自定义好的安全防护措施集合体结构化文档文件路径如下所示 : ```bash service iptables save # CentOS/RHEL 系列发行版适用方式 /etc/init.d/iptables save # Debian/Ubuntu 类型操作系统采用手段 ``` 最终存储下来的成果会被记录进 `/etc/sysconfig/iptables` 文件当中去永久保留起来直至手动清除为止 [^3].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值