配置SNAT实现共享上网

该案例通过在Linux网关上配置SNAT策略,搭建了局域网-Linux网关-互联网环境,实现了局域网主机共享上网。首先,停用iptables服务并调整网络设置,然后在网关上添加SNAT转换规则,将内网192.168.4.0/24的数据包源IP改为网关的外网IP,使得内网主机能够访问外网。最后,通过MASQUERADE伪装策略进一步优化SNAT,确保共享上网功能正常工作。

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

  • 问题

本案例要求熟悉SNAT策略的典型应用场景,完成以下任务:

  1. 搭建一套“局域网-Linux网关-互联网”的案例环境
  2. 在Linux网关上配置SNAT策略,实现局域网主机的共享上网
  3. 修改现有的SNAT策略,验证MASQUERAD伪装的有效性
  • 方案

采用三台RHEL6虚拟机svr5gw1pc120,如图-2所示其中虚拟机svr5作为局域网络的测试机,接入NAT网络virbr0);虚拟机pc120作为Internet的测试机,接入隔离网络(virbr1);虚拟机gw1作为网关/路由器,配置eth0eth1两块网卡分别接入两个网络virbr0virbr1

图-2

内网测试机svr5还需要将默认网关指向Linux网关的内网接口192.168.4.1:

[root@svr5 ~]# route -n | grep UG

0.0.0.0         192.168.4.1     0.0.0.0         UG    0      0        0 eth0

网关gw1上开启路由转发:

[root@gw1 ~]# vim  /etc/sysctl.conf

net.ipv4.ip_forward = 1

[root@gw1 ~]# sysctl -p

net.ipv4.ip_forward = 1

.. ..

  • 步骤

实现此案例需要按照如下步骤进行。

步骤一:搭建一套基于“局域网-Linux网关-互联网”的案例环境

沿用练习一的环境,稍作调整。

停用虚拟机svr5、gw1、pc120上的iptables服务,清空防火墙规则:

[root@gw1 ~]# service iptables stop

iptables:将链设置为政策 ACCEPT:filter                    [确定]

iptables:清除防火墙规则:                                 [确定]

iptables:正在卸载模块:                                   [确定]

去掉外网测试机pc120的路由设置:

[root@pc120 ~]# route del default gw 174.16.16.1

[root@pc120 ~]# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

174.16.16.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

步骤二:在Linux网关上配置SNAT策略,实现局域网主机的共享上网

1)在网关启用SNAT转换之前,内网无法访问外网

比如从内网机svr5尝试访问外网机pc120时,因为pc120缺少到svr5所在私网网段的路由记录,所以访问会失败。这个与正常的互联网寻址情况是相吻合的,即私网地址不在互联网中路由。

使用elinks测试Web访问的情况如下:

[root@svr5 ~]# elinks --dump http://174.16.16.120

.. .. 

^C  //长时间无响应,按Ctrl+c键中止

[root@svr5 ~]#

2)在gw1上添加SNAT转换规则

添加的规则应该在nat表内,将来自局域网段192.168.4.0/24、将要从外网接口eth1出去的数据包,在路由选择之后将数据包的源IP地址修改为网关gw1的外网接口的IP地址174.16.16.120:

[root@gw1 ~]# iptables -t nat -A POSTROUTING -s 192.168.4.0/24 -o eth1 -j SNAT --to-source 174.16.16.1

 

[root@gw1 ~]# iptables -t nat -nL POSTROUTING

Chain POSTROUTING (policy ACCEPT)

target     prot opt source               destination         

SNAT       all  --  192.168.4.0/24       0.0.0.0/0           to:174.16.16.1

3)再次测试从内网访问外网

从内网机svr5上访问外网机pc120的网站,可以成功看到网页:

[root@svr5 ~]# elinks --dump http://174.16.16.120

   Test Page 120.

但是在检查pc120的Web访问日志时可以看到来访的客户机地址其实是网关gw1的外网地址,说明网关已经通过SNAT规则把Web请求包的源地址192.168.4.5改成了174.16.16.1,实现了局域网主机共享网关的公网IP地址上网:

[root@pc120 ~]# tail -1 /var/log/httpd/access_log

174.16.16.1 - - [19/May/2015:14:14:05 +0800] "GET / HTTP/1.1" 200 15 "-" "ELinks/0.12pre5 (textmode; Linux; -)"

步骤三:修改现有的SNAT策略,验证MASQUERAD伪装的有效性

1) 确认网关gw1上现有的SNAT策略

[root@gw1 ~]# iptables -t nat -nL POSTROUTING

Chain POSTROUTING (policy ACCEPT)

target     prot opt source               destination         

SNAT       all  --  192.168.4.0/24       0.0.0.0/0           to:174.16.16.1

2) 将网关gw1上的SNAT策略替换为MASQUERADE伪装策略

可以删除原策略,重新设置新策略,匹配条件与SNAT差不多,但是处理方式修改为MASQUERADE即可:

[root@gw1 ~]# iptables -t nat -D POSTROUTING 1

[root@gw1 ~]# iptables -t nat -A POSTROUTING -s 192.168.4.0/24 -o eth1 -j MASQUERADE

 

[root@gw1 ~]# iptables -t nat -nL POSTROUTING

Chain POSTROUTING (policy ACCEPT)

target     prot opt source               destination

MASQUERADE  all  --  192.168.4.0/24       0.0.0.0/0

3)再次测试从内网访问外网

从内网机svr5上访问外网机pc120的网站,还是可以成功看到网页:

[root@svr5 ~]# elinks --dump http://174.16.16.120

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值