LINUX.ORG.RU

Сообщения strnd

 

Удалил пользователя

Форум — Admin

Подскажите, мудрейшие. Хотел выключить пользователя с помощью smbpasswd -d но кривыми пальцами с просони набрал -x. Если удалить пользователя из samba с помощью smbpasswd -x а потом завести заново, с тем же именем — новый пользователь получит доступ к профилю Windows старого пользователя при логоне в систему, или будет создан новый профиль?

Пользователь так же удалился из /etc/passwd и groups, но этих файлов у меня есть бекапы. А .tdb самбы нет. В случае, если пользователю будет присвоен новый профиль, можно ли как-то исправить ситуацию и проассоциировать новую самба-запись с существующим профилем? Чтобы пользователь, войдя в систему, увидел свой знакомый рабочий стол.

Спасибо.

 ,

strnd
()

Переключение между двумя провайдерами

Форум — Admin

Привет! Появился второй провайдер. Потребности в балансировке трафика нет, но зафейловерить линк во внешний канал не помешает. Основной провайдер предоставляет прямой линк (30 мегабит), резервный дает PPPoE (5 мегабит). Шлюзом выступает Debian 7.

Для выполенения задачи было решено держать оба линка поднятыми и в случае падения первого - переключать default gateway, подгружать альтернативный конфиг iptables и удаленно замеменять конфигурацию squid через SSH на прокси-сервере. Другой конфиг сквида разрешает доступ в интернет только тем пользователям, которым внешняя сеть критична для работы (Это около 15% всех пользоватлей). Учитывая специфику предприятия и то, что ширина резервного канала довольно мала, мне показалось это оптимальным решением.

Для автоматизации процесса я написал скрипт, который запускается по крону каждые пять минут. В моей ситуации это приемлемое время недоступности внешнего канала.

Проблема вот в чем. Мне нужно проверять доступность обоих каналов независимо от того, какой сейчас используется. Для этого я выбрал самый простой способ - ping -I $iface. Правильно ли? Есть что-то лучше?

Когда активный основной линк, я могу пинговать с обоих интерфейсов, -I eth6 и -I ppp0 работают и отвечают. Когда шлюз по умолчанию меняется на резервный, -I ppp0 работает, а вот -I eth6 перестает, - «destination host unreachable». В итоге, после переключения на резервный канал, обратно я уже не возвращаюсь, потому что проверка основного канала заканчивается провалом независимо от его состояния. Почему так?

# основной
# ip r
default via 85.1.1.45 dev eth6
10.0.0.0/21 dev eth1  proto kernel  scope link  src 10.0.0.2
90.2.66.97 dev ppp0  proto kernel  scope link  src 90.2.2.2
85.1.1.44/30 dev eth6  proto kernel  scope link  src 85.1.1.46
# резервный
# ip r
default dev ppp0 scope link
10.0.0.0/21 dev eth1  proto kernel  scope link  src 10.0.0.2
90.2.66.97 dev ppp0  proto kernel  scope link  src 90.2.2.2
85.1.1.44/30 dev eth6  proto kernel  scope link  src 85.1.1.46
Как заставить это работать? Что можно улучшить/упростить? AS, BGP не предлагать :]

Любую информацию предоставлю. Скрипт прикладываю. Баш только изучаю, если есть замечания, ошибки, предложения - пожалуйста, расскажите :)

