Значит так. Есть сервер под FreeBSD.
Интерфейсы:
fxp0 - локальная сеть ИП 192.168.0.1 маска 192.168.0.0/24
rl0 - радиоканал в инет 80.90.224.48 маска 80.90.224.0/24 гейт прова 80.90.224.1
dvb0 - skystar 1 карта на спутниковый инет ИП 192.168.4.1
gre0 - vpn туннель на спутникового прова ип 192.168.101.89->192.168.101.88
есть ип спутникового прова под которым мы должны быть видны в инете 211.131.141.151
На сервере есть ДНС с слейв зоной
Так же есть squid
Делаю так ipfw add 01001 fwd 192.168.0.1,3128 tcp from 192.168.0.0/24 to any 80 in recv fxp0
Т.е. всё ходит через сквид даже если он не прописан в настройках клиента...
Вот пытаюсь сделать так, чтоб все запросы на ДНС от клиентов шли через радиоканал. Все ответы на обращения о слейв зоне тоже уходили через радиоканал. Почта ходила через радиоканал т.к. MX для зоны указывает на этот сервер...
Вот скрипт ipfw:
#----------Route via Earth for Sites
#----------Route from Sat
add 00100 divert 8669 ip from any to any via dvb0
#----------Route via Earth for mail
add 00202 divert 8668 tcp from me to not 192.168.0.0/24 25 out xmit rl0
add 00203 divert 8668 tcp from me 25 to not 192.168.0.0/24 out xmit rl0
add 00204 divert 8668 udp from me to not 192.168.0.0/24 25 out xmit rl0
add 00205 divert 8668 udp from me 25 to not 192.168.0.0/24 out xmit rl0
#----------Route via Earth for DNS
add 00206 divert 8668 tcp from me to not 192.168.0.0/24 53 out xmit rl0
add 00207 divert 8668 tcp from me 53 to not 192.168.0.0/24 out xmit rl0
add 00208 divert 8668 udp from me to not 192.168.0.0/24 53 out xmit rl0
add 00209 divert 8668 udp from me 53 to not 192.168.0.0/24 out xmit rl0
#----------Route via Earth
add 00275 divert 8668 ip from any to 80.90.224.1 in recv rl0
add 00280 divert 8668 ip from me to any out xmit rl0
add 00285 divert 8668 ip from 192.168.0.0/24 to any out xmit rl0
#----------Route via Sat
add 00290 divert 8669 ip from me to any out xmit gre0
add 00295 divert 8669 ip from 192.168.0.0/24 to any out xmit gre0
#----------Forward to Squid
add 01001 fwd 192.168.0.1,3128 tcp from 192.168.0.0/24 to any 80 in recv fxp0
#----------Servers
add 01002 allow ip from 192.168.0.2 to any in recv fxp0
add 01002 allow ip from any to 192.168.0.2
... пользователи ...
add 01103 allow ip from 192.168.0.103 to any in recv fxp0
add 01103 allow ip from any to 192.168.0.103
#----------Allow iface
add 03000 allow ip from any to any via lo0
add 03001 allow ip from any to me via rl0
add 03002 allow ip from me to any via rl0
add 03003 allow ip from any to any via dvb0
add 03004 allow ip from any to any via gre0
Запускаю natd:
/sbin/natd -f /etc/natd.conf -n rl0 -p 8668
/sbin/natd -f /etc/natd.conf -a 211.131.141.151 -p 8669
natd.conf
log no
verbose no
use_sockets yes
same_ports yes
netstat -nr
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.101.88 UGSc 56 15353 gre0
80.90.224/24 link#2 UC 3 0 rl0
80.90.224.1 00:e0:4c:39:0f:0e UHLW 4 18 rl0 1134
127.0.0.1 127.0.0.1 UH 0 24 lo0
192.168.0 link#1 UC 12 0 fxp0
192.168.0.1 00:80:5f:77:6c:bb UHLW 0 82 lo0
192.168.0.2 00:30:4f:17:6c:51 UHLW 1 4 fxp0 1066
192.168.0.103 00:02:44:51:7a:88 UHLW 1 62 fxp0 1161
192.168.4 link#6 UC 0 0 dvb0
192.168.101.88 192.168.101.89 UH 55 0 gre0 =>
192.168.101.88/32 gre0 USc 0 0 gre0
212.165.117.12 80.90.224.1 UGHS 2 32368 rl0
ifconfig
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
ether 00:80:5f:77:6c:bb
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 80.90.224.28 netmask 0xffffff00 broadcast 80.90.224.255
ether 00:02:44:52:e5:f5
media: Ethernet autoselect (10baseT/UTP)
status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.0.1 netmask 0xff000000
ppp0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
sl0: flags=c010<POINTOPOINT,LINK2,MULTICAST> mtu 552
dvb0: flags=8803<UP,BROADCAST,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.4.1 netmask 0xffffff00 broadcast 192.168.4.255
ether 00:d0:5c:3d:15:de
gre0: flags=9051<UP,POINTOPOINT,RUNNING,LINK0,MULTICAST> mtu 1476
tunnel inet 80.90.224.48 --> 212.165.117.12
inet 192.168.101.89 --> 192.168.101.88 netmask 0xffffff00
Вот.. Вот такая петрушка... Как это правильно сделать?
Раньше на линухе работало так
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A POSTROUTING -s 192.168.0.0/255.255.255.0 -o eth1 -j SNAT --to-source 80.90.224.48
-A POSTROUTING -o gre1 -j SNAT --to-source 211.131.141.151