Перечитал на форуме ВСЕ. уже голова кругом идет. Поумнел на целый килограм :) НО.....Есть задача:
2 провайдера, сделать сервак доступным из вне как с одного так и с другого провайдера.
ОСь: Debian Lenny 5.0
Конфиг сети:
# cat /etc/network/interfaces
allow-hotplug eth0
iface eth0 inet static #локалка
address 192.168.0.2
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
allow-hotplug eth1
iface eth1 inet static #провайдер 1
address 172.16.0.2
netmask 255.255.255.0
network 172.16.0.0
broadcast 172.16.0.255
gateway 172.16.0.1
dns-nameservers 172.16.0.1
allow-hotplug eth2 #провайдер 2
iface eth2 inet static
address 172.16.1.2
netmask 255.255.255.0
network 172.16.1.0
broadcast 172.16.1.255
gateway 172.16.1.1
dns-nameservers 172.16.1.1
Добавляю 2 таблички:
echo "101 T1" >> /etc/iproute2/rt_tables
echo "102 T2" >> /etc/iproute2/rt_tables
Таблици маршрутизации заполняются следующим сткиптом:
#cat routes
IF1=eth1
IF2=eth2
IP1=172.16.0.2
IP2=172.16.1.2
P1=172.16.0.1
P2=172.16.1.1
P1_NET=172.16.0.0/24
P2_NET=172.16.1.0/24
SRV1=192.168.0.237
SRV2=192.168.0.238
ip route add $P1_NET dev $IF1 src $IP1 table T1
ip route add default via $IP1 table T1
ip route add $P2_NET dev $IF2 src $IP2 table T2
ip route add default via $IP2 table T2
ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2
ip route add default via $P1 metric 10
ip rule add from $IP1 table T1
ip rule add from $IP2 table T2
ip rule add from $SRV1 fwmark 10 table T1
ip rule add from $SRV2 fwmark 20 table T2
Фаервол таким скриптом:
#cat firewall
echo 1 > /proc/sys/net/ipv4/ip_forward
EXT1_DEV=eth1
EXT1_IP=172.16.0.2
EXT2_DEV=eth2
EXT2_IP=172.16.1.2
DMZ0_DEV=eth0
DMZ0_IP=192.168.0.2
DMZ0_NET=192.168.0.0/24
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p icmp --icmp-type any -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type any -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type any -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i $DMZ0_DEV -s $DMZ0_NET -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i $DMZ0_DEV -s $DMZ0_NET -p tcp --dport 3389 -j ACCEPT
iptables -A INPUT -i $DMZ0_DEV -s $DMZ0_NET -p udp --dport 53 -j ACCEPT
iptables -A INPUT -i $DMZ0_DEV -s $DMZ0_NET -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -i $DMZ0_DEV -s $DMZ0_NET -p tcp --dport 143 -j ACCEPT
iptables -A INPUT -i $DMZ0_DEV -s $DMZ0_NET -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -i $DMZ0_DEV -s $DMZ0_NET -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -i $DMZ0_DEV -s $DMZ0_NET -p tcp --dport 465 -j ACCEPT
iptables -A INPUT -i $DMZ0_DEV -s $DMZ0_NET -p tcp --dport 995 -j ACCEPT
iptables -A FORWARD -i $DMZ0_DEV -o $EXT1_DEV -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -i $EXT1_DEV -o $DMZ0_DEV -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $DMZ0_DEV -o $EXT2_DEV -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -i $EXT2_DEV -o $DMZ0_DEV -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $EXT1_DEV -o $DMZ0_DEV -p tcp -d 192.168.0.237 --dport 3389 -j ACCEPT
iptables -A FORWARD -i $EXT2_DEV -o $DMZ0_DEV -p tcp -d 192.168.0.238 --dport 3389 -j ACCEPT
iptables -t nat -A PREROUTING -i $EXT1_DEV -d $EXT1_IP -p tcp --dport 3389 -j DNAT --to-destination 192.168.0.237:3389
iptables -t nat -A PREROUTING -i $EXT2_DEV -d $EXT2_IP -p tcp --dport 3389 -j DNAT --to-destination 192.168.0.238:3389
iptables -t mangle -A PREROUTING -i eth0 -s 192.169.0.237 -p tcp -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -i eth0 -s 192.169.0.238 -p tcp -j MARK --set-mark 20
iptables -A INPUT -s 0/0 -p tcp --dport 22 -j ACCEPT
Как видно из скрипта виндовая машина имеет 2 айпихи 192.168.0.237 и 192.168.0.238. Так вот, после всех этих манипуляций я могу работать из вне по интерфейсу первого провайдера и не могу по второму. Тыкните, пожалуйста, носом, где я провтыкал.... Принимается любой конструктив. Спасибо