#!/bin/bash
LOG="/var/log/isp-connect.log"
exec &>>$LOG
CURRENT_IF=$(ip r | grep "default" | awk '{print $5}')
PINGHOST1="8.8.8.8"
PINGHOST2="8.8.4.4"
WAN1_IF="eth6"
WAN1_IP="85.1.1.46"
WAN1_GW="85.1.1.45"
WAN2_IF="ppp0"
WAN2_IP="90.2.2.2"
DATE=$(date "+%m/%d/%y %H:%M:%S")
SENDEMAIL="sendemail -f gw01@domain.ru -t log@domain.ru -u \"WAN STATUS\" -s mail01.my.domain.ru"
#
CHECK_WAN1() { ping -q -c 5 -I $WAN1_IF $PINGHOST1 > /dev/null || ping -q -c 5 -I $WAN1_IF $PINGHOST2 > /dev/null; }
CHECK_WAN2() { ping -q -c 5 -I $WAN2_IF $PINGHOST1 > /dev/null || ping -q -c 5 -I $WAN2_IF $PINGHOST2 > /dev/null; }
ROUTE_WAN1() { route del default; route add default gw $WAN1_GW $WAN1_IF; sleep 5; }
ROUTE_WAN2() { route del default; route add default dev $WAN2_IF; sleep 5; }
#
if [ "$CURRENT_IF" == $WAN1_IF ]; then
        CHECK_WAN1
        if [ $? -ne 0 ]; then
                echo "[FAIL] $DATE WAN1 link is DOWN."
                echo "[INFO] $DATE Checking WAN2."
                CHECK_WAN2
                if [ $? -ne 0 ]; then
                        echo "[FAIL] $DATE ISP-SWITCH failed. Cannot connect to WAN2."
                        $SENDEMAIL -m "[FAIL] $DATE WAN1 and WAN2 are down. Switching is not possible."
                        exit
                else
                        ROUTE_WAN2
                        echo "[OK] $DATE WAN2 connection established."
                        bash /etc/iptables/wan2.ipt
                        # ssh to squid-server placeholder
                        # echo "[OK] $DATE squid configuration changed to EMERGENCY."
                        $SENDEMAIL -m "[WARN] WAN1 is down. Switched to WAN2."
                        exit
                fi
        else
                echo "[INFO] $DATE WAN1 link is UP. There is nothing to do."
                exit
        fi
#
elif [ "$CURRENT_IF" == $WAN2_IF ]; then
        CHECK_WAN1
        if [ $? -ne 0 ]; then
                echo "[INFO] $DATE WAN1 link is still DOWN."
                exit
        else
                echo "[INFO] $DATE WAN1 link looks like UP."
                echo "[INFO] $DATE Trying WAN1."
                ROUTE_WAN1
                CHECK_WAN1
                        if [ $? -ne 0 ]; then
                                echo "[FAIL] $DATE Cannot verify WAN1 connection."
                                echo "[INFO] $DATE ISP-SWITCH was canceled."
                                ROUTE_WAN2
                                exit
                        else
                                echo "[OK] $DATE WAN1 connection established."
                                echo "[OK] $DATE Changing squid3 configuration to MAIN."
                                $SENDEMAIL -m "[OK] WAN1 is back. Switched to WAN1."
                                bash /etc/iptables/wan1.ipt
                                # ssh to squid-server placeholder
                                exit
                        fi
        fi
fi

