iptables - 将端口上的出站流量重定向到 127.0.0.1 上的入站流量

Gol*_*wby 5 security iptables redirect

有没有办法将设置为离开服务器的流量重定向到另一个 IP,返回到 localhost 上的服务器(最好好像它来自原始目的地)?

我基本上希望能够设置我自己的软件,该软件侦听端口 80,并接收发送到 1.2.3.4 的流量。

所以作为一些代码的例子。这是服务器:

my $server = IO::Socket::INET->new(

    LocalAddr => '127.0.0.1',
    LocalPort => '80',
    Listen => 128,

);
Run Code Online (Sandbox Code Playgroud)

这将接收来自以下客户端的流量:

my $client = IO::Socket::INET->new(

    PeerAddr => 'google.com',
    PeerPort => '80',

)
Run Code Online (Sandbox Code Playgroud)

因此,与其让客户端连接到 google.com,不如连接到我在 localhost 上监听同一台服务器的服务器。

我的目的是使用它来捕获连接到远程主机的恶意软件。

我并不特别需要将流量重定向到 127.0.0.1,但需要将其重定向到同一台机器可以侦听的 IP。

编辑:我尝试了以下方法,但不起作用--

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:80
iptables -t nat -A POSTROUTING -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)

dmo*_*ati 6

您想使用 iptables REDIRECT 目标。

iptables -t nat -A OUTPUT -p tcp -d 1.2.3.4 --dport 80 -j REDIRECT
Run Code Online (Sandbox Code Playgroud)

iptables 手册页为 REDIRECT 指定了一个选项,允许您更改端口。

该选项是--to-ports.