我正在尝试设置一个系统来执行 NAT 和其他 iptables 操作(如日志记录、防火墙、监控等)。ISP 提供动态 IP 地址,DSL 调制解调器执行 NAT。
我有以下“小型企业”配置:
192.168.1.1 |-----------|
----------------------| |
| SWITCH 1 |
192.168.1.2 | |
----------------------| |
| |
192.168.1.3 | |
----------------------| |
|-----------|
|
| 192.168.1.4
|
|--------------|
| Dual NIC |
| IPTABLES m/c | NAT
|--------------|
|
|
|192.168.2.2
|
|--------------| 192.168.2.1 |----------------|
| SWITCH 2 | ------------|DSL Modem NAT |
|--------------| |----------------|
我的目标是控制 192.168.1.x LAN 上每个节点可以做什么、记录条目等。IPTABLES 机器可以做的事情比 Iptables CLI 能做的多得多...我们需要一些到 libnetfilter_queue 库的 C 接口,因为我们需要做一些自定义监控和日志记录。
我没有静态公共 IP 地址。因此,我需要依赖 DSL 内置的 NAT。实际上,我最终会有两个串联的 NAT。一个通过 IPTables 进行 SNAT,源更改为 192.168.2.2。第二个是 DSL 调制解调器将执行的操作,将源 IP 从 192.168.2.2 更改为当时分配的公共 Internet IP。
我认为一定有更好的方法。那是什么?还是我完全偏离了主题?
答案1
您不需要依赖 DSL 调制解调器中的 NAT,您仍然可以在 Ubuntu 路由器盒上执行此操作,即使使用动态公共 IP 地址也是如此。
除非您对 iptables 规则集的安全性有信心,否则您不会想这样做。
有时 DSL 调制解调器/路由器没有关闭路由器 (NAT) 的选项,在这种情况下,您所做的一切是可以的。
是的,使用默认的接受策略并启用转发,
$ cat /proc/sys/net/ipv4/ip_forward
1
它和一条 POSTROUTING 规则一样简单(从您的评论中复制):
iptables -t nat -A POSTROUTING -o em2 -j SNAT --to 192.168.2.2