Добрый день! В данный момент на шлюзе имеются такие настройки:
# ifconfig
eth0 Link encap:Ethernet HWaddr cc:cc:cc:cc:cc:cc
inet addr:192.168.200.10 Bcast:192.168.200.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:29 Base address:0xe000
eth1 Link encap:Ethernet HWaddr dd:dd:dd:dd:dd:dd
inet6 addr: fe80::214:d1ff:fe15:bd24/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1400 Metric:1
RX packets:13045311 errors:0 dropped:0 overruns:0 frame:0
TX packets:12113512 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:9394208816 (9.3 GB) TX bytes:2627579737 (2.6 GB)
Interrupt:21 Base address:0xbc00
eth1:1 Link encap:Ethernet HWaddr dd:dd:dd:dd:dd:dd
inet addr:11.22.33.205 Bcast:11.22.33.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1400 Metric:1
Interrupt:21 Base address:0xbc00
eth2 Link encap:Ethernet HWaddr ee:ee:ee:ee:ee:ee
inet addr:192.168.1.241 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::214:d1ff:fe10:c40e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:14237829 errors:0 dropped:341 overruns:0 frame:0
TX packets:15173684 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3663482603 (3.6 GB) TX bytes:10402933575 (10.4 GB)
Interrupt:20 Base address:0x2000
eth2:1 Link encap:Ethernet HWaddr ee:ee:ee:ee:ee:ee
inet addr:192.168.1.240 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:20 Base address:0x2000
eth2:2 Link encap:Ethernet HWaddr ee:ee:ee:ee:ee:ee
inet addr:10.1.1.1 Bcast:10.255.255.255 Mask:255.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:20 Base address:0x2000
lo Link encap:Локальная петля (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:484108 errors:0 dropped:0 overruns:0 frame:0
TX packets:484108 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:182401129 (182.4 MB) TX bytes:182401129 (182.4 MB)
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:172.16.130.1 P-t-P:172.16.130.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:56258 errors:0 dropped:0 overruns:0 frame:0
TX packets:36244 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:4824487 (4.8 MB) TX bytes:6445844 (6.4 MB)
11.22.33.205 - наш выделенный IP-адрес
# iptables -tnat -L -n
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- 0.0.0.0/0 11.22.33.205 tcp dpt:2447 to:192.168.1.247:22
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- 10.1.1.5 0.0.0.0/0 mark match !0x1 to:11.22.33.205
SNAT all -- 172.16.130.0/24 0.0.0.0/0 to:192.168.1.240
SECOND_ROUTE all -- 192.168.1.0/24 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain SECOND_ROUTE (1 references)
target prot opt source destination
RETURN all -- 0.0.0.0/0 192.168.1.0/24
SNAT all -- 192.168.1.0/24 0.0.0.0/0 mark match !0x1 to:11.22.33.205
# iptables -tmangle -L -n
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
MARK all -- 0.0.0.0/0 192.168.3.0/24 MARK xset 0x1/0xffffffff
MARK all -- 0.0.0.0/0 10.10.10.0/24 MARK xset 0x1/0xffffffff
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
MARK all -- 0.0.0.0/0 192.168.3.0/24 MARK xset 0x1/0xffffffff
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
# iptables -tfilter -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
# ip rule
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
# ip route show table main
55.66.77.20 via 11.22.33.205 dev eth1
172.16.130.2 dev tun0 proto kernel scope link src 172.16.130.1
172.16.130.0/24 via 172.16.130.2 dev tun0
11.22.33.0/24 dev eth1 proto kernel scope link src 11.22.33.205
192.168.3.0/24 dev eth1 scope link src 192.168.1.241
192.168.1.0/24 dev eth2 proto kernel scope link src 192.168.1.241
192.168.200.0/24 dev eth0 proto kernel scope link src 192.168.200.10
10.0.0.0/8 dev eth2 proto kernel scope link src 10.1.1.1
default via 11.22.33.205 dev eth1 scope link
# ip route show table local
local 192.168.200.10 dev eth0 proto kernel scope host src 192.168.200.10
broadcast 192.168.1.0 dev eth2 proto kernel scope link src 192.168.1.241
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
broadcast 192.168.200.255 dev eth0 proto kernel scope link src 192.168.200.10
broadcast 11.22.33.0 dev eth1 proto kernel scope link src 11.22.33.205
broadcast 10.0.0.0 dev eth2 proto kernel scope link src 10.1.1.1
local 172.16.130.1 dev tun0 proto kernel scope host src 172.16.130.1
local 192.168.1.240 dev eth2 proto kernel scope host src 192.168.1.241
local 192.168.1.241 dev eth2 proto kernel scope host src 192.168.1.241
broadcast 192.168.1.255 dev eth2 proto kernel scope link src 192.168.1.241
broadcast 10.255.255.255 dev eth2 proto kernel scope link src 10.1.1.1
broadcast 192.168.200.0 dev eth0 proto kernel scope link src 192.168.200.10
broadcast 11.22.33.255 dev eth1 proto kernel scope link src 11.22.33.205
local 10.1.1.1 dev eth2 proto kernel scope host src 10.1.1.1
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
local 11.22.33.205 dev eth1 proto kernel scope host src 11.22.33.205
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
# route -n
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
55.66.77.20 11.22.33.205 255.255.255.255 UGH 0 0 0 eth1
172.16.130.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
172.16.130.0 172.16.130.2 255.255.255.0 UG 0 0 0 tun0
11.22.33.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
192.168.200.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth2
0.0.0.0 11.22.33.205 0.0.0.0 UG 0 0 0 eth1
Есть IPSec, настроен между нашим 11.22.33.205 и удалённым 55.66.77.20 шлюзами. В сети на нескольких компах стоят тестовые веб-сервера, на шлюзе стоит nginx, который проксирует запросы извне в сеть. Плюс ко всему, в iptables существует прямой проброс портов для доступа на компы внутри сети. На данный момент всё работает, как требуется.
В сети есть и другой шлюз - 192.168.1.250. Хочу сделать таким образом, чтобы интернет шёл через него, IPSec же должен гулять по первому каналу. А также должны работать внутренние сайты извне и доступ ко внутренним компам через проброс портов. Перенастраиваю следующим образом:
В iptables таблице nat меняю последнюю строку в цепочке SECOND_ROUTE:
Chain SECOND_ROUTE (1 references)
target prot opt source destination
RETURN all -- 0.0.0.0/0 192.168.1.0/24
SNAT all -- 192.168.1.0/24 0.0.0.0/0 mark match !0x1 to:192.168.1.241
После етого:
# route del default
# route add default gw 192.168.1.250
# ip route add 55.66.77.20 via 11.22.33.205
# ip rule add from 11.22.33.205 table 100
# ip route add default via 11.22.33.205 table 100
Получается следующая маршрутизация:
# ip rule
0: from all lookup local
32765: from 11.22.33.205 lookup 100
32766: from all lookup main
32767: from all lookup default
# ip route show table local
local 192.168.200.10 dev eth0 proto kernel scope host src 192.168.200.10
broadcast 192.168.1.0 dev eth2 proto kernel scope link src 192.168.1.241
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
broadcast 192.168.200.255 dev eth0 proto kernel scope link src 192.168.200.10
broadcast 11.22.33.0 dev eth1 proto kernel scope link src 11.22.33.205
broadcast 10.0.0.0 dev eth2 proto kernel scope link src 10.1.1.1
local 172.16.130.1 dev tun0 proto kernel scope host src 172.16.130.1
local 192.168.1.240 dev eth2 proto kernel scope host src 192.168.1.241
local 192.168.1.241 dev eth2 proto kernel scope host src 192.168.1.241
broadcast 192.168.1.255 dev eth2 proto kernel scope link src 192.168.1.241
broadcast 10.255.255.255 dev eth2 proto kernel scope link src 10.1.1.1
broadcast 192.168.200.0 dev eth0 proto kernel scope link src 192.168.200.10
broadcast 11.22.33.255 dev eth1 proto kernel scope link src 11.22.33.205
local 10.1.1.1 dev eth2 proto kernel scope host src 10.1.1.1
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
local 11.22.33.205 dev eth1 proto kernel scope host src 11.22.33.205
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
# ip route show table main
55.66.77.20 via 11.22.33.205 dev eth1
172.16.130.2 dev tun0 proto kernel scope link src 172.16.130.1
172.16.130.0/24 via 172.16.130.2 dev tun0
11.22.33.0/24 dev eth1 proto kernel scope link src 11.22.33.205
192.168.3.0/24 dev eth1 scope link src 192.168.1.241
192.168.1.0/24 dev eth2 proto kernel scope link src 192.168.1.241
192.168.200.0/24 dev eth0 proto kernel scope link src 192.168.200.10
10.0.0.0/8 dev eth2 proto kernel scope link src 10.1.1.1
default via 192.168.1.250 dev eth2
# ip route show table 100
default via 11.22.33.205 dev eth1
Теперь проблемы:
- перестаёт пинговатся 11.22.33.205 с компов из сети. Извне внутренние сайты остаются доступными - nginx отрабатывает нормально.
- не работает проброс портов извне. Последнее действие, которое iptables совершает с пакетом - DNAT, дальше я пакета не вижу нигде.
Как побороть ети проблемы?