
Я пытаюсь понять, как все эти компоненты работают вместе.
Моя главная цель — направить трафик (порт 80,443) из моей локальной сети хоста (Windows 7) на удаленный хост в удаленной сети. То есть я хочу перейти на 10.50.1.2:80 и попасть на удаленный хост (порт 4111).
В качестве первого шага я попытался добавить маршрут к своему локальному хосту Windows следующим образом:
route ADD “10.50.1.0” MASK “255.255.255.0” “remote public ip”.
Это не сработало. Может кто-нибудь объяснить почему?
затем попытался направить адрес на локальный сервер Linux
route ADD “10.50.1.0” MASK “255.255.255.0” “192.168.10.78”
чем я использовал iptables и DNAT в предварительной маршрутизации, чтобы направить пакеты на удаленный публичный IP
iptables -t nat -A PREROUTING -d 10.50.1.2 -dport 80 -j DNAT --to-destination publicIP:80
Трафик прибыл на 192.168.10.78 (проверено tcpdump), но не прибыл на удаленный хост. Может кто-нибудь объяснить, почему?? Я даже пытался использовать маскарад в постмаршрутизации.
затем я начал поиск и наткнулся на туннелирование.
может ли кто-нибудь объяснить, почему первая и вторая попытки не работают и как туннелирование может помочь?
решение1
Ваша первая попытка:
route ADD “10.50.1.0” MASK “255.255.255.0” “remote public ip”
Это устанавливает маршрут для сети 10.50.0/24, доступ к которой осуществляется через remote public ip
. Частные IP-адреса обычно не маршрутизируются в Интернете, и вы, вероятно, понимаете, почему это не работает.
Ваша вторая попытка:
route ADD “10.50.1.0” MASK “255.255.255.0” “192.168.10.78”
Устанавливает маршрут для сети 10.50.1.0/24 через хост 192.168.10.78, если этот хост не настроен на маршрутизацию трафика для этой сети, он никуда не пойдет, и даже тогда вы не сможете связаться с удаленной машиной. Вы сказали, что настроили NAT/DNAT, что позволило бы этой машине сделать это, но я не уверен, какой будет правильная конфигурация. Если вас интересует только веб-трафик, может быть, стоит рассмотреть возможность использования прокси-сервера?
Что касается туннелирования, то это процесс инкапсуляции вашего исходного запроса в другое соединение. Но вам придется быть более конкретным, в каком контексте вы это используете, поскольку могут быть нюансы, которые имеют огромное значение.