- 前言
- 读者对象
- 如何阅读本书
- 勘误和支持
- 致谢
- 第 1 篇 高性能网站构建
- 第 1 章 深入理解 DNS 原理与部署 BIND
- 第 2 章 全面解析 CDN 技术与实战
- 第 3 章 负载均衡和高可用技术
- 第 4 章 配置及调优 LVS
- 第 5 章 使用 HAProxy 实现 4 层和 7 层代理
- 第 6 章 实践 Nginx 的反向代理和负载均衡
- 第 7 章 部署商业负载均衡设备 NetScaler
- 第 8 章 配置高性能网站
- 第 9 章 优化 MySQL 数据库
- 第 2 篇 服务器安全和监控
- 第 10 章 构建企业级虚拟专用网络
- 第 11 章 实施 Linux 系统安全策略与入侵检测
- 第 12 章 实践 Zabbix 自定义模板技术
- 第 13 章 服务器硬件监控
- 第 3 篇 网络分析技术
- 第 14 章 使用 tcpdump 与 Wireshark 解决疑难问题
- 第 15 章 分析与解决运营商劫持问题
- 第 16 章 深度实践 iptables
- 第 4 篇 运维自动化和游戏运维
- 第 17 章 使用 Kickstart 完成批量系统安装
- 第 18 章 利用 Perl 编程实施高效运维
- 第 19 章 精通 Ansible 实现运维自动化
- 第 20 章 掌握端游运维的技术要点
- 第 21 章 精通手游运维的架构体系
最佳实践 83:网络地址转换在实践中的案例
在实践中,iptables 除了可用于网络安全之外,还经常用于网络地址转换(NAT)的环境中。网络地址转换分为源地址转换(源地址 NAT)和目的地址转换(目的地址 NAT)。
源地址 NAT
源地址 NAT,主要用于图 16-12 所示的网络示意图中无外网 IP 的服务器(Server B)需要访问互联网的场景下。
在图 16-12 中,Server B 没有外网 IP,如其需要访问互联网,则需要进行以下设置。
图 16-12 网络地址转换的网络示意图
(1)在服务器 Server B 上,指定其网络的默认网关是 10.128.70.112(即 Server A 的内网地址)。
(2)在服务器 Server A 上,启用路由功能。启用的方法是执行以下命令:
sysctl -w net.ipv4.ip_forward=1
(3)在 Server A 上,设置 iptables 规则如下:
iptables -t filter -A FORWARD -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to x.y.z.173 #eth0 是 Server A 的外网网卡,x.y.z.173 是 Server A 的外网 IP
经过以上 3 步骤设置后,Server B 将会通过 Server A 访问互联网。此时,在互联网上看到的源地址是 Server A 的外网 IP。
以 Server B 访问 8.8.8.8 的 DNS 服务为例的数据流程如下。
(1)在 Server B 上,网络层数据包格式为:目的地址 IP 8.8.8.8,源地址 IP10.128.70.111。
(2)在 Server A 上经过源地址 NAT 后的网络层数据包格式为:目的地址 IP 8.8.8.8,源地址 IP x.y.z.173。该转换条目被记录在/proc/net/nf_conntrack 中。
(3)8.8.8.8 的响应(源地址 IP 8.8.8.8,目的地址 IP x.y.z.173)到达 Server A 后,Server A 改写网络层数据包为源地址 IP 8.8.8.8,目的地址 IP 10.128.70.111。
这就是源地址 NAT 的工作过程。
目的地址 NAT
目的地址 NAT 用于如图 16-12 所示的网络示意图中,外部用户直接访问无外网 IP 的服务器(Server B)提供的服务时。例如,外部用户希望通过互联网访问到 Server B 上的 Oracle 数据库(监听端口是 TCP 1521)时,可以使用如下的命令在 Server A 上进行目的地址 NAT 设置:
iptables -t nat -A PREROUTING -d x.y.z.173 -p tcp -m tcp --dport 1521 -j DNAT --to-destination 10.128.70.111:1521 #改写目的地址为 10.128.70.111,目的端口为 1521 iptables -t nat -A POSTROUTING -d 10.128.70.111 -p tcp -m tcp --dport 1521 -j SNAT --to-source 10.128.70.112 #改写源地址 IP 为 Server A 的内网 IP,此时在 Server B 上相对于是和 Server A 在进行通信
网络地址转换是运维人员在工作中经常用到的技术,需要非常熟悉源地址转换和目的地址转换这 2 种方案。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论