Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.
Модераторы: SLEDopit , Модераторы разделов
baki
Сообщения: 12
ОС: Linux Mandriva 2007
Сообщение
baki » 28.07.2009 10:38
Здравствуйте. У меня следующая проблема: имеется linux-роутер (host1), необходимо все пакеты, приходящие на tcp порт 8880 этого роутера перенаправить на другой адрес в интернете (host2) на порт 80. Почитал маны, погуглил, нашёл что необходимо добавить два правила в iptables:
Код: Выделить всё
iptables -t nat -A PREROUTING -i vlan1 -d host1 -p tcp --dport 8880 -j DNAT --to-destination host2:80
iptables -t nat -A POSTROUTING -o vlan1 -s host2 -p tcp --sport 80 -j SNAT --to-source host1:8880
Однако после добавления этих правил в роутер перенаправление трафика так и не заработало. Подскажите пожалуйста, в чём я ошибся (какие нужны правила)?
ford1813
Сообщения: 383
ОС: Slackware
Сообщение
ford1813 » 28.07.2009 10:41
baki писал(а): ↑ 28.07.2009 10:38
Здравствуйте. У меня следующая проблема: имеется linux-роутер (host1), необходимо все пакеты, приходящие на tcp порт 8880 этого роутера перенаправить на другой адрес в интернете (host2) на порт 80. Почитал маны, погуглил, нашёл что необходимо добавить два правила в iptables:
Код: Выделить всё
iptables -t nat -A PREROUTING -i vlan1 -d host1 -p tcp --dport 8880 -j DNAT --to-destination host2:80
iptables -t nat -A POSTROUTING -o vlan1 -s host2 -p tcp --sport 80 -j SNAT --to-source host1:8880
Однако после добавления этих правил в роутер перенаправление трафика так и не заработало. Подскажите пожалуйста, в чём я ошибся (какие нужны правила)?
iptables-save -c для начала посмотрите. Порядок и счетчики.
baki
Сообщения: 12
ОС: Linux Mandriva 2007
Сообщение
baki » 28.07.2009 11:10
Этой утилиты нету, установить на роутер несколько проблематично. Эти правила верные и должны работать?
ford1813
Сообщения: 383
ОС: Slackware
Сообщение
ford1813 » 28.07.2009 11:18
baki писал(а): ↑ 28.07.2009 11:10
Этой утилиты нету, установить на роутер несколько проблематично. Эти правила верные и должны работать?
iptables -L -nv -t nat
Тогда смори. Должны они работать или нет , видно будет только по порядку правил.
baki
Сообщения: 12
ОС: Linux Mandriva 2007
Сообщение
baki » 28.07.2009 11:38
Код: Выделить всё
Chain PREROUTING (policy ACCEPT 84166 packets, 7579K bytes)
pkts bytes target prot opt in out source destination
46313 1918K VSERVER all -- * * 0.0.0.0/0 193.169.32.254
0 0 NETMAP udp -- * * 0.0.0.0/0 193.169.32.254 udp spt:6112 192.168.1.0/24
0 0 DNAT tcp -- vlan1 * 0.0.0.0/0 193.169.32.254 tcp dpt:8880 to:77.88.21.8:80
Chain POSTROUTING (policy ACCEPT 52005 packets, 2372K bytes)
pkts bytes target prot opt in out source destination
0 0 NETMAP udp -- * * 192.168.1.0/24 0.0.0.0/0 udp dpt:6112 193.169.32.254/32
9999 724K MASQUERADE all -- * vlan1 !193.169.32.254 0.0.0.0/0
524 34516 MASQUERADE all -- * br0 192.168.1.0/24 192.168.1.0/24
0 0 SNAT tcp -- * vlan1 77.88.21.8 0.0.0.0/0 tcp spt:80 to:193.169.32.254:8880
Chain OUTPUT (policy ACCEPT 12235 packets, 738K bytes)
pkts bytes target prot opt in out source destination
Chain VSERVER (1 references)
pkts bytes target prot opt in out source destination
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25714 to:192.168.1.52:25714
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:25714 to:192.168.1.52:25714
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:5191 to:192.168.1.45:5191
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:14223 to:192.168.1.25:14223
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:14223 to:192.168.1.25:14223
2 100 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 to:192.168.1.25:443
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:443 to:192.168.1.25:443
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:37674 to:192.168.1.25:37674
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:37674 to:192.168.1.25:37674
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:37675 to:192.168.1.25:37675
51 2360 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:58924 to:192.168.1.235:58924
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:18523 to:82.207.3.29:18523
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:18523 to:82.207.3.29:18523
18 948 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:58924 to:192.168.1.235:58924
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:25305 to:192.168.1.25:25305
32 1528 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 to:192.168.1.11:21
734 35224 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3128 to:192.168.1.11:3128
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:3128 to:192.168.1.11:3128
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 to:192.168.1.11:22
1000 77486 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:14567 to:192.168.1.11:14567
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:23000 to:192.168.1.11:23000
27097 985K DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:23000 to:192.168.1.11:23000
11643 577K DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 to:192.168.1.11:80
8 384 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:14667 to:192.168.1.11:14667
1 112 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:14569 to:192.168.1.11:14569
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:5222 to:192.168.1.11:5222
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:5222 to:192.168.1.11:5222
1 60 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:5269 to:192.168.1.11:5269
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:5223 to:192.168.1.11:5223
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:5223 to:192.168.1.11:5223
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:9090 to:192.168.1.11:9090
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:9090 to:192.168.1.11:9090
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:5500 to:192.168.1.25:5500
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:5500 to:192.168.1.25:5500
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:29186 to:192.168.1.25:29186
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:27155 to:192.168.1.53:27155
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:10000 to:192.168.1.11:10000
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:59000 to:192.168.1.11:5900
22 4576 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:8767 to:192.168.1.11:8767
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:2222 to:192.168.1.11:22
274 16440 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:51234 to:192.168.1.11:51234
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:51234 to:192.168.1.11:51234
5430 216K DNAT all -- * * 0.0.0.0/0 0.0.0.0/0 to:192.168.1.25
danger08
Сообщения: 715
ОС: Linux (CentOS, Ubuntu)
Сообщение
danger08 » 28.07.2009 12:09
baki писал(а): ↑ 28.07.2009 10:38
Здравствуйте. У меня следующая проблема: имеется linux-роутер (host1), необходимо все пакеты, приходящие на tcp порт 8880 этого роутера перенаправить на другой адрес в интернете (host2) на порт 80. Почитал маны, погуглил, нашёл что необходимо добавить два правила в iptables:
Код: Выделить всё
iptables -t nat -A PREROUTING -i vlan1 -d host1 -p tcp --dport 8880 -j DNAT --to-destination host2:80
iptables -t nat -A POSTROUTING -o vlan1 -s host2 -p tcp --sport 80 -j SNAT --to-source host1:8880
Однако после добавления этих правил в роутер перенаправление трафика так и не заработало. Подскажите пожалуйста, в чём я ошибся (какие нужны правила)?
Если точно так, как вы описали:
Код: Выделить всё
iptables -t nat -A PREROUTING -i vlan1 -d host1 -p tcp --dport 8880 -j DNAT --to-destination host2:80
iptables -t nat -A POSTROUTING -o external-interface -j SNAT --to-source host1
iptables -t nat -A POSTROUTING -i external-interface -o vlan1 -s host2 -p tcp --sport 80 -j SNAT --to-source host1
iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A FORWARD -i vlan1 -o external-interface -d host2 -p tcp --dport 80 -j ACCEPT
При этом учитывайте, что IP-адреса на host1 надо ставить соотвественно интерфейса (host1 имеет несколько адресов).
Вообще, вопрос конечно: а есть ли необходимость перекидывать порты с роутера на удаленный хост? Может, проще роутинг настроить, и разрешить форвард на 80-й порт хоста host2 из локалки, находящейся за host1 ?
baki
Сообщения: 12
ОС: Linux Mandriva 2007
Сообщение
baki » 28.07.2009 12:15
Вы наверное не поняли. Задача перенаправлять пакеты не из локалки а из интернета. Какой-то пользователь из интернета хочет подключится на порт 8880, необходимо перенаправить пакет на другой сервер в интернете. Роутинг тут не поможет.
danger08
Сообщения: 715
ОС: Linux (CentOS, Ubuntu)
Сообщение
danger08 » 28.07.2009 12:21
baki писал(а): ↑ 28.07.2009 12:15
Вы наверное не поняли. Задача перенаправлять пакеты не из локалки а из интернета. Какой-то пользователь из интернета хочет подключится на порт 8880, необходимо перенаправить пакет на другой сервер в интернете. Роутинг тут не поможет.
значит, помогут те правила, которые я привел.
baki
Сообщения: 12
ОС: Linux Mandriva 2007
Сообщение
baki » 28.07.2009 13:01
Код: Выделить всё
iptables -t nat -A POSTROUTING -i external-interface -o vlan1 -s host2 -p tcp --sport 80 -j SNAT --to-source host1
данную строку он не принимает из-за -i external-interface (-i vlan1):
Код: Выделить всё
iptables v1.2.7a: Can't use -i with POSTROUTING
Поэтому заменил её на:
Код: Выделить всё
iptables -t nat -A POSTROUTING -o vlan1 -s host2 -p tcp --sport 80 -j SNAT --to-source host1
Остальные правила добавил, однако трафик по прежнему не проходит.
skeletor
Сообщения: 1224
Сообщение
skeletor » 28.07.2009 13:08
Используй утилиту redir. Она как раз делает то, что нужно: тупо перенаправляет (не так как iptables натит их, потом перенаправляет, ...).
baki
Сообщения: 12
ОС: Linux Mandriva 2007
Сообщение
baki » 28.07.2009 14:48
а для udp redir работает? Если нет, то существует-ли что-то подобное для udp?
skeletor
Сообщения: 1224
Сообщение
skeletor » 28.07.2009 15:02
Нет, она только для tcp. Для udp есть другая uredir (http://www.opennet.ru/prog/info/344.shtml)
baki
Сообщения: 12
ОС: Linux Mandriva 2007
Сообщение
baki » 28.07.2009 15:11
urefid очень старая и не устанавливается. Есть-ли альтернатива (всё-таки как-то организовать через iptables, или другая программа для перенаправления udp трафика)?
skor
Сообщения: 419
ОС: RTFM-OS v127.0.0.1
Сообщение
skor » 28.07.2009 15:53
BTW если переправлять надо HTTP трафик, то можно воспользоваться squid или apache/lighttpd/ngnix
baki
Сообщения: 12
ОС: Linux Mandriva 2007
Сообщение
baki » 28.07.2009 15:55
Есть-ли ещё какие-то варианты для перенаправления UDP трафика? И всё-же хотелось-бы разобраться почему не работает с iptables?
skor
Сообщения: 419
ОС: RTFM-OS v127.0.0.1
Сообщение
skor » 28.07.2009 16:09
А такие правила попробовать?
iptables -t nat -I PREROUTING -d host1 -p udp --dport port1 -j DNAT --to-destination host2:port2
iptables -t nat -I POSTROUTING -d host2 -p udp --dport port2 -j SNAT --to-source host1
iptables -t filter -I FORWARD -d host2 -j ACCEPT
iptables -t filter -I FORWARD -s host2 -j ACCEPT
iptables -t filter -I FORWARD -d host1 -j ACCEPT
iptables -t filter -I FORWARD -s host1 -j ACCEPT
PS: а что за UDP траффик? tcpdump`ом смотрели, что приходит? что уходит?
baki
Сообщения: 12
ОС: Linux Mandriva 2007
Сообщение
baki » 28.07.2009 16:23
Код: Выделить всё
iptables -t nat -I PREROUTING -d host1 -p udp --dport port1 -j DNAT --to-destination host2:port2
iptables -t nat -I POSTROUTING -d host2 -p udp --dport port2 -j SNAT --to-source host1
iptables -t filter -I FORWARD -d host2 -j ACCEPT
iptables -t filter -I FORWARD -s host2 -j ACCEPT
iptables -t filter -I FORWARD -d host1 -j ACCEPT
iptables -t filter -I FORWARD -s host1 -j ACCEPT
Опять-же эффекта 0.
ford1813
Сообщения: 383
ОС: Slackware
Сообщение
ford1813 » 28.07.2009 16:50
cat /proc/sys/net/ipv4/ip_forward
1
Случайно не нужен ? Или я того)
skor
Сообщения: 419
ОС: RTFM-OS v127.0.0.1
Сообщение
skor » 28.07.2009 17:02
Ну надеемся что форвардинг все же включен... иначе бы SNAT/DNAT вобоще не работал и это думаю заметили бы...
вот здесь
http://www.debian-administration.org/artic...ables_tcp_proxy в правилах еще фигурирует -t nat -A OUTPUT
Попробуйте добавить правило:
iptables -t nat -I OUTPUT -d host1 -p udp --dport port1 -j DNAT --to-destination host2:port2