Понадобилось мне для работы сделать проксирование внешнего порта. Задача: TCP пакеты идущие от клиента на порт одного сервера(1.1.1.1) перенаправлять на тот же порт другого сервера (2.2.2.2) а затем ответ этого сервера отправлять клиенту как от 1.1.1.1 (к которому обращался клиент).
Родился такой скрипт:
#!/bin/sh
# TCP Proxy using IPTables
IPTABLES=/sbin/iptables
echo 1 > /proc/sys/net/ipv4/ip_forward
# Flush nat table
$IPTABLES -t nat -F
# tcpproxy LOCAL_IP LOCAL_PORT REMOTE_IP REMOTE_PORT
function tcpproxy {
$IPTABLES -t nat -A PREROUTING --dst $1 -p tcp --dport $2 -j DNAT --to-destination $3 : $4
$IPTABLES -t nat -A POSTROUTING --dst $3 -p tcp --dport $4 -j SNAT --to-source $1
$IPTABLES -t nat -A OUTPUT --dst $1 -p tcp --dport $2 -j DNAT --to-destination $3 : $4
}
Пример использования
tcpproxy 109.95.211.58 80 192.168.1.1 80
|