
Я арендовал сервер со статическим IP-адресом и теперь хочу настроить на этом сервере прозрачный прокси-сервер.
после того, как я настроил squid для тестирования с прослушивателем "http_access allow all", я хотел настроить iptables. Я понял, что у меня есть только одно соединение Ethernet с моим статическим IP-адресом, смонтированным. Но, по крайней мере, я не нашел документации, которая показала бы мне, как это настроить. (нашел много информации о том, как настроить squid с двумя физическими отдельными сетевыми картами, но не с одной)
выход:
root@1:~# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:49 errors:0 dropped:0 overruns:0 frame:0
TX packets:49 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3536 (3.5 KB) TX bytes:3536 (3.5 KB)
venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:127.0.0.1 P-t-P:127.0.0.1 Bcast:0.0.0.0 Mask:255.255.255.255
inet6 addr: ::2/128 Scope:Compat
inet6 addr: 2a01:[....]external-ipv6[...]/128 Scope:Global
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
RX packets:551353 errors:0 dropped:0 overruns:0 frame:0
TX packets:455717 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:351211942 (351.2 MB) TX bytes:267054641 (267.0 MB)
venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:[...]external-ipv4[...] P-t-P:[...]external-ipv4[...] Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
Я много читал об iptables и немного об ebtables. И теперь я застрял. Я не знаю, какой шаг должен быть моим следующим.
На данный момент мои iptables совершенно пусты.
Нужен ли мне ebtables для корректной работы прозрачного прокси? Достаточно ли правильных iptables, чтобы сделать это без ebtables? Если да, я был бы очень признателен, если бы вы могли дать мне строку для их настройки.
#
Источники: wiki[.]ubuntuusers[.]de/Squid http://freecode.com/articles/configuring-a-transparent-proxywebcache-in-a-bridge-using-squid-and-ebtables http://www.cyberciti.biz/tips/linux-setup-transparent-proxy-squid-howto.html
#
особенно эта цитата должна объяснить мне, как это сделать, но я не понимаю...
Далее я добавил следующие правила для пересылки всех http-запросов (поступающих на порт 80) на порт 3128 сервера Squid:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.1.1:3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
с
iptables -t nat -A PREROUTING -i venet0 -p tcp --dport 80 -j DNAT --to 127.0.0.1:3128
iptables -t nat -A PREROUTING -i venet0:0 -p tcp --dport 80 -j REDIRECT --to-port 3128
это должно работать, но не работает...
решение1
В этом сценарии нельзя использовать прозрачный прокси-сервер.
Прозрачный прокси-сервер должен находиться на сетевом маршруте трафика, чтобы он мог перехватывать и перезаписывать весь трафик, перенаправляя его в Squid, а поскольку ваш сервер находится за пределами вашего сетевого пути, у вас нет возможности это сделать.
Если вы хотите использовать этот сервер в качестве прокси-сервера, это должен быть обычный прямой прокси-сервер.