Войти

Показать полную графическую версию : iptables перенаправление всего трафика


root221
10-11-2021, 20:02
Подскажите пожалуйста, какое нужно правило указать на роутере с Openwrt который будет принимать запросы, чтоб работало не только с тем IP который прописан в --to-destination х.х.х.х но и с другими тоже.

вот запросы

на первом роутере

iptables -t nat -A PREROUTING -p udp -s 192.168.1.10 -j DNAT --to-destination х.х.х.х


вот на втором который видит что обращаюсь с х.х.х.х и перенаправляет меня на у.у.у.у

iptables -t nat -A PREROUTING -p udp -s х.х.х.х -j DNAT --to-destination у.у.у.у

Срабатывает если я с первого роутера обращаюсь на IP у.у.у.у, а нужно чтоб обрабатывались любые другие IP к которым я обращаюсь.

Напишите пожалуйста, какие нужно правила прописать на втором роутере.

shisik
10-11-2021, 23:49
чтоб работало не только с тем IP который прописан в --to-destination х.х.х.х но и с другими тоже. »

Может просто не указывать to-destination?

root221
11-11-2021, 00:10
shisik, так вообще молчит

shisik, Похоже вообще не там копаю, FORWARD нужен скорее всего, вопрос как правильно правило написать на первом роутере и на втором.

Вот, второму роутеру которому пересылается запрос прописал iptables -A FORWARD -j ACCEPT, теперь думаю, какое правило нужно прописать на первом роутере.

shisik
11-11-2021, 01:04
Это не поможет? https://unix.stackexchange.com/questions/258457/using-iptables-to-redirect-all-traffic-to-local-webserver

root221
11-11-2021, 01:37
shisik,
Как я понял, там тоже самое что делаю я

iptables -t nat -A PREROUTING -p udp -s х.х.х.х -j DNAT --to-destination 0/0 так тоже не работает, не знает роутер какой ему адрес обрабатывать, видимо первый роутер этот адрес и не передаёт что-ли

iptables -t nat -A PREROUTING -p udp -s х.х.х.х -d 0/0 -j DNAT так тоже не хочет.

там --src у меня это -s
там --dst у меня это -d

Похоже iptables не умеет то что я хочу.

shisik
11-11-2021, 16:16
Похоже iptables не умеет то что я хочу. »

Это вряд ли.

NickM
11-11-2021, 17:08
root221, т.е. у Вас два роутера, которые стоят друг за другом, и Вы хотите перенаправить весь UDP трафик с конкретного клиента на конкретный адрес?

Можете включить логгирование и проверить, с каким IP приходит запрос на второй роутер, полагаю там окажется: -s 192.168.1.10 »

Также не совсем понятно, через какой интерфейс у Вас уходят пакеты, возможно, что потребуется настроить и FORWARD.

root221
11-11-2021, 20:56
Нет, есть сеть 192.168.1.0/24 в которой находится непосредственно компьютер 192.168.1.10 с которого будут запросы.

Первый роутер получает адрес от третьего роутера WAN 10.0.0.100

Второй роутер через который я хочу подключаться так же получает адрес WAN 10.0.5.130 от третьего роутера, только подсеть другая.

Все роутеры видят друг друга.

По сути я пишу на первом роутере команду iptables -t nat -A PREROUTING -p udp -s 192.168.1.10 -j DNAT --to-destination 10.0.5.130 и весь UDP трафик с моего компьютера IP 192.168.1.10 посылается на IP 10.0.5.130

На втором роутере с IP 10.0.5.130 я пишу iptables -t nat -A PREROUTING -p udp -s 10.0.0.100 -j DNAT --to-destination СЕРВЕР:ПОРТ это уже конечный сервер к которому подключаюсь.

То есть чтоб подключиться к другому серверу мне приходится вручную менять на втором роутере СЕРВЕР:ПОРТ и тогда подключается куда нужно, но таких серверов может быть 100500, как сделать так чтоб я ввёл IP в консоли игры 123.456.789.10:27015 и второй роутер понял что я обращаюсь к 123.456.789.10:27015 и подключился.

Справка:

192.168.1.10 - компьютер подключен к первому роутеру на нём игра с консолью в которой пишу connect СЕРВЕР:ПОРТ

10.0.0.100 и 10.0.5.130 это ip WAN на роутерах 1 и 2

root221
11-11-2021, 21:21
Есть ещё проблемка, ввожу в консоли любой вообще какой угодно адрес ИП:PORT и все равно подключает только к --to-destination СЕРВЕР:ПОРТ который указан на втором роутере.

NickM, Вот если бы второй роутер находился с первым в одной подсети то проблем бы не было, но у них у обоих маска 0/24, как в такой ситуации настроить FORWARD можно конечно VPN поднять но это уже другая история, хочется через iptables настроить если он так умеет.

shisik
12-11-2021, 00:07
Я понял. То есть есть 2 локальные сети, подключенные к общему (внешнему) роутеру. И нужно соединить произвольный ПК в одной сети с произвольным сервером в другой. Примерно как здесь https://serverfault.com/questions/959288/iptables-bridge-routing-between-two-independent-lans-and-router

root221
12-11-2021, 06:56
shisik, ну почитал, никак не могу сформулировать правила для первого роутера и для второго.

Вообще должно получиться так

Схема должна получиться такая
КОМПЬЮТЕР с ИП 192.168.1.10 > connect x.x.x.x:27015 > Роутер первый к которому подключен компьютер, видит что с компьютера поступил запрос на x.x.x.x:27015, полученный запрос перенаправляет на > второй роутер у которого IP 10.0.5.130 обрабатывает и < возвращает ответ компьютеру, если сервер ответил подключаемся, сервер к которому буду стучаться находится в интернете, интернет видит только второй роутер.

shisik
12-11-2021, 13:17
сервер к которому буду стучаться находится в интернете, интернет видит только второй роутер »

В смысле, в интернете? И у него нет внешнего IP? Тогда остаётся только пробросить его порт наружу, но он будет такой один. Ну то есть вариант, что в удалённой локальной сети будет несколько серверов и вы сможете к любому из них подключиться, исключается. Ну или поднимайте VPN, чтоб все серверы и клиенты были в одной сети.

Вот если бы был доступ ко всем промежуточным узлам между локалками, тогда наверно можно было бы настроить. А так нет.

root221
12-11-2021, 16:13
shisik, получается нужно каждый раз менять на втором роутере правило -j DNAT --to-destination IP:PORT, по-другому работать не будет ?

shisik
14-11-2021, 00:37
Ну это обычная проброска порта на ПК, находящийся за NAT. Вообще обычно это делает я иначе. Если игровой сервер поднимается за NAT, то в роутере прописывается направление трафика на соответствующий порт (27015) на этот ПК в локалке. Клиенты же, независимо от того, как они подключены к интернету, просто подключаются по внешнему IP роутера, за которым находится сервер. Умеет это любой бытовой роутер.




© OSzone.net 2001-2012