Na wstępie informuję, że siedziałem nad tym problemem już dłuższy czas i przeczesałem kawał odpowiedzi z Google - bez pozytywnego rezultatu.
Problem z regułką DNAT w przypadku przekierowania drugiego adresu publicznego na jednej karcie.
Chodzi o maszyną ruter z 4 eth - dla dwóch dostawców internetu i dwóch podsieci.
Kod: Zaznacz cały
ifconfig
Kod: Zaznacz cały
eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
inet addr:80.x.x.187 Bcast:80.x.x.191 Mask:255.255.255.248
inet6 addr: fe80::xxx:xxx:xxx:bc53/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:84431 errors:0 dropped:0 overruns:0 frame:0
TX packets:92566 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:38477503 (36.6 MiB) TX bytes:49884359 (47.5 MiB)
Memory:e1a00000-e1a20000
eth1 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
inet addr:62.x.x.146 Bcast:62.x.x.151 Mask:255.255.255.248
inet6 addr: fe80::xxx:xxx:xxx:f0ff/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1830350 errors:0 dropped:0 overruns:0 frame:0
TX packets:1703109 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1855751741 (1.7 GiB) TX bytes:976677441 (931.4 MiB)
Interrupt:16 Base address:0xe100
eth2 Link encap:Ethernet HWaddr 00:22:6b:bb:f1:7f
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::222:6bff:febb:f17f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:100086 errors:0 dropped:0 overruns:0 frame:0
TX packets:85805 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:50899082 (48.5 MiB) TX bytes:38915565 (37.1 MiB)
Interrupt:17 Base address:0x4000
eth3 Link encap:Ethernet HWaddr 00:15:17:9c:bc:51
inet addr:192.168.2.1 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::215:17ff:fe9c:bc51/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1710297 errors:0 dropped:0 overruns:0 frame:0
TX packets:1813275 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:982112668 (936.6 MiB) TX bytes:1852930388 (1.7 GiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:40 errors:0 dropped:0 overruns:0 frame:0
TX packets:40 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3852 (3.7 KiB) TX bytes:3852 (3.7 KiB)
Reguły realizujące ruch.
Dodana tablica dsl do rt_tables.
Kod: Zaznacz cały
ip route sh - tablica main
Kod: Zaznacz cały
80.x.x.184/29 dev eth0 proto kernel scope link src 80.x.x.187
62.x.x.144/29 dev eth1 proto kernel scope link src 62.x.x.146
192.168.2.0/24 dev eth3 proto kernel scope link src 192.168.2.1
192.168.1.0/24 dev eth2 proto kernel scope link src 192.168.1.1
default via 62.x.x.145 dev eth1
Kod: Zaznacz cały
ip route sh tab dsl
Kod: Zaznacz cały
80.x.x.184/29 dev eth0 proto kernel scope link src 80.x.x.187
192.168.2.0/24 dev eth3 proto kernel scope link src 192.168.2.1
192.168.1.0/24 dev eth2 proto kernel scope link src 192.168.1.1
default via 80.x.x.185 dev eth0
Kod: Zaznacz cały
ip ru sh
Kod: Zaznacz cały
0: from all lookup local
32765: from all fwmark 0x2 lookup dsl
32766: from all lookup main
32767: from all lookup default
Kod: Zaznacz cały
#!/bin/bash
echo "start"
ip route flush t dsl
echo "trasy do bram"
# trasa do bramy dsl
ip route add 80.x.x.184/29 dev eth0 proto kernel scope link src 80.x.x.187 table dsl
ip route add default via 80.x.X.185 table dsl
echo "zasady"
#konfiguracja tablic routingu
ip rule add fwmark 0x2 table dsl
echo "dodatkowe wpisy"
#dodatkowe wpisy dla lan
echo "1"
ip route add 192.168.1.0/24 dev eth2 proto kernel scope link src 192.168.1.1 table dsl
ip route add 192.168.2.0/24 dev eth3 proto kernel scope link src 192.168.2.1 table dsl
ip route flush cache
#echo 0 > /proc/sys/net/ipv4/all/rp_filter
echo 12
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 0 >$f
done
Kod: Zaznacz cały
#!/bin/bash
echo "jedziemy fire"
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ip_conntrack_irc
modprobe ip_nat_irc
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "polityka"
iptables -F
iptables -X
iptables -F -t nat
iptables -X -t nat
iptables -F -t mangle
iptables -X -t mangle
#iptables -F INPUT
#iptables -F OUTPUT
#iptables -F FORWARD
iptables -F PREROUTING -t nat
iptables -F POSTROUTING -t nat
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t mangle -A PREROUTING -i eth2 -j MARK --set-mark 0x2
iptables -t mangle -A PREROUTING -m mark --mark 0x2 -j CONNMARK --save-mark
#ustawieni adresow zrodlowych dla pakietow, ktore wylatuja poszczegolnymi interfejsami
#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 80.x.x.187
#iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth1 -j SNAT --to-source 62.x.x.146
iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
iptables -A POSTROUTING -t nat -o eth1 -j MASQUERADE
Teraz chciałbym dołożyć do tego prostego firewalla regułkę umożliwiającą przy użyciu drugiego ip publicznego dla neti, tj. 62.x.x.147, dostać się na komputer w podsieci 192.168.2.0/24 (dokładnie o adresie 192.168.2.14), na którym jest strona www odpalana poprzez https://192.168.2.14.
Użyta reguła umieszczona na samym końcu kodu rc_masq:
Kod: Zaznacz cały
iptables -A PREROUTING -t nat -i eth1 -d 62.x.x.147 -j DNAT --to-destination 192.168.2.14
Kod: Zaznacz cały
auto eth1
iface eth1 inet static
address 62.x.x.146
netmask 255.255.255.248
network 62.x.x.144
broadcast 62.x.x.151
gateway 62.x.x.145
dns-nameserver 213.241.79.37 213.241.79.38
auto eth1:1
iface eth1:1 inet static
address 62.x.x.147
netmask 255.255.255.248
Kod: Zaznacz cały
ip a a 62.x.x.147 dev eth1
Zauważyłem jedynie, że przy takiej regułce pakiety w nią nie wpadają - brak przyrostu:
Kod: Zaznacz cały
iptables -t nat -L -n -v
Kod: Zaznacz cały
iptables -A PREROUTING -t nat -d 62.x.x.147 -j DNAT --to-destination 192.168.2.14
Proszę o pomoc i z góry dziękuję Michał D