Вы можете привязать поиск к концу строки и подсчитать сколько угодно дополнительных символов:
grep 'X.$'
будет искать "X "в качестве предпоследнего символа,
grep 'X.\{4\}$'
будет искать" X "как пятый последний символ и т. д.
Если вы не используете прозрачный прокси, поведение, которое вы видите, является нормальным:
На уровне IP невозможно соединить эти два устройства. Если ваш прокси является кеширующим прокси, то в некоторых случаях подключаться будет не к чему: прокси может обслуживать запросы клиентов сам, если у него есть информация в своем кеше. Но если вы заглянете внутрь пакетов, вы найдете то, что ищете:
Host
); X-Forwarded-For
). Обратите внимание, что во втором случае с кэширующим прокси вы найдете только IP-адрес первого клиента, запрашивающего данный кэшируемый ресурс.
Если вы пытаетесь обрабатывать зашифрованные соединения, все становится немного сложнее; Я позволю вам прочитать об этом (см. страницу Wireshark по теме и Squid's ) ...