Помоги ЛОР там, где не смог помочь гугл :(

 ,

strnd
()

пятничные вопросы по iptables

Форум — Admin

Выместите на мне всю злость в эту пятницу, укажите все ошибки и недочеты! В перерывах подскажите пожалуйста, почему проброс 3389 с внешки не работает? Я точно забыл какую-то деталь, но не пойму что. И можно ли удобней организовать управление вланами? Мне нужно чтобы из vlan_2 в lan (и обратно) был доступен 123, а из lan в vlan_2 можно было достучаться по 3389, 16135. Остальное закрыть.

Из vlan_3 должен быть доступен хост из сети LAN - 10.0.0.212 и только он, остальное закрыть.

Я от всего этого с ума уже схожу, помоги, дорогой ЛОР. Внешние адреса и маки изменены. Лучше чем code=bash для читаемости ничего не придумал.

# IPTABLES FIREWALL
#
SYSCTL="/sbin/sysctl -w" 
IPT="/sbin/iptables"
IPTS="/sbin/iptables-save"
IPTR="/sbin/iptables-restore"
WAN_IF="ppp0"
WAN_IP="xx.xx.xx.xx"
LAN_IF="eth0"
LAN_IP="10.0.0.1"
LAN_NET="10.0.0.1/21"
LAN_BCAST="10.0.7.255"
VLAN_2_IF="eth0.2"
VLAN_2_NET="192.168.0.1/24"
VLAN_3_IF="eth0.3"
VLAN_3_NET="192.0.0.1/24"
WHITE_NET="88.88.88.0/27"
NAS_IF="eth2"
NAS_NET="192.168.10.10/24"
LO_IF="lo"
LO_IP="127.0.0.1"
DNS_SRV_01="10.0.0.27"
DNS_SRV_02="10.0.0.28"
if [ "$1" = "save" ]
then
	echo -n "Saving firewall to /etc/sysconfig/iptables ... "
	$IPTS > /etc/sysconfig/iptables
	echo "done"
	exit 0
elif [ "$1" = "restore" ]
then
	echo -n "Restoring firewall from /etc/sysconfig/iptables ... "
	$IPTR < /etc/sysconfig/iptables
	echo "done"
	exit 0
fi

/sbin/modprobe 8021q
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe ipt_conntrack
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_nat
/sbin/modprobe ipt_limit
/sbin/modprobe ipt_MASQUERADE
/sbin/modprobe ipt_owner
/sbin/modprobe ipt_REJECT
/sbin/modprobe ipt_REDIRECT
/sbin/modprobe ipt_mark
/sbin/modprobe ipt_tcpmss
/sbin/modprobe ipt_multiport
/sbin/modprobe ipt_state
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_irc
/sbin/modprobe ip_conntrack_pptp
/sbin/modprobe ip_nat_pptp

if [ "$SYSCTL" = "" ]
then
    echo "1" > /proc/sys/net/ipv4/ip_forward
else
    $SYSCTL net.ipv4.ip_forward="1"
fi

if [ "$SYSCTL" = "" ]
then
    echo "1" > /proc/sys/net/ipv4/tcp_syncookies
else
    $SYSCTL net.ipv4.tcp_syncookies="1"
fi

if [ "$SYSCTL" = "" ]
then
    echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
else
    $SYSCTL net.ipv4.icmp_echo_ignore_broadcasts="1"
fi

if [ "$SYSCTL" = "" ]
then
    echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route
else
    $SYSCTL net.ipv4.conf.all.accept_source_route="0"
fi

if [ "$SYSCTL" = "" ]
then
    echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
else
    $SYSCTL net.ipv4.conf.all.accept_redirects="0"
fi

if [ "$SYSCTL" = "" ]
then
    echo "1" > /proc/sys/net/ipv4/conf/all/secure_redirects
else
    $SYSCTL net.ipv4.conf.all.secure_redirects="1"
fi

$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t mangle -P PREROUTING ACCEPT
$IPT -t mangle -P OUTPUT ACCEPT

$IPT -F
$IPT -t nat -F
$IPT -t mangle -F

$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

if [ "$1" = "stop" ]
then
	echo "Firewall completely flushed!  Now running with no firewall."
	exit 0
fi

$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT

$IPT -N bad_packets
$IPT -N bad_tcp_packets
$IPT -N icmp_packets
$IPT -N upd_input
$IPT -N tcp_input
$IPT -N tcp_ports_forward_allowed
$IPT -N udp_ports_forward_allowed
$IPT -N mac_forward_allowed
$IPT -N white_forward_allowed
$IPT -N published_service

#
$IPT -A bad_packets -p ALL -i $WAN_IF -s $LAN_NET -j DROP
$IPT -A bad_packets -p ALL -m conntrack --ctstate INVALID -j DROP
$IPT -A bad_packets -p TCP -j bad_tcp_packets
$IPT -A bad_packets -p ALL -j RETURN
#
$IPT -A bad_tcp_packets -p TCP -i $LAN_IF -j RETURN
$IPT -A bad_tcp_packets -p TCP ! --syn -m conntrack --ctstate NEW -j DROP
$IPT -A bad_tcp_packets -p TCP --tcp-flags ALL NONE -j DROP
$IPT -A bad_tcp_packets -p TCP --tcp-flags ALL ALL -j DROP
$IPT -A bad_tcp_packets -p TCP --tcp-flags ALL FIN,URG,PSH -j DROP
$IPT -A bad_tcp_packets -p TCP --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
$IPT -A bad_tcp_packets -p TCP --tcp-flags SYN,RST SYN,RST -j DROP
$IPT -A bad_tcp_packets -p TCP --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPT -A bad_tcp_packets -p TCP -j RETURN
#
$IPT -A icmp_packets --fragment -p ICMP -j DROP
$IPT -A icmp_packets -p ICMP -j RETURN
#
$IPT -A upd_input -p UDP -s 0/0 --dport 137 -j DROP
$IPT -A upd_input -p UDP -s 0/0 --dport 138 -j DROP
$IPT -A upd_input -p UDP -j RETURN
#
$IPT -A tcp_input -p TCP -s 0/0 --dport 80 -j ACCEPT
$IPT -A tcp_input -p TCP -s 0/0 --dport 25 -j ACCEPT
$IPT -A tcp_input -p TCP -s 0/0 --dport 110 -j ACCEPT
$IPT -A tcp_input -p TCP -s 0/0 --dport 143 -j ACCEPT
$IPT -A tcp_input -p TCP -s 0/0 --dport 8523 -j ACCEPT
$IPT -A tcp_input -p TCP -j RETURN
#
$IPT -A tcp_ports_forward_allowed -p TCP --dport 25 -j ACCEPT
$IPT -A tcp_ports_forward_allowed -p TCP --dport 587 -j ACCEPT
$IPT -A tcp_ports_forward_allowed -p TCP --dport 110 -j ACCEPT
$IPT -A tcp_ports_forward_allowed -p TCP --dport 143 -j ACCEPT
$IPT -A tcp_ports_forward_allowed -p TCP --dport 995 -j ACCEPT
$IPT -A tcp_ports_forward_allowed -p TCP -s $DNS_SRV_01 --dport 53 -j ACCEPT
$IPT -A tcp_ports_forward_allowed -p TCP -s $DNS_SRV_02 --dport 53 -j ACCEPT
$IPT -A tcp_ports_forward_allowed -p TCP -j RETURN
#
$IPT -A udp_ports_forward_allowed -p UDP --dport 4433 -j ACCEPT
$IPT -A udp_ports_forward_allowed -p UDP --dport 4440 -j ACCEPT
$IPT -A udp_ports_forward_allowed -p UDP --dport 7500 -j ACCEPT
$IPT -A udp_ports_forward_allowed -p UDP --dport 500 -j ACCEPT
$IPT -A udp_ports_forward_allowed -p UDP --dport 4500 -j ACCEPT
$IPT -A udp_ports_forward_allowed -p UDP -s $DNS_SRV_01 --dport 53 -j ACCEPT
$IPT -A udp_ports_forward_allowed -p UDP -s $DNS_SRV_02 --dport 53 -j ACCEPT
$IPT -A udp_ports_forward_allowed -p UDP -j RETURN
#
$IPT -A mac_forward_allowed -m mac --mac-source 00:00:00:00:00:00 -j ACCEPT
$IPT -A mac_forward_allowed -m mac --mac-source 00:00:00:00:00:00 -j ACCEPT
$IPT -A mac_forward_allowed -m mac --mac-source 00:00:00:00:00:00 -j ACCEPT
$IPT -A mac_forward_allowed -m mac --mac-source 00:00:00:00:00:00 -j ACCEPT
$IPT -A mac_forward_allowed -m mac --mac-source 00:00:00:00:00:00 -j ACCEPT
$IPT -A mac_forward_allowed -m mac --mac-source 00:00:00:00:00:00 -j ACCEPT
$IPT -A mac_forward_allowed -m mac --mac-source 00:00:00:00:00:00 -j ACCEPT
$IPT -A mac_forward_allowed -m mac --mac-source 00:00:00:00:00:00 -j ACCEPT
$IPT -A mac_forward_allowed -m mac --mac-source 00:00:00:00:00:00 -j ACCEPT
$IPT -A mac_forward_allowed -m mac --mac-source 00:00:00:00:00:00 -j ACCEPT
$IPT -A mac_forward_allowed -m mac --mac-source 00:00:00:00:00:00 -j ACCEPT
$IPT -A mac_forward_allowed -m mac --mac-source 00:00:00:00:00:00 -j ACCEPT
$IPT -A mac_forward_allowed -m mac --mac-source 00:00:00:00:00:00 -j ACCEPT
$IPT -A mac_forward_allowed -m mac --mac-source 00:00:00:00:00:00 -j ACCEPT
$IPT -A mac_forward_allowed -m mac --mac-source 00:00:00:00:00:00 -j ACCEPT
$IPT -A mac_forward_allowed -p ALL -j RETURN
#
$IPT -A white_forward_allowed -p ALL -s 88.88.88.1 -j ACCEPT
$IPT -A white_forward_allowed -p ALL -d 88.88.88.2 -j ACCEPT
$IPT -A white_forward_allowed -p ALL -s 88.88.88.3 -j ACCEPT
$IPT -A white_forward_allowed -p ALL -d 88.88.88.4 -j ACCEPT
$IPT -A white_forward_allowed -p ALL -s 88.88.88.5 -j ACCEPT
$IPT -A white_forward_allowed -p ALL -d 88.88.88.6 -j ACCEPT
$IPT -A white_forward_allowed -p ALL -s 88.88.88.7 -j ACCEPT
$IPT -A white_forward_allowed -p ALL -d 88.88.88.8 -j ACCEPT
$IPT -A white_forward_allowed -p ALL -j RETURN
#
$IPT -A published_service -p TCP --dport 3389 --destination 10.0.0.66 -j ACCEPT
$IPT -A published_service -j RETURN

$IPT -A INPUT -p ALL -i $LO_IF -j ACCEPT
$IPT -A INPUT -p ALL -j bad_packets
$IPT -A INPUT -p ALL -i $LAN_IF -s $LAN_NET -j ACCEPT
$IPT -A INPUT -p ALL -i $LAN_IF -d $LAN_BCAST -j ACCEPT

$IPT -A INPUT -p TCP -i $WAN_IF -j tcp_input
$IPT -A INPUT -p UDP -i $WAN_IF -j upd_input
$IPT -A INPUT -p ICMP -i $WAN_IF -j icmp_packets
$IPT -A INPUT -p ALL -i $WAN_IF -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

$IPT -A FORWARD -p ALL -j bad_packets
$IPT -A FORWARD -i $LAN_IF -p icmp -j ACCEPT
$IPT -A FORWARD -p TCP -i $LAN_IF -s $LAN_NET -j tcp_ports_forward_allowed
$IPT -A FORWARD -p UDP -i $LAN_IF -s $LAN_NET -j udp_ports_forward_allowed
$IPT -A FORWARD -p ALL -i $LAN_IF -s $LAN_NET -j mac_forward_allowed

$IPT -A FORWARD -s $WHITE_NET -o $WAN_IF -j white_forward_allowed
$IPT -A FORWARD -i $WAN_IF -d $WHITE_NET -j white_forward_allowed

$IPT -A FORWARD -i $WAN_IF -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -p ALL -i $WAN_IF -j published_service

$IPT -A FORWARD -p ALL -i $VLAN_2_IF -o $LAN_IF -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -p UDP -i $LAN_IF -o $VLAN_2_IF --dport 123 -j ACCEPT
$IPT -A FORWARD -p TCP -i $LAN_IF -o $VLAN_2_IF --dport 3389 -j ACCEPT
$IPT -A FORWARD -p TCP -i $LAN_IF -o $VLAN_2_IF --dport 16135 -j ACCEPT
$IPT -A FORWARD -p UDP -i $VLAN_2_IF -o $LAN_IF --dport 123 -j ACCEPT

$IPT -A FORWARD -p ALL -i $VLAN_3_IF -d 10.0.0.212 -j ACCEPT
$IPT -A FORWARD -p ALL -i $LAN_IF -s 10.0.0.212 -o $VLAN_3_IF -d $VLAN_3_NET -j ACCEPT

$IPT -A OUTPUT -p icmp -m conntrack --ctstate INVALID -j DROP

$IPT -t nat -A PREROUTING -p tcp -i $WAN_IF --dport 3389 -j DNAT --to-destination 10.0.0.66

$IPT -t nat -A POSTROUTING -o $WAN_IF -j SNAT --to-source $WAN_IP

echo "Done!"
strnd
()

wpad lag

Форум — Admin

Привет! В связи с внедрением Active Directory плавно перевожу людей на прокси-сервер с kerberos аутентификацией. С настройкой самой аутентификации проблем не возникло. Если прописать прокси вручную - то все работает без проблем.

Работает до тех пор, пока не включаю авто-определение прокси.

Wpad.dat опубликован с помощью lighttpd который находится на том же сервере, что и squid. Путь к скрипту автоконфигурации (в тестовой среде) передается групповой политикой, не анонсируется в DNS и DHCP.

function FindProxyForURL(url, host) {
        if (isInNet(dnsResolve(host), "10.0.0.0", "255.255.248.0"))
                return "DIRECT";
return "PROXY proxy.far.away.ru:3128"
}

Сама проблема в следующем: Описание симптомов звучит немного нелепо. При открытии браузера (проверял на IE9 и Google Chrome) стартовая страница не отображается. В статус-баре висит «соединение...» и так до того момента, пока браузер не прекратит свои попытки по таймауту. Если во время этого «соединения» открыть другую вкладку - там все грузится. В целом, на зависшей вкладке, помогает нажатие F5 :) Жаль пользователи не оценят такого решения проблемы. Куда мне посмотреть, господа?

