我正在尝试使用两次 nat 和 dns_alg 来支持一个框架,并进行测量。
我有一个私人网络 192.168.0.0/24
该网络包含 www、dns、dhcp 等供自己使用。DNS、WWW 也用于全球访问。例如,我有 6 个分配给我的公共地址。
192.168.0.0/24 | ----router/NAT ||=--- 6ips-----isp-----bigger isp-----whatever.
我想要: - 将所有这些 IP 分配到单个路由器的外部网卡上,或者为它们设置别名,但我只有 1 个网卡。
-使用 natting,这样每当内部 dns 回复时,路由器就应该修改它以匹配全局地址(运行时选择不是静态的)。每当外部 dns 回复时,nat 应该再次将公共地址映射到一个私有地址,例如 192.168.0.32,然后它应该到达客户端。
- 使用源和目标网络地址转换,这样,内部地址似乎永远不会与外界通信,而是似乎只与其局域网通信。
我该如何继续 +
答案1
问题 1:一个 NIC 上有多个 IP 地址。
ip address add a.b.c.d1/mm brd + dev ${WAN_IFACE}
ip address add a.b.c.d2/mm brd + dev ${WAN_IFACE}
... and so on ...
abcd1、abcd2等等是给您的公网IP地址,/mm是给您的子网掩码。
问题2:双重 NAT
iptables -t nat -A PREROUTING -i ${WAN_IFACE} -p udp --dport 53 -j DNAT --to-destination ${internal_dns_ip}:53
iptables -A FORWARD -i ${WAN_IFACE} -o ${LAN_IFACE} -p udp --dport 53 -j ACCEPT
iptables -t nat -A POSTROUTING -o ${LAN_IFACE} -p udp --dport 53 -j SNAT --to-source ${router_lan_ip}
( and optionally for -p tcp, too )
但是你为什么要这么做呢???
编辑:为大型网络内的子网提供 NAT。
根据评论(见下文),问题 2 的答案并不合适。相反,一个简单的 SNAT 就足够了:
# Allow traffic from smaller LAN to bigger LAN
iptables -A FORWARD -i ${SMALLER_LAN_IFACE} -o ${BIGGER_LAN_IFACE} -j ACCEPT
# Allow established and related trafic bothways
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Perform Source NAT
iptables -t nat -A POSTROUTING -o ${BIGGER_LAN_IFACE} -j SNAT --to-source ${LOWER_IP}-${HIGHER_IP}
如果您信任较小的 LAN 和较大的 LAN,则可以使用单个 FORWARD 规则:
iptables -A FORWARD -j ACCEPT