Сделать, чтобы только локальный демон слушал на другом интерфейсе (используя переадресацию портов 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)"
нет необходимости менять порт.
Thanx
= - = обновить:
на роуминге, когда я использую
nc 192.168.45.1 8000
нет никакого вывода вообще независимо от того, что я печатаю.
однако при выполнении этого в сеансе SSH, для обоих
nc 127.0.0.1 8000
nc 192.168.45.1 8000
выдает сообщения об ошибках, если я ввожу какой-то случайный текст.
значит ли это, что мне нужны дополнительные правила для перенаправления вывода обратно в роуминг?
1 ответ
Я быстро взглянул на ваши правила 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?)
Кстати, возможно, вы можете настроить своего демона для прослушивания обоих интерфейсов.