Я должен пересылать каждую интернет-страницу на свой локальный адрес, т.е. 127.0.0.1, используя OS X.
Я пробовал следующую команду, но она не имеет никакого эффекта:
echo " rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080 " | sudo pfctl -ef -
Я попытался исследовать точное значение приведенной выше строки, но не могу найти хорошего объяснения. Как выполнить эту переадресацию?
Редактировать 1 :
Допустим, пользователь вводит в браузере «www.google.com»; это должно иметь такой эффект -->
Пользователь должен быть перенаправлен на мою локальную страницу, которая находится по адресу 127.0.0.1:8080.
Теперь, если я нажму 127.0.0.1:8080, я увижу свой локальный портал.
Но я хочу, чтобы он отображался после перенаправления с "Google.com"
Я пишу следующее заявление. Но они не имеют никакого эффекта.
rdr pass on lo0 proto {tcp, udp} from any to any port 80 -> 127.0.0.1 port 7894
pass out log(all) on em0 route-to lo0 inet proto {tcp, udp} from any to any port 80 keep state
Я пишу строки выше в своем файле привязки и добавляю привязку в pf.conf , используя rdr-anchor
Если я правильно понимаю ваш вопрос и ваш комментарий, вы пытаетесь создать что-то вроде локального портала авторизации.
Это невозможно сделать с помощью pf
простой переадресации. Задействовано гораздо больше вещей и настроек. Здесь (ссылка на bsdguides.org в github readme не работает: правильная ссылка ) вы найдете пример, как это сделать в OpenBSD. Решение может быть адаптировано для OS X при определенных обстоятельствах.
Правило rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
делает следующее:
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
| | | |
| | | #from any IP (all source IPs) to any IP (all destination IPs of the local machine)
| | | from any to any
| | #IPv4 Protocol TCP
| | inet proto tcp
| #allow
| pass
#redirect from port 80 to localhost:8080
rdr port 80 -> 127.0.0.1 port 8080
Или: любой входящий ( rdr
только перенаправляет входящие пакеты) TCP-трафик IPv4 (на любом интерфейсе) на порт 80 с любого IP на любой IP (на любом интерфейсе) локальной машины передается и перенаправляется на 127.0.0.1:8080.
Правило не перенаправляет запросы с локального клиентского компьютера для google.com:80 (т. е. 216.58.201.206:80) или 175.68.9.102:80 на 127.0.0.1:80, поскольку ни один из этих IP-адресов не является IP-адресом локального ( www-) серверная машина, и локальный (www-) сервер не знает о запросах.
Это не относится к исходящему трафику локальной машины, потому что это не входящий трафик. Сначала вы должны зациклить этот трафик:
rdr pass on lo0 proto {tcp, udp} from any to any port 80 -> 127.0.0.1 port 7894 pass out log(all) on em0 route-to lo0 inet proto {tcp, udp} from any to any port 80 keep state
но он не работает.
техраф
пользователь3439894
ПрафулД
техраф
google.com
сразу перенаправит вас на https и обойдет ваше перенаправление, если вы настроите перенаправление на порт 443, вы получите ошибку сертификата в браузере. Это то, чего вы пытаетесь достичь?кланомат
ПрафулД
кланомат
ПрафулД