Назад | Перейти на главную страницу

сделать локальный демон только прослушивающим на другом интерфейсе (используя переадресацию портов iptables)?

У меня есть программа-демон, которая слушает 127.0.0.1:8000.
Мне нужно получить к нему доступ, когда я подключаюсь к своему ящику с помощью vpn.
поэтому я хочу, чтобы он тоже слушал интерфейс ppp0.

Я пробовал метод "ssh -L". это работает, но я не думаю, что это правильный способ сделать это, имея дополнительный процесс ssh, работающий в фоновом режиме.
Я попробовал метод "netcat". он выходит при закрытии соединения. так что это не правильный способ "слушать".

Я также пробовал несколько правил iptables. ни один из них не работал.
Я не перечисляю здесь все правила, которые я использовал.

iptables -A FORWARD -j ACCEPT
iptables -t nat -A PREROUTING -i ppp+ -p tcp --dport 8000 -j DNAT --to-destination 127.0.0.1:8000

приведенный выше набор правил не работает.
У меня net.ipv4.ip_forward установлен в 1.

кто-нибудь знает, как перенаправить трафик с интерфейса ppp на lo?
скажем, слушайте «192.168.45.1:8000 (ppp0)», а также «127.0.0.1:8000 (lo)»
порт менять не нужно.

спасибо

= - = обновление:

на роуминге, когда я использую

nc 192.168.45.1 8000

нет никакого вывода, независимо от того, что я набираю.
однако при этом в сеансе ssh для обоих

nc 127.0.0.1 8000
nc 192.168.45.1 8000

он выдает сообщения об ошибках, если я ввожу случайный текст.
Означает ли это, что мне нужны дополнительные правила для перенаправления вывода обратно в роуминг?

Я быстро взглянул на ваши правила iptables, и моя первая мысль - они хорошо выглядят. Вы уверены, что это уже не работает - но только от иностранного хоста. Если вы попытаетесь подключиться к нему с самого сервера, это не сработает. В этом случае вам также необходимо добавить свое правило nat в цепочку nat OUTPUT:

-t nat -A OUTPUT -p tcp -dst 192.168.45.1 --dport 8000 -j DNAT --to-destination 127.0.0.1:8000

(Это необходимо, потому что ваши локальные пакеты не будут проходить через цепочку PREROUTING - по крайней мере, в моей системе они не проходят.)

Я бы сначала попробовал, но, возможно, возникнет дополнительная проблема. (Может быть, есть не только tcp-пакеты, но и udp?)

Кстати, возможно, вы можете настроить своего демона на прослушивание обоих интерфейсов.