Некоторое время уже создавал тему по настройке маршритизации трафика по двум провайдерам и вроед все получилось (можно глянуть тут). Но сейчас встал вопрос о дополнительной внутренней маршрутизации. Итак, напомню что есть:
- ETH1: содержит
- адрес N11_IP, подсеть N11_NET
- адрес N12_IP, подсеть N12_NET
- адрес N13_IP, подсеть N13_NET
- ETH2:
- адрес N21_IP, подсеть N21_NET
- ETH3:
- адрес N31_IP, подсеть N3_NET, шлюз провайдера N3_GATE - белый
- адрес N32_IP, подсеть N3_NET
- адрес N33_IP, подсеть N3_NET
- адрес N34_IP, подсеть N3_NET
- ETH4:
- адрес N41_IP, подсеть N41_NET, шлюз провайдера N41_GATE - серый
Трафик проброшен по каналам
- N11_NET > N3_GATE
- N12_NET > N3_GATE
- N13_NET > N3_GATE
- N21_NET > N41_GATE
Ну и то, как все это сделано
#!/bin/sh
iptables -F iptables -F -t nat iptables -F -t mangle iptables -F -t filter
ip route flush cache
##############################################################################
SRC_HOST=^_^ DEST_HOST=^_^
##############################################################################
iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT iptables -A OUTPUT -j ACCEPT
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p udp -m state --state ESTABLISHED,RELATED -j ACCEPT
############################################################################## # фильтрация входящих соединений #############################################
iptables -A INPUT -p tcp --dport 80 -j ACCEPT # www iptables -A INPUT -p tcp --dport 53 -j ACCEPT # DNS iptables -A INPUT -p tcp --dport 5080 -j ACCEPT # AOM ??? iptables -A INPUT -p udp --dport 53 -j ACCEPT # DNS #iptables -A INPUT -p udp --dport 953 -j ACCEPT # DNS iptables -A INPUT -p tcp --dport 953 -j ACCEPT # DNS-rndc #iptables -A INPUT -p udp -d >_< --dport 67 -j ACCEPT # DHCPD iptables -A INPUT -p udp --dport 123 -j ACCEPT # NTP iptables -A INPUT -p tcp --dport 21 -j ACCEPT # FTP
iptables -I INPUT -p tcp --destination-port 10090:10100 -j ACCEPT
#iptables -A INPUT -j DROP # правило по умолчанию iptables -P INPUT DROP
# фильтрация трафика #########################################################
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -j ACCEPT
######################################################################################## ######################################################################################## ######################################################################################## # адресация роутинга ###################################################################
iptables -t mangle -A PREROUTING -s $SRC_HOST -d $DEST_HOST -j MARK --set-mark 0
iptables -t mangle -A PREROUTING -s $N11_NET -j MARK --set-mark 100 iptables -t mangle -A PREROUTING -s $N12_NET -j MARK --set-mark 100 iptables -t mangle -A PREROUTING -s $N13_NET -j MARK --set-mark 100 iptables -t mangle -A PREROUTING -s $N21_NET -j MARK --set-mark 200
######################################################################################## ######################################################################################## ######################################################################################## # включение роутинга ###################################################################
iptables -t nat -A POSTROUTING -m mark --mark 100 -j SNAT --to-source $N31_IP iptables -t nat -A POSTROUTING -m mark --mark 200 -j SNAT --to-source $N41_IP
iptables -A INPUT -s #SOME_SERV -j ACCEPT
iptables-save > /etc/sysconfig/iptables
#!/bin/sh
ip route flush all table main ip route flush all table T1 ip route flush all table T2 ip route flush all table T3
ip route add $N11_NET dev $ETH1 src $N11_IP table main ip route add $N12_NET dev $ETH1 src $N12_IP table main ip route add $N13_NET dev $ETH1 src $N13_IP table main ip route add $N21_NET dev $ETH2 src $N21_IP table main ip route add $N41_NET dev $ETH4 src $N41_IP table main ip route add $N31_NET dev $ETH3 src $N31_IP table main
ip route add default via $N3_GATE ip route add $SOME_HOST via $N3_GATE
ip route add $N11_NET dev $ETH1 src $N11_IP table T1 ip route add $N12_NET dev $ETH1 src $N12_IP table T1 ip route add $N31_NET dev $ETH3 src $N31_IP table T1 ip route add default via $N3_GATE dev $ETH3 table T1
ip route add $N41_NET dev $ETH4 src $N41_IP table T2 ip route add $N13_NET dev $ETH1 src $N13_IP table T2 ip route add $N21_NET dev $ETH2 src $N21_IP table T2 ip route add default via $N41_GATE table T2
ip route flush cache
ip rule flush
ip rule add from all table main pref 32766 ip rule add from all table default pref 32767
ip rule add fwmark 100 table T1 pref 1000 ip rule add fwmark 200 table T2 pref 1001
Требуется - разрешить связь между компьютерами:
- $H1_N12 > $H2_N13
- $H3_N13 > $H4_N12
- $H5_N21 > $N12_NET
Пробовал разные варианты и видимо не отгадал ниодного рабочего )