lighttpd.conf не трогал. Может стоит? WPAD.dat написан корректно?

Squid 3.1.20
lighttpd 1.4.31
Debian 7 3.2.51-1 i686 
strnd
()

bash rsync backup problem

Форум — Admin

Привет! В попытках написать свой первый скрипт столкнулся с проблемой. При попытке его запуска получаю ошибку - Ошибка синтаксиса, неожиданный конец файла. Ошибка указывает на строку, следующую за последней, пустую. Возможно я пропустил где-то fi, не закрыл скобочку или что-то в этом духе, но я смотрю на эти 50 строк так долго, что в упор не вижу ошибки. Помогите пожалуйста, уважаемые) Так же с удовольствием послушаю как можно улучшить и упростить этого монстра)

#!/bin/bash
#
Source="/dir/to/source/"
NAS="//dir/to/network_share/"
Mountpoint="/mnt/nas/dir/"
Log="/dir/to/logs/rsyncing.log" # предполагается запуск скрипта с перенаправлением вывода в лог файл, который, в случае ошибки, пересылается на почту
Log_email="log@email.ru"
Success="0"
#
echo "Start time - $(date) "
if [ -d $Mountpoint ]
	then
		echo "Mountpoint already exists!"
	else
		echo "Creating mountpoint..."
		mkdir $Mountpoint
fi
sleep 3
#
mount | grep "$NAS"
if [ "$?" -eq $Success ]
	then
		echo "NAS server already mounted"
	else
		echo "Mount external storage..."
		mount.cifs  $NAS $Mountpoint -o username=login,password=pass
fi
sleep 3
#
mount | grep "$NAS"
if [ "$?" -eq $Success ]
	then
		echo "NAS mounted successfully!"
		echo "Synchronizating files from $(uname -n) to NAS..."
		rsync --recursive --links --times --perms --verbose --update $Source $Mountpoint
		wait
		echo "Synchronization completed at $(date)"
		sleep 3
		echo "Umounting NAS server..."
		umount $Mountpoint
		sleep 3
		echo "Removing mountpoint..."
		rmdir $Mountpoint
		sleep 3
	else
		echo "Error code "$?", rSynchronization from $(uname -n) to NAS failed, $(date) "
		sleep 3
		mail -s "rSync from $(uname -n) to NAS failed" "$Log_email" < $Log
fi
#
echo "Stop time - $(date) "

 ,

strnd
()

RSS подписка на новые темы