1) При старой конфигурации, настройки которые приводил выше, и после выполнения скрипта(ниже) вижу одно и тоже используя для “захвата” сетевые интерфейсы: eth1 и eth1:9. Почему вижу пинг провайдера “через” eth1, логичней бы было видеть его “через” eth1:9, на него же прописан адрес ipprovaider2?
(догадываюсь, что интерфейс физически один и тот же, но не понимаю принцип работы команды tcpdump и алиаса, не понимаю определение для опции –i в tcpdump - опция которая указывается какой интерфейс будет использоваться для “захвата пакетов” - http://ru.wikipedia.org/wiki/Tcpdump)
Понимаю что использовать раздельные сетевые карты было бы правильнее, все-таки алиасом можно обойтись, что бы разделять каналы?
# tcpdump -i eth1 host ipprov2.58 -n
12:05:55.754064 IP ip_client > ipprov2.58: ICMP echo request, id 7817, seq 18617, length 40
12:05:55.754098 IP ipprov2.58 > ip_client: ICMP echo reply, id 7817, seq 18617, length 40
# tcpdump -i eth1:9 host ipprov2.58 –n
12:09:52.253181 IP ip_client > ipprov2.58: ICMP echo request, id 7817, seq 24506, length 40
12:09:52.253214 IP ipprov2.58 > ip_client: ICMP echo reply, id 7817, seq 24506, length 40
2) После выполнения сего скрипта, УРА! провайдер который не мог меня пропинговать смог это сделать.
______________________________________
#!/bin/bash
#
echo "101 T1" >> /etc/iproute2/rt_tables
echo "102 T2" >> /etc/iproute2/rt_tables
#interface na provaydera
IF1=eth1
IF2=eth1:9
#
IP1=ipprov1.66
IP2= ipprov2.58
#
P1=gwprov1.65
P2= gwprov2.57
#
P1_NET=netprov1.64/26
P2_NET= netprov2.56/30
#
PC=192.168.42.251
#
ip route add $P1_NET dev $IF1 src $IP1 table T1
ip route add default via $P1 table T1
#
ip route add $P2_NET dev $IF2 src $IP2 table T2
ip route add default via $P2 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 fwmark 2 table T2
___________________________________
стало так:
root# ip ru sh
0: from all lookup local
32763: from all fwmark 0x2 lookup T2
32764: from ipprov2.58 lookup T2
32765: from ipprov1.66 lookup T1
32766: from all lookup main
32767: from all lookup default
root# ip ro sh
192.168.over.50 via 192.168.over.17 dev eth1 metric 10
natprov2.56/30 dev eth1 proto kernel scope link src ipprov2.58
192.168. over.16/28 dev eth1 proto kernel scope link src 192.168. over.18
natprov1.64/26 dev eth1 proto kernel scope link src ipprov1.66
192.168.42.0/24 dev eth0 proto kernel scope link src 192.168.42.1
127.0.0.0/8 dev lo scope link
default via gwprov1.65 dev eth1 metric 10
3)
root@libra:/distr/11.02.2011/REZERV# ip route list table T1
natprov1.64/26 dev eth1 scope link src ipprov1.66
default via gwprov1.65 dev eth1
root@libra:/distr/11.02.2011/REZERV# ip route list table T2
natprov2.56/30 dev eth1 scope link src ipprov2.58
default via gwprov2.57 dev eth1
После выполнения скрипта, в T2 все таки не записалось eth1:9, но зато указано через какой шлюз отправлять определившись по src, то есть по идее это работает правильно? т.е. пакеты уйдут по тому каналу по которому пришли.
4) Но проброса порта не получилось, по этим правилам:
$IPTABLES -t nat -A PREROUTING -i eth1 -d $GLOBAL_IP_PRIM -p tcp --dport 1028 -j DNAT --to-destination $PC
$IPTABLES -t nat -A PREROUTING -i eth1:9 -d $GLOBAL_IP_SEC -p tcp --dport 1028 -j DNAT --to-destination $PC
$IPTABLES -t mangle -N CT
$IPTABLES -t mangle -A CT -i eth1 -p tcp --dport 1028 -j CONNMARK --set-mark 1
$IPTABLES -t mangle -A CT -i eth1:9 -p tcp --dport 1028 -j CONNMARK --set-mark 2
$IPTABLES -t mangle -A PREROUTING -i $LOCAL_ETH -m state --state ESTABLISHED -j CONNMARK --restore-mark
$IPTABLES -t mangle -A FORWARD -i eth1 -m state --state NEW -j CT
$IPTABLES -t mangle -A FORWARD -i eth1:9 -m state --state NEW -j CT
_
Не подходит CONNMARK для таких вещей eth1:9, он будет считать его как eth1, правильно?
Все таки необходимо использовать другой компьютер с фаерволом или дополнительную физическую карту, с алиасом сетевой не получится?