-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathforward.sh
More file actions
92 lines (76 loc) · 3.59 KB
/
forward.sh
File metadata and controls
92 lines (76 loc) · 3.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/bin/bash
# SS Port Forwarding Setup Script
# Пробрасывает порт через iptables на другой сервер
set -e
# Цвета
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
echo -e "${GREEN}╔════════════════════════════════════════╗${NC}"
echo -e "${GREEN}║ SS Port Forwarding Setup Script ║${NC}"
echo -e "${GREEN}╚════════════════════════════════════════╝${NC}"
echo
# Проверка root
if [[ $EUID -ne 0 ]]; then
echo -e "${RED}Запусти от root: sudo $0${NC}"
exit 1
fi
# Ввод данных
read -p "IP сервера назначения (куда пробрасывать): " DEST_IP
read -p "Порт для проброса [1234]: " PORT
PORT=${PORT:-1234}
read -p "Протокол (tcp/udp/both) [both]: " PROTO
PROTO=${PROTO:-both}
echo
echo -e "${YELLOW}Настройки:${NC}"
echo -e " Назначение: ${GREEN}${DEST_IP}:${PORT}${NC}"
echo -e " Протокол: ${GREEN}${PROTO}${NC}"
echo
read -p "Продолжить? (y/n): " CONFIRM
[[ $CONFIRM != "y" && $CONFIRM != "Y" ]] && exit 0
# Включение форвардинга
echo -e "\n${YELLOW}[1/4] Включаю IP forwarding...${NC}"
echo 1 > /proc/sys/net/ipv4/ip_forward
if ! grep -q "net.ipv4.ip_forward=1" /etc/sysctl.conf; then
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
fi
sysctl -p > /dev/null 2>&1
# Настройка iptables
echo -e "${YELLOW}[2/4] Настраиваю iptables...${NC}"
if [[ $PROTO == "tcp" || $PROTO == "both" ]]; then
iptables -t nat -A PREROUTING -p tcp --dport $PORT -j DNAT --to-destination ${DEST_IP}:${PORT}
echo -e " ${GREEN}✓${NC} TCP :${PORT} → ${DEST_IP}:${PORT}"
fi
if [[ $PROTO == "udp" || $PROTO == "both" ]]; then
iptables -t nat -A PREROUTING -p udp --dport $PORT -j DNAT --to-destination ${DEST_IP}:${PORT}
echo -e " ${GREEN}✓${NC} UDP :${PORT} → ${DEST_IP}:${PORT}"
fi
# MASQUERADE если ещё нет
if ! iptables -t nat -C POSTROUTING -j MASQUERADE 2>/dev/null; then
iptables -t nat -A POSTROUTING -j MASQUERADE
fi
# Сохранение правил
echo -e "${YELLOW}[3/4] Сохраняю правила...${NC}"
if command -v netfilter-persistent &> /dev/null; then
netfilter-persistent save > /dev/null 2>&1
echo -e " ${GREEN}✓${NC} Сохранено через netfilter-persistent"
else
apt-get update > /dev/null 2>&1
DEBIAN_FRONTEND=noninteractive apt-get install -y iptables-persistent > /dev/null 2>&1
netfilter-persistent save > /dev/null 2>&1
echo -e " ${GREEN}✓${NC} Установлен iptables-persistent и сохранено"
fi
# Готово
echo -e "${YELLOW}[4/4] Проверка...${NC}"
echo -e " ${GREEN}✓${NC} Форвардинг: $(cat /proc/sys/net/ipv4/ip_forward)"
echo
echo -e "${GREEN}╔════════════════════════════════════════╗${NC}"
echo -e "${GREEN}║ Готово! ║${NC}"
echo -e "${GREEN}╚════════════════════════════════════════╝${NC}"
echo
echo -e "Клиенты подключаются к ${GREEN}этот_сервер:${PORT}${NC}"
echo -e "Трафик идёт на ${GREEN}${DEST_IP}:${PORT}${NC}"
echo
echo -e "${YELLOW}Текущие NAT правила:${NC}"
iptables -t nat -L PREROUTING -n --line-numbers | grep -E "dpt:${PORT}|Chain"