하나의 HW-NIC로 오징어 프록시용 iptables를 설정하는 방법

하나의 HW-NIC로 오징어 프록시용 iptables를 설정하는 방법

임대용 고정 ipaddress가 있는 서버가 있는데 이제 이 서버에 투명 프록시를 설정하고 싶습니다.

테스트 목적으로 오징어를 "http_access all 허용" 리스너로 구성한 후 iptables를 설정하고 싶었습니다. 나는 고정 ipaddress가 마운트된 이더넷 연결이 하나만 있다는 것을 알았습니다. 그러나 적어도 나는 이것을 구성하는 방법을 보여주는 문서를 찾지 못했습니다. (물리적으로 분리된 두 개의 NIC가 있지만 하나가 아닌 NIC를 구성하는 방법에 대해 많은 정보를 찾았습니다)

산출:

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가 필요합니까? ebtables 없이 이 작업을 수행할 수 있을 만큼 올바른 iptables가 있습니까? 그렇다면 설정할 수 있는 문자열을 제공해 주시면 매우 감사하겠습니다.

#

출처: 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으로 오는)을 Squid 서버 포트 3128로 전달하기 위해 다음 규칙을 추가했습니다.

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

이 시나리오에서는 투명 프록시를 사용할 수 없습니다.

모든 트래픽을 가로채서 다시 작성하여 오징어로 리디렉션할 수 있도록 투명 프록시가 트래픽의 네트워크 경로에 있어야 하며, 서버가 네트워크 경로 외부에 있으므로 이를 수행할 수 있는 방법이 없습니다.

이 서버를 프록시로 사용하려면 일반 정방향 프록시여야 합니다.

관련 정보