Jump to content

FREEBSD, BRIDGE и прокси... нужна помощь...


Recommended Posts

Posted

Появился новый провайдер, и тут появилась она -

 

 

Задача - не изменяя топологии сети пустить 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.conf
net.link.ether.bridge.enable=1

net.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.conf
blanktime="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 show
00001 11 554 count ip from any to any via rl0 in

00001 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 правиле исправно добавляются байтики

 

В принципе можно жить и так, но очень хотелось бы проксю сделать прозрачной...

Posted

Так как я не настоящий сварщик, и дэбиан держал в руках первый раз в жизни - не пинать.

 

Поставил по минимуму.

 

Что добавлял:

 

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 br0

iface 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 ACCEPT

iptables -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

 

Естественно про рутинг рассказывать не буду - обязателен.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.