2022-11-15 · 9분
网络学习 2 — DNS、DHCP 与 DMVPN
实操:用 Debian 搭建 DNS(bind9)和 DHCP 服务器,再用 mGRE/DMVPN 和 NHRP 组建中心-分支网络(关闭 EIGRP 水平分割),最后经 FTP 通过路由器 CA 签发 SSL 证书。
2022-01-27 · 5분
这篇文章发布已超过两年,内容可能已过时。
从内部网络往外走时,把内部 IP 地址转换成另一个 IP 再出去。
① 静态 NAT:预先把源和目的的 IP 映射固定下来的 NAT
② 动态 NAT:源和目的都不预先确定的 NAT
是因为 IPv4 枯竭问题和私有网。 目前用于互联网地址的 IPv4 大约能分配 42 亿个地址。但这远不及全球的 IP 需求,越往后 IP 枯竭问题就越被提起。为解决这个问题出现了 IPv6,用它能一举解决 IP 枯竭问题,但似乎因成本问题一直没有替换。最关键的还是因为私有网 - 公有网的概念。
在家里或公司上网时,会从 ISP 处获得一个全球唯一的公网 IP。实际的 PC 各自持有私有 IP,连接外部网即互联网时,通过路由器的 NAT 技术把各私有 IP 转换成公网 IP。也就是说,一份 IP 被多台共享使用。
IANA(Internet Assigned Numbers Authority)预留了以下 IP 地址块用作私有 IP 地址。
⊙ 10.0.0.0 ~ 10.255.255.255.255
⊙ 172.16.0.0 ~ 172.31.255.255.255
⊙ 192.168.0.0 ~ 192.168.255.255
这些是 ISP 为识别互联网用户的本地网络而提供的公网 IP 地址。
⊙ 0.0.0.0 ~ 127.255.255.255
⊙ 128.0.0.0 ~ 191.255.255.255
⊙ 192.0.0.0 ~ 233.255.255.255
⊙ 224.0.0.0 ~ 239.255.255.255
⊙ 240.0.0.0 ~ 255.255.255.255
私有网向外发包时,路由器会把私有 IP 换成公网 IP 再发,因此对响应包会查询转换记录再交回原主机。但从外部只能把目的地址指定到路由器为止,所以运行一个外部无法访问的私有网在安全上也很出色。
拓扑

NAT Static
给 PC0 ~ PC2 填入 192.168.10.1 ~ 192.168.10.3,然后在路由器上开始配置。
Router(config)#int g0/0
Router(config-if)#no shut
Router(config-if)#ip add 192.168.10.254 255.255.255.0
Router(config-if)#ip nat inside
Router(config-if)#exit
Router(config)#int se0/0/0
Router(config-if)#no shut
Router(config-if)#ip add 200.1.1.254 255.255.255.0
Router(config-if)#ip nat outside
在 Router0 上给 Gig0/0 赋 IP(gateway)并输入 ip nat inside。给 Se0/0/0 输入 IP 和 ip nat outside。由于 Gig0/0 是从内往外走的 IP,所以写 inside。出去的地方当然写 outside。
Router(config)#ip nat inside source static 192.168.10.1 200.1.1.1
Router(config)#ip nat inside source static 192.168.10.2 200.1.1.2
Router(config)#ip nat inside source static 192.168.10.3 200.1.1.3
按内部 IP(192.168.10.1)→ 外部 IP(200.1.1.1)这样做映射。
Router(config)#do sh ip nat trans
Pro Inside global Inside local Outside local Outside global
--- 200.1.1.1 192.168.10.1 --- ---
--- 200.1.1.2 192.168.10.2 --- ---
--- 200.1.1.3 192.168.10.3 --- ---
用 [do] sh ip nat trans 可以查看。接着只给 Router1 分配 IP。
Router(config)#int se0/0/1
Router(config-if)#ip add 200.1.1.253 255.255.255.0
从 PC 向 Router1 打个 ping 吧。
NAT: s=192.168.10.1->200.1.1.1, d=200.1.1.253 [42]
NAT*: s=200.1.1.253, d=200.1.1.1->192.168.10.1 [26]
可以看到正常转换并送达。[ 命令:在路由器上 debug ip nat ]
拓扑

NAT dynamic
和静态 NAT 时一样,在 Gig0/0 输入 inside、se0/0/0 输入 outside。然后配置 access list(ACL)即可。
Router(config)#access-list 10 permit 192.168.10.0 0.0.0.255
access-list [列表号] permit [私有 IP 网络地址] [通配符掩码]
通配符掩码就是把普通 netmask 反着写。255.255.255.0 → 0.0.0.255 这样两者作用相同,但子网掩码是为了分离网络和主机地址而设计,只能用连续的比特;而通配符掩码即使不连续也能用,这是它的特点。
access-list 是访问路由器的私有 IP 列表。从 192.168.10.0 网段开始,对持有该网络地址的所有私有 IP 动态分配公网 IP,用完后回收再用于别处。这样即使有新 PC 进来也会自动分配,是非常方便的功能。
Router(config)#ip nat pool Sunrin1 200.1.1.1 200.1.1.10 netmask 255.255.255.0
Router(config)#ip nat inside source list 10 pool Sunrin1
创建从 200.1.1.1 到 200.1.1.10 的公网 IP 池,并把它附加到将要使用它的列表 10 上。
Router(config)#do sh ip nat trans
Pro Inside global Inside local Outside local Outside global
icmp 200.1.1.1:5 192.168.10.1:5 200.1.1.253:5 200.1.1.253:5
icmp 200.1.1.1:6 192.168.10.1:6 200.1.1.253:6 200.1.1.253:6
icmp 200.1.1.1:7 192.168.10.1:7 200.1.1.253:7 200.1.1.253:7
从 PC 发 ping 时,可以确认已分配了 IP。
拓扑

PAT
和动态 NAT 一样,配置 access list(ACL)。
Router(config)#access-list 10 permit 192.168.10.0 0.0.0.255
接着配置 PAT。
Router(config)#ip nat inside source list 10 interface se0/0/0 overload
Router#sh ip nat trans
Pro Inside global Inside local Outside local Outside global
icmp 200.1.1.254:36 192.168.10.1:36 200.1.1.253:36 200.1.1.253:36
icmp 200.1.1.254:37 192.168.10.1:37 200.1.1.253:37 200.1.1.253:37
icmp 200.1.1.254:38 192.168.10.1:38 200.1.1.253:38 200.1.1.253:38
icmp 200.1.1.254:39 192.168.10.1:39 200.1.1.253:39 200.1.1.253:39
配置 PAT 时把 192.168.10.0 私有网络挂到了路由器接口上,所以出去时 Inside global 会带上接口地址 200.1.1.253。而且出去再回来时,路由器会看端口号确认原始源在哪里再转交。端口号有足够多。
原文(韩语): tistory — 发布于 2022-01-27,已迁移至本博客。本翻译由 AI 协助完成。
…