Я не уверен, как начать лучше, поэтому я буду прямо. Я должен поехать в другую страну, но мне нужен доступ к серверу, который является локальным по отношению к сети моего родного города. У меня есть маршрутизатор DD-WRT, к которому подключен только мой компьютер. Итак, мой вопрос: могу ли я создать какое-то правило iptables, которое позволит мне подключаться к маршрутизатору из внешней сети (за границей) и перенаправит меня в мою локальную сеть (предоставляется провайдером). Я постараюсь сделать "карту" моей потребности.

/Me - X/  
/My router - R/  
/Internet - I/  
/Local Server - S/  

Мой типичный способ доступа к S (локальному серверу) заключается в следующем: X-R-S Мой типичный способ доступа к Интернету: X-R-I Мне нужно: R<--I<--X (затем с R я подключаюсь к S).
Это потому, что я не могу получить доступ к S из внешней сети.
Когда я не дома, за маршрутизатором нет активного компьютера, поэтому я не могу просто запустить прокси на нем.

1 ответ1

0

Это должно быть относительно тривиальным; для SSH примерно так должно быть:

iptables -t nat -A PREROUTING -p tcp \  
  -i ppp0 --dport 22 \  
  -j DNAT   \
  --to-destination 10.10.10.10:22

Предположение: внешний интерфейс R - ppp0 . Это входящий интерфейс, к которому должно применяться правило.

Предположение: IP-адрес S - 10.10.10.10 - замените правильный, конечно.

То, что это делает, является "NAT назначения"; в основном точно так же, как "обычный NAT", только он заменяет адрес назначения внутренним сервером и отменяет его на обратном пути. Чтобы использовать это, все, что вам нужно сделать на X, это запустить ssh R вместо ssh S для подключения к sshd на S (это будет работать только в том случае, если X в настоящее время не в Интернете, а во внутренней сети; вы ' Также необходимо запустить SNAT - "нормальный" или исходный NAT - чтобы получить ответы от S для отправки через R, и вам нужно изменить правило с «-i ppp0» на «-d < внешний адрес R». > ", чтобы он совпадал, когда пакеты получены изнутри, а не только снаружи; как вы можете сказать, это становится немного волосатым).

Примечание. Конечно, это можно сделать и для любых других портов, но я действительно настоятельно рекомендую не раскрывать Samba (общий доступ к Windows) или незашифрованный HTTP (если в любом случае это общедоступный, не прошедший проверку подлинности контент). Или что-нибудь еще, правда. Они нетривиальны для обеспечения безопасности, где это вообще возможно, поэтому использование переадресации портов SSH избавит вас от многих головных болей.

За исключением того, что переадресация Samba трудна, поэтому лучше постараться обойтись полностью без этого.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .