Сценарий
Я хочу:
подключение к B на localhost: 8080 ---> A: 4000
Пример: следующая команда на терминале B должна достичь A
telnet localhost 8080
Конфиг
На клиенте B:
Включите пересылку Mac OS
pf
настройки:
rdr proto tcp to any port 8080 -> 192.168.43.215 port 4000
#redirect all connections to port 8080 to server A on port 4000
nat proto tcp to any port 4000 -> 192.168.43.207
#nat all connections to port 4000 so that they will all go out on correct interface on B with IP 192.168.43.207
Тест
telnet localhost 8080
на Б.pfctl -s state
на B дает:No ALTQ support in kernel
ALTQ related functions disabled
ALL tcp 192.168.43.215:4000 <- 127.0.0.1:8080 <- 127.0.0.1:65414 CLOSED:SYN_SENT
ALL tcp 127.0.0.1:65414 -> 192.168.43.207:42866 -> 192.168.43.215:4000 SYN_SENT:CLOSED
tcpdump -i en0 port 4000
, на A дает:19:33:39.569041 IP (tos 0x10, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 64)
192.168.43.207.42866 > 192.168.43.215.4000: Flags [S], cksum 0x8b44 (incorrect -> 0x49e4), seq 463248686, win 65535, options [mss 16344,nop,wscale 6,nop,nop,TS val 3178015922 ecr 0,sackOK,eol], length 0
19:33:39.707955 IP (tos 0x10, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 64)
192.168.43.207.42866 > 192.168.43.215.4000: Flags [S], cksum 0x8b44 (incorrect -> 0x497f), seq 463248686, win 65535, options [mss 16344,nop,wscale 6,nop,nop,TS val 3178016023 ecr 0,sackOK,eol], length 0
19:33:39.769274 IP (tos 0x10, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 64)
192.168.43.207.42866 > 192.168.43.215.4000: Flags [S], cksum 0x8b44 (incorrect -> 0x491a), seq 463248686, win 65535, options [mss 16344,nop,wscale 6,nop,nop,TS val 3178016124 ecr 0,sackOK,eol], length 0
19:33:39.868295 IP (tos 0x10, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 64)
## More like this
Но служба, выставленная на порт 4000, похоже, ничего не получает.
Я пришел к выводу, что пакет действительно достиг A, но из-за cksum 0x5f5d (incorrect -> 0xc65a
, в сервис как-то не передали.
Вопрос
Это pf
ошибка или моя конфигурация неверна? Как мне это исправить?