iptables как прокси

iptables как прокси

Я не уверен, как лучше начать, поэтому скажу прямо. Мне нужно поехать в другую страну, но мне нужен доступ к серверу, который является локальным для сети моего родного города. У меня есть маршрутизатор 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

Это должно быть относительно просто; для 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 сложна, поэтому лучше попробовать обойтись вообще без нее.

Связанный контент