Yukka Posted September 4, 2007 Posted September 4, 2007 Появился новый провайдер, и тут появилась она - Задача - не изменяя топологии сети пустить http через другого провайдера. Установил FreeBSD 6.2, Сквид, 2 сетевухи в режиме бриджа, 3я сетевуха смотрит в тарелку провайдера... И вот тут затык. Все работает прекрасно, за исключением одной мелочи - не получается сделать прозрачную прокси. Где-то краем уха слыхал, что в режиме бриджа ipfw fwd не работает, но подтверждений этому не нашел. Если вдруг кто-то захочет помочь - милости прошу :-) ifconfig vr0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500 options=40<POLLING> ether 00:13:46:ec:55:7a media: Ethernet autoselect (100baseTX <full-duplex>) status: active rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=48<VLAN_MTU,POLLING> inet XXX.XXX.XXX.70 netmask 0xfffffffc broadcast BB.BB.BB.BB ether 00:c0:26:a7:47:d2 media: Ethernet autoselect (100baseTX <full-duplex>) status: active vr1: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500 options=40<POLLING> inet 192.168.4.101 netmask 0xffffff00 broadcast 192.168.4.255 ether 00:0c:6e:ca:ae:4e media: Ethernet autoselect (100baseTX <full-duplex>) status: active plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500 lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5 inet6 ::1 prefixlen 128 inet 127.0.0.1 netmask 0xff000000 bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 6a:2c:c8:80:81:1c priority 32768 hellotime 2 fwddelay 15 maxage 20 member: vr1 flags=3<LEARNING,DISCOVER> member: vr0 flags=3<LEARNING,DISCOVER> cat /etc/sysctl.confnet.link.ether.bridge.enable=1net.link.ether.bridge.config=vr0,vr1 net.link.ether.bridge.ipfw=1 net.link.bridge.pfil_member=1 net.link.bridge.pfil_bridge=0 cat /etc/rc.confblanktime="3600"#tcp_drop_synfin="YES" #icmp_drop_redirect="YES" #named_enable="YES" #named_flags="-u bind -t /etc/namedb -c /etc/namedb/named.conf" sshd_enable="YES" firewall_enable="YES" #ipnat_enable="YES" #ipnat_rules="/usr/local/etc/ipnat.rules" #--------- squid_enable="YES" # squid_chdir="/var/log/squid" #------- sendmail_enable="NONE" gateway_enable="YES" static_routes="GwPROXY" route_GwPROXY="-net 0.0.0.0 -netmask 0.0.0.0 -gateway XXX.XXX.XXX.69" cloned_interfaces="bridge0" ifconfig_bridge0="addm vr0 addm vr1 up" ifconfig_vr0="up" hostname="ROUTER" ifconfig_rl0="inet XXX.XXX.XXX.70 netmask 255.255.255.252" ifconfig_vr1="inet 192.168.4.101 netmask 255.255.255.0" keymap="ru.koi8-r" #router="/sbin/routed" #router_enable="YES" #router_flags="-q" usbd_enable="NO" ipfw show00001 11 554 count ip from any to any via rl0 in00001 11 512 count ip from any to any via rl0 out 00010 0 0 deny ip from any to me dst-port 22 via vr0 00010 0 0 deny ip from any to me dst-port 22 via rl0 01000 11130 1681574 fwd 192.168.4.101,3128 tcp from table(1) to not table(2) dst-port 80 in via vr1 30000 69863 33464736 allow ip from any to any 65535 0 0 deny ip from any to any Если проксю задавать явно, то все работает, а прозрачно - все ходит через бридж в даль, в access.log живут партизаны, а в 1000 правиле исправно добавляются байтики В принципе можно жить и так, но очень хотелось бы проксю сделать прозрачной... Вставить ник Quote
Yukka Posted September 12, 2007 Author Posted September 12, 2007 В общем сделал на Debian 4 + iptables/ebtables Вставить ник Quote
leveler Posted September 13, 2007 Posted September 13, 2007 Конфиги секретные, или можно поделиться? Вставить ник Quote
Yukka Posted September 13, 2007 Author Posted September 13, 2007 Так как я не настоящий сварщик, и дэбиан держал в руках первый раз в жизни - не пинать. Поставил по минимуму. Что добавлял: apt-get install bridge-ultis apt-get install ebtables apt-get install squid в сквиде /etc/squid/squid.conf - прозрачная прокси на бридже http_port 192.168.4.101:3128 transparent Бридж: /etc/netword/interfaces auto br0iface br0 inet static address 192.168.4.101 netmask 255.255.255.0 dns-nameservers 192.168.4.90 pre-up ifconfig eth0 0.0.0.0 up pre-up ifconfig eth1 0.0.0.0 up pre-up brctl addbr br0 pre-up brctl addif br0 eth0 pre-up brctl addif br0 eth1 Сам заворот:ebtables -t broute -A BROUTING -p IPv4 --ip-protocol 6 --ip-source ХХХ.ХХХ.ХХХ.90 --ip-destination-port 80 -j redirect --redirect-target ACCEPTiptables -t nat -A PREROUTING -i br0 -p tcp --source ХХХ.ХХХ.ХХХ.90 --dport 80 -j REDIRECT --to-port 3128 Эти правила пришлось дублировать для каждого айпишника в моей части подсетки (и внешних, и внутренних), так как они все врассыпуху. Ну и не забыть # echo 1 > /proc/sys/net/ipv4/ip_forward Естественно про рутинг рассказывать не буду - обязателен. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.