Вот ситуация, в которой работает Win 7 Pro SP1 (версия 6.1.7601), брандмауэр Windows полностью отключен (даже добавлены правила, позволяющие что-либо пропустить на всякий случай, если он каким-то образом все еще идет), нет программ, работающих в фоновом режиме (убиты все ненужные службы /exe), ipv6 установлен и работает нормально, netsh isatap и 6to4 включены. Teredo установлен в состояние по умолчанию.
Во-первых, я могу настроить netsh v4tov4 portproxy для интерфейса 192/8, и в этом случае portproxy будет работать нормально. В двух повышенных командных снарядах я бегу:
REM Admin Shell 1
ncat.exe -l 192.168.2.173 13337
REM Admin Shell 2
netsh interface portproxy add v4tov4 listenport=18080 connectport=13337 connectaddress=192.168.2.173
netsh interface portproxy show all
Listen on ipv4: Connect to ipv4:
Address Port Address Port
--------------- ---------- --------------- ----------
* 18080 192.168.2.173 13337
ncat 192.168.2.173 18080
[type a message and it will popup in shell 1]
C:\temp>netstat -a -b | grep -E -A1 13337
TCP 192.168.2.173:13337 Windows7_x64:0 LISTENING
[ncat.exe]
Прокси порта перенаправляет и netcat работает как положено.
Затем простое изменение на localhost (которое разрешается на [::1]) или явное использование 127.0.0.1 с правилом v4tov4 (также пробовал v6tov4) завершается неудачей каждый раз.
Например, начиная с 127.0.0.1
REM Admin Shell 1
ncat.exe -l 127.0.0.1 13337
REM Admin Shell 2
netsh interface portproxy add v4tov4 listenport=18080 connectport=13337 connectaddress=127.0.0.1
netsh interface portproxy show all
Listen on ipv4: Connect to ipv4:
Address Port Address Port
--------------- ---------- --------------- ----------
* 18080 127.0.0.1 13337
ncat 127.0.0.1 18080
Ncat: No connection could be made because the target machine actively refused it. .
C:\temp>netstat -a -b | grep -E -A1 13337
TCP 127.0.0.1:13337 Windows7_x64:0 LISTENING
[ncat.exe]
Наконец, удаление всех старых правил netsh и попытка его с v6tov6 также является полной бомбой:
REM Admin Shell 1
ncat.exe -6 -l [::1] 13337
REM Admin Shell 2
netsh interface portproxy add v6tov6 listenport=18080 connectport=13337 connectaddress=[::1]
netsh interface portproxy show all
Listen on ipv6: Connect to ipv6:
Address Port Address Port
--------------- ---------- --------------- ----------
* 18080 [::1] 13337
ncat -6 [::1] 18080
Ncat: No connection could be made because the target machine actively refused it.
C:\temp>netstat -a -b | grep -E -A1 13337
TCP [::1]:13337 Windows7_x64:0 LISTENING
[ncat.exe]
Примечание. Windows7_x64 - это localhost, и интерфейс работает нормально.
C:\>ping localhost
Pinging Windows7_x64 [::1] with 32 bytes of data:
Reply from ::1: time<1ms
Также я могу напрямую подключиться к конечной точке прослушивания netcat и отправлять данные без проблем:
ncat -6 [::1] 13337
Проблема определенно с правилами netsh portproxy.
Так что здесь дает? Брандмауэр полностью выключен. Повышенная оболочка. Больше ничего не мешает (без AV/IDS).
Я пытался добавить различные комбинации правил v6tov4 и v4tov6, но это тоже ничего не дало. MS Message Analyzer не помогает, потому что он не захватывает интерфейс localhost, даже когда соединение устанавливается.
Есть идеи?
Изменить 2016/10/15 23:58EST: Остановка следующих шести служб отключает прокси-порты по всем направлениям. Это предполагает, что одна из этих служб связана с тем, что происходит.
sc stop homegrouplistener
sc stop Browser
sc stop lanmanserver
sc stop smb
sc stop iphlpsvc