iptables NAT 重定向

iptables NAT 重定向

我有一台接收系统日志流量的服务器。我的许多设备只能发送到默认的 udp/514 端口。我的系统日志服务器无法在小于 1024 的端口上运行,而是在 5000 上运行。我在系统上有一个 nat PREROUTING REDIRECT,它运行良好。

我确实有几个 Aruba 无线控制器,我想将它们定向到不同的端口。我试图将源地址为 10.5.5.0/24 的数据包重定向到端口 5008。以下是完整的配置。

*mangle
:PREROUTING ACCEPT [53851:21198923]
:INPUT ACCEPT [53851:21198923]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1227:8988526]
:POSTROUTING ACCEPT [1227:8988526]
COMMIT
# Completed on Thu Sep 30 14:52:43 2021
# Generated by iptables-save v1.8.4 on Thu Sep 30 14:52:43 2021
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -s 10.5.5.0/24 -p udp -m udp --dport 514 -j REDIRECT --to-ports 5008
-A PREROUTING -p udp -m udp --dport 514 -j REDIRECT --to-ports 5000
COMMIT
# Completed on Thu Sep 30 14:52:43 2021
# Generated by iptables-save v1.8.4 on Thu Sep 30 14:52:43 2021
*filter
:INPUT ACCEPT [53852:21199096]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1234:8990186]
-A INPUT -s 10.0.0.0/8 -p udp -m udp --dport 514 -j ACCEPT
COMMIT

重定向到 udp/5000 运行良好,但是一切正在重定向到 5000。来自 10.5.5.0/24 的 Aruba 流量无法推送到 udp/5008。

如果我发出命令: iptables -t nat -L -n -v --line-number 。它确认零字节命中第 1 行,所有内容命中第 2 行。

我认为顺序很重要,更具体的行应该放在通用行之前(如上所示)。我尝试将它们颠倒过来,但没有用。

UDP 上的 Syslog 是单向和无状态的,因此您会认为这是世界上最简单的 NAT。

有人做过这种配置吗?这都是现成的,我只是想将我收到的 Aruba 系统日志消息与所有其他消息区分开来。

谢谢!

答案1

将端口 514 重定向到 5000 并使其在本地机器上运行

如果您正在 syslog 服务器上创建 iptables 规则,请使用以下命令:

iptables -t nat -A OUTPUT -o lo -p tcp --dport 514 -j REDIRECT --to-port 5000

或者

iptables -A PREROUTING -t nat -i eth0<Incoming-interface> -p tcp --dport 514 -j REDIRECT --to-port 5000

将传入连接重定向到特定端口上的其他 IP 地址

如果你尝试将端口转发到另一个 IP,并且你的服务器(我称之为防火墙)接收 UDP/514 位于客户端和 Syslog 服务器后面,就像我的 github,你必须做iptables 端口转发使用树形设置:

简单示例场景:

 | client:10.5.5.0/24 | -->   | 10.5.5.1:enp0s8 firewall enp0s3:192.168.2.1 | --> | 192.168.2.2:enp0s3 Syslog |

1-启用 IP 转发

sudo sysctl -w net.ipv4.ip_forward=1

2- 对进入防火墙的流量进行预路由

sudo iptables -t nat -A PREROUTING -d 10.5.5.1 -i enp0s8  -p tcp --dport 514 -j DNAT --to-destination 192.168.2.2:5000 

3- POSTROUTING 用于将流量发送到 Syslog 服务器

sudo iptables -t nat -A POSTROUTING -o enp0s3 -p tcp --dport 514 -d 192.168.2.2 -j SNAT --to-source 192.168.2.1

相关内容