1.7, universite (ok), 20:18, 16/06/2015 [ответить] [﹢﹢﹢] [ · · · ] [↑] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| +/– |
Слишком сложно.
1) Используете ipfw NAT на интерфейсе ue0
2) При подключении по dhcp переписываем default (в /etc/dhclient.conf)
3) не трогаем tcp_outgoing_address в aquid
4) Профит!
Еще вариант через setfib и ipfw fwd
получить ip адрес интерфейса:
ifconfig ue0 | awk '/-->/ {print $2}'
Вместо демона megafon - man devd
| |
1.9, ALex_hha (ok), 16:34, 17/06/2015 [ответить] [﹢﹢﹢] [ · · · ] [↑] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| +/– |
Ох блин как много действий
Поднимаем alias (10.0.0.1) на интерфейсе с динамическим ip, прописываем его ip как tcp_outgoing_address в squid.
Маркируем все пакеты с alias ip при помощи:
# iptables -t mangle -A OUTPUT -s 10.0.0.1 -j MARK --set-mark 0x1
маскарадим
# iptables -t nat -A POSTROUTING -o ppp1 -j MASQUERADE
дальше направляем в нужную нам таблицу
# ip rule add fwmark 0x1 table channel2
# ip rule add from 10.0.0.1 table channel2
profit
| |
1.13, als (ok), 22:30, 19/06/2015 [ответить] [﹢﹢﹢] [ · · · ] [↓] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| +/– |
Коллеги, спасибо за советы.
Ясно дело, изначально заметка не так красива и ясна, как многие из советов.
Спасибо за отклики, спасибо за рекомендации.
iptables не используется, за сим и мне, лично мне, не пойдет. Но это еще не повод не начать его использовать :)
Спасибо за совет awk к ifconfig, не пришло в голову. Красиво и просто получить адрес. Хотя, тот же awk через dhcpclient получает адрес :) Но сложнее.
По поводу алиаса на ue0, попробую. Пока не скажу :)
| |
|
2.14, universite (ok), 02:58, 20/06/2015 [^] [^^] [^^^] [ответить] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| +/– |
> Хотя, тот же awk через dhcpclient получает адрес :) Но сложнее.
Программа на awk слишком некрасивая и длинная. Если уж говорить о использовании чисто awk, то код займет несколько строчек.
data='cat dhcpd.leases | awk 'tolower($1) ~ /(fixed-address|option routers)/ && \
$2 { key=($1=="fixed-address" : tolower($1)); arr[key]=$2 } \
END { for (key in arr) print key arr[key] }''
set -- ${data}
case ${1} in
address:*) address=${1#fixed-address:} ;;
router:*) router=${1#routers:} ;;
esac
case ${2} in
address:*) address=${2#fixed-address:} ;;
router:*) router=${2#routers:} ;;
esac
Код скорее всего содержит огрехи, но у меня нет перед глазами живой dhcpd.leases перед глазами.
| |
|
1.15, als (ok), 15:03, 20/06/2015 [ответить] [﹢﹢﹢] [ · · · ] [↑] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| +/– |
воспользовался dhclient-script
Добавляем /etc/dhclient-enter-hooks :
if [ $reason == "PREINIT" ]; then
echo 'AT^NDISDUP=1,1,"internet"' > /dev/cuaU1
fi
Добавляем /etc/dhclient-exit-hooks :
if [ $reason == "BOUND" ]; then
if [ $new_ip_address != $old_ip_address ]; then
echo $new_ip_address > /etc/megafon_ip
echo $new_routers > /etc/megafon_router
#Обновляем ipfw
/usr/local/sbin/sh_firewall
#Формируем новый конфиг squid. К сожалению, tcp_outgoing не умеет брать адрес из файла.
sed 's/#ip_megafon#/'$new_ip_address'/g' /usr/local/etc/squid/squid.conf.etalon > /usr/local/etc/squid/squid.conf
#Рестарт squid.
/usr/local/sbin/squid -k reconfigure
fi
fi
Уходит вызов скрипта в cron.
Спасибо за советы.
| |
|