LINUX.ORG.RU
решено ФорумAdmin

Proxy-сервер на базе squid за роутером

 , , ,


0

1

Исходные данные:

  • IP-адрес на WAN-порту маршрутизатора: 10.223.71.15
  • IP-адрес самого шлюза: 192.168.0.1
  • IP-адрес интерфейса сервера (eth0), где необходимо поднять squid: 192.168.0.46
  • Внешний IP-адрес, выданный провайдером, вида: 176.*.*.*

Была задача поднять ipv6-прокси на основе туннеля ipv6-ipv4, чтобы в дальнейшем использовать их в формате: 176.*.*.*:30001-*****. Само туннелирование настроено и работает, а вот с поднятием squid возникла проблема.

Изначально ifconfig выглядел так:

eth0      Link encap:Ethernet  HWaddr 00:1d:60:e0:58:3a  
          inet addr:192.168.0.46  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fd01::21d:60ff:fee0:583a/64 Scope:Общий
          inet6 addr: fe80::21d:60ff:fee0:583a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7639426 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4122592 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:10389315184 (10.3 GB)  TX bytes:648579796 (648.5 MB)

he-ipv6   Link encap:IPv6-in-IPv4  
          inet6 addr: 2001:470:*:*:*:*:*:*/64 Scope:Общий
          inet6 addr: 2001:470:*:*:*:*:*:*/64 Scope:Общий
          и т.д.

squid.conf так:

acl localnet src 192.168.0.0/24

http_access allow all

http_port 176.*.*.*:30000 name=p30000
http_port 176.*.*.*:30001 name=p30001
http_port 176.*.*.*:30002 name=p30002
http_port 176.*.*.*:30003 name=p30003
http_port 176.*.*.*:30004 name=p30004

Но при попытке стартануть squid в логи сыпалось следующее:

commBind: Cannot bind socket FD 11 to 176.*.*.*:30000: (99) Cannot assign requested address
При замене 176.*.*.* на 192.168.0.46 или на 127.0.0.1 прокси сервер начинал работать нормально, естественно только из локальной сети, в логах ошибок больше не было.

Повесил этот внешний адрес на eth0, ifconfig стал следующим:

eth0      Link encap:Ethernet  HWaddr 00:1d:60:e0:58:3a  
          inet addr:192.168.0.46  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fd01::21d:60ff:fee0:583a/64 Scope:Общий
          inet6 addr: fe80::21d:60ff:fee0:583a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7639426 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4122592 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:10389315184 (10.3 GB)  TX bytes:648579796 (648.5 MB)
          Interrupt:17 

eth0:1    Link encap:Ethernet  HWaddr 00:1d:60:e0:58:3a  
          inet addr:176.*.*.*  Bcast:176.113.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:17 

he-ipv6   Link encap:IPv6-in-IPv4  
          inet6 addr: 2001:470:*:*:*:*:*:*/64 Scope:Общий
          inet6 addr: 2001:470:*:*:*:*:*:*/64 Scope:Общий

Теперь прокси работает и при использовании 176.*.*.*:30001 в браузере, то есть через внешний айпи, но только если проверять с того же самого сервера. Извне и из локальной сети происходит connection timed out. На роутере порты проброшены, серверу назначена статика 192.168.0.46, подозреваю, что дело где-то в iptables.

/etc/network/interfaces:

auto lo
iface lo inet loopback

iface eth0 inet dhcp
auto eth0

auto he-ipv6
iface he-ipv6 inet6 v4tunnel
        address 2001:470:70:f06::2
        netmask 64
        endpoint 216.66.80.162
        ttl 255
        up ip -6 route add default dev he-ipv6
        down ip -6 route del default dev he-ipv6

Ubuntu 14.04

В какую сторону стоит копать для решения проблемы? Заранее спасибо.

Вы поднимаете проксю на внутреннем адресе, на нее прокидываете трафик из вне средствами роутера или что у вас там. Тот адрес 176.*.*.* ваши пакеты получают когда пройдут стопицот шлюзов провайдера, понятное дело что на него вы ничего повесить не сможете.

При замене 176.*.*.* на 192.168.0.46 или на 127.0.0.1 прокси сервер начинал работать нормально, естественно только из локальной сети, в логах ошибок больше не было.

Значит не допробросили порты на своем шлюзе, трафик из интернетов не проходит.

micronekodesu ★★★ ()
Ответ на: комментарий от micronekodesu

Благодарю. Порты действительно были все проброшены, проблема была в другом, собственно решение:

Почистил маршруты, чтобы для интерфейса, на котором будет висеть прокси, в моём случае - eth0, остались лишь дефолтные маршруты. У меня же весь трафик на адреса 176.x.x.x заворачивался вообще не туда, куда нужно.

Убрал внешний айпи с интерфейса eth0, который сам же вчера и добавил, чтобы привести все к виду:

eth0      Link encap:Ethernet  HWaddr 00:1d:60:e0:58:3a  
          inet addr:192.168.0.46  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fd01::21d:60ff:fee0:583a/64 Scope:Общий
          inet6 addr: fe80::21d:60ff:fee0:583a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7639426 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4122592 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:10389315184 (10.3 GB)  TX bytes:648579796 (648.5 MB)
          Interrupt:17 


he-ipv6   Link encap:IPv6-in-IPv4  
          inet6 addr: 2001:470:*:*:*:*:*:*/64 Scope:Общий
          inet6 addr: 2001:470:*:*:*:*:*:*/64 Scope:Общий

Конфиг прокси привёл к следующему виду:

http_port 192.168.0.46:30000 name=p30000
http_port 192.168.0.46:30001 name=p30001
и т.д.

/etc/network/interfaces с настройками самого туннеля выглядит теперь так:

auto he-ipv6
iface he-ipv6 inet6 v4tunnel
        address 2001:470:70:f06::2
        netmask 64
        endpoint 216.66.80.162
        local 192.168.0.46
        ttl 255
        gateway 2001:470:70:f06::1

То есть внешний ip вообще не должен нигде встречаться. Поднятые прокси проверены как с локалки, так и чекером - все прекрасно работает, всем спасибо, проблема решена.

HellFire0 ()
Ответ на: комментарий от HellFire0

UPD. Забыл добавить, что необходимо открыть необходимые порты не только на роутере, но и в ufw, то есть для всего необходимого диапазона портов:

ufw allow 30000:30500/tcp
HellFire0 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.