LINUX.ORG.RU
ФорумAdmin

Проброс портов

 ,


0

1

Имеется сервер с белым ip, в локалке есть комп, к которому требуется подключиться по rdp (порт 3389) с внешки. Т.е. чтобы юзер указывал [белый ip сервера]:[порт] и подключался, где «порт» - любой свободный порт, например 33890. 172.16.Х.Х:3389 = Х.Х.Х.Х:33890

Гуглил, и не нашел готового решения, чтобы порт с одного компа смотрел в другой порт другого.

Пробовал такие вариации:

iptables -t nat -A PREROUTING -p tcp -d [лок. ip компа] --dport 3389 -j DNAT --to-destination [белый ip сервера]

iptables -A FORWARD -i eth0 -p tcp -d [белый ip сервера] --dport 33890 -j ACCEPT

-A PREROUTING -p tcp -m tcp -i eth0 --dport 33890 -j DNAT --to-destination локальныйIPадрес:3389

где eth0 интерфейс в интернеты.

King_Carlo ★★★★★
()

Тоесть схема такая:
Комп -> Роутер -(NAT)-> Сервер?

iptables -A PREROUTING -i [lan_interface] -p tcp --dport 33890 -j DNAT --to-destination [server_ip]:3389
Если доступ в инет с компа(forwarding и SNAT) настроены, то должно работать.

Deleted
()

в 1 строчке поменяй местами ип. во 2 строчке вместо внешгего ип укажи локальный.

voltmod ★★
()

1. подмена адреса в нате прероутингом

2. пропустить транзит на порт в форварде

3. в форварде включить поддержку установленных соединений

4. назначить терминальнику гейтом данный сервант

для неособоодаренных - rinetd

vxzvxz ★★★
()

Спасибо за советы, прописал, но все еще не работает. РДП клиент уже не сразу выдает ошибку, а задумывается, значит я на правильном пути.

Я прописал вот эти команды:

iptables -t nat -A PREROUTING -p tcp -i [интерфейс с белым ip] --dport 33890 -j DNAT --to-destination [local ip компа]:3389

т.е все что приходит на интерфейс с белым ип на порт 33890 перенаправляется в на порт 3389 компа в локалке. И что такое -m tcp? Тут рекомендовали его указывать, но я не нашел внятного описания этому ключу. Я прописывал команду и с ним и без него, но результата не добился.

iptables -A FORWARD -i [интерфейс с белым ip] -p tcp -d [local ip компа] --dport 33890 -j ACCEPT Пропускаем через белый ip все что идет с компа из локалки на порт 33890. Я правильно написал и расшифровал компанды? Если да, то чего еще не хватает?

DimentyTs
() автор топика
Ответ на: комментарий от anonymous

Менял. Не коннектится.

Вот что ввожу.

iptables -t nat -A PREROUTING -p tcp -m tcp -i [интерфейс с белым ip] --dport 33890 -j DNAT --to-destination [local ip компа]:3389

iptables -A FORWARD -i [интерфейс с белым ip] -p tcp -m tcp -d [local ip компа] --dport 3389 -j ACCEPT

Я даже пробовал без переназнаения портов делать, тоже не заходит

iptables -t nat -A PREROUTING -p tcp -m tcp -i [интерфейс с белым ip] --dport 3389 -j DNAT --to-destination [local ip компа]

DimentyTs
() автор топика
Ответ на: комментарий от DimentyTs

Если никаких доп. запрещающих правил нет, то

iptables -t nat -A PREROUTING -p tcp -i [интерфейс с белым ip] --dport 33890 -j DNAT --to-destination [local ip компа]:3389
iptables -A FORWARD -i [интерфейс с белым ip] -p tcp -d [local ip компа] --dport 3389 -j ACCEPT
рабочий вариант.
Могу предположить что на самой винде fw не пускает. В кач-ве теста попробуйте замаскарадить адрес
 iptables -t nat -A POSTROUTING -p tcp -d [local ip компа] --dport 3389 -j MASQUERADE

anc ★★★★★
()
Ответ на: комментарий от DimentyTs

Разбирайтесь с виндой, кто там не пускал :)

anc ★★★★★
()

Если лениво разбираться с iptables , попробуйте rinetd

Belen ★★
()

Гуглил, и не нашел готового решения, чтобы порт с одного компа смотрел в другой порт другого.

это странно

iptables -t nat -A PREROUTING -p tcp -d [лок. ip компа] --dport 3389 -j DNAT --to-destination [белый ip сервера]
iptables -A FORWARD -i eth0 -p tcp -d [белый ip сервера] --dport 33890 -j ACCEPT

а вот это еще более странно. У тебя адреса перепутаны. Всё задом наперед. Ненужный -i в форварде и левый какой-то порт. Бери отсюда готовый пример и правь под себя.

targitaj ★★★★★
()
Последнее исправление: targitaj (всего исправлений: 1)

Через Сеть ты обращаешься на паблик адрес своего гейта. Это который «белый ip». Значит, в tcp пакете дестинейшен будет стоять паблик адрес твоего гейта. Ну и порт 3389, в данном случае. Гейт c пришедшим из Сети пакетом может сделать несколько действий. Принять для работы локальных процессов гейта. За это отвечает INPUT. Прокинуть куда-либо дальше. За это отвечает FORWARD. Отбросить, дропнуть. Тебе надо чтобы твой гейт пробросил пакет к машине, которая в локальной сети за твоим гейтом. Значит, тебе надо FORWARD. Но, при этом, адресное пространство локальной сети не маршрутизируется в Сети, а адреса Сети неизвестны твоей локальной сети. Поэтому тебе надо сделать DNAT. В этом случае тебе надо применить PREROUTING, в котором ты отфильтруешь нужный тебе пакет по адресу дестинейшен, которым является паблик адрес гейта, и в отфильтрованном пакете ты заменишь паблик адрес в дестинейшене на адрес в локалке. Соответсвенно, система примет решение сделать FORWARD, который тебе надо разрешить, отфильровав, например, по дестинейшен адресу, который УЖЕ АДРЕС В ЛОКАЛКЕ. Пакет доходит до целевой машины, принимается, если принимается, и выдаётся ответный пакет, который идёт в Сеть через известный этой машине шлюза по-умолчанию. По идее, это тот же гейт. И вот здесь тебе надо не забыть разрешить обратный трафик.

Поэтому

iptables -t nat -A PREROUTING -p tcp -d [паблик адрес гейта] --dport 3389 -j DNAT --to-destination [адрес в локалке]:3389
iptables -A FORWARD -p tcp -d [адрес в локалке] --dport 3389 -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

targitaj ★★★★★
()
Последнее исправление: targitaj (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.