Создаю тестовую среду. В котором у меня есть производственная сеть, изолированная сеть и Linux-машина. На машине Linux с 2 сетевыми картами одна сетевая карта подключается к производственной сетевой среде, затем ей назначается IP-адрес, а другой - изолированной сети.
PROD-------(eth0)[LINUXMACHINE](eth1)-----ISOALTED NETWORK
В приведенном выше представлении после настройки одного сетевого адаптера (eth0) я могу выполнить эхо-запрос с рабочих сетевых компьютеров на Linux Machine. Затем я настроил eth1 как шлюз по умолчанию изолированной сети. После включения eth1 вы можете пинговать с и на Linux-машину в изолированный env. Теперь я не могу пинговать с Prod на Linux-машину. Если я отключу eth1, он будет работать, иначе не будет.
Я новичок в сети. Я точно не знаю, в чем проблема и что я сделал не так. Я включил следующие
IP Forwarding, MASQUERADE и некоторые правила iptables
Любой может предложить мне хороший способ заставить эту работу работать.
заранее спасибо
отредактировал
ifconfig
eth0 Link encap:Ethernet HWaddr 00:50:56:8f:68:e7
inet addr:192.168.108.13 Bcast:192.168.108.255 Mask:255.255.255.0
inet6 addr: fe80::250:56ff:fe8f:68e7/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:335609 errors:0 dropped:3107 overruns:0 frame:0
TX packets:48332 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:131610506 (131.6 MB) TX bytes:4424737 (4.4 MB)
eth1 Link encap:Ethernet HWaddr 00:50:56:8f:0a:c6
inet addr:192.168.103.1 Bcast:192.168.103.255 Mask:255.255.255.0
inet6 addr: fe80::250:56ff:fe8f:ac6/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:18773 errors:0 dropped:0 overruns:0 frame:0
TX packets:35645 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1816084 (1.8 MB) TX bytes:50940327 (50.9 MB)
iptables -t нат -nvL
Chain PREROUTING (policy ACCEPT 3 packets, 375 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
31 2604 DNAT all -- * * 0.0.0.0/0 192.168.103.246 to:192.168.103.246
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
1985 138K MASQUERADE all -- * eth0 0.0.0.0/0 0.0.0.0/0
0 0 MASQUERADE all -- * eth0 0.0.0.0/0 0.0.0.0/0
Chain VL (0 references)
pkts bytes target prot opt in out source destination
iptables -nvL
Chain INPUT (policy ACCEPT 49159 packets, 38M bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 32 packets, 3393 bytes)
pkts bytes target prot opt in out source destination
13459 582K ACCEPT all -- eth1 * 0.0.0.0/0 0.0.0.0/0
21264 38M ACCEPT all -- eth0 eth1 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT all -- eth1 eth0 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
19109 1919K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0
cat /proc/sys/net/ipv4/ip_forward 1
Поскольку оба интерфейса находятся в одной подсети, просто соедините их, используя следующие команды
brctl addbr bridge1
brctl addif bridge1 eth0
brctl addif bridge1 eth1
это должно работать
Вы используете одну и ту же подсеть в обеих сетях, по сути, это одна и та же сеть. Сначала измените это, например, используя 192.168.109.0/255.255.255 в качестве подсети для вашей лаборатории тестирования, и повторите попытку.
Хорошо, теперь, когда вы разделились на две подсети, я заметил еще одну вещь: у вас есть некоторые правила брандмауэра и некоторые правила NAT, которые, по крайней мере, для меня не имеют смысла. Попробуйте сбросить свои правила iptables:
iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z
iptables -F
iptables -X
iptables -Z
Потом прочитал только NAT:
iptables -t nat -A POSTROUTING -o eth0 -J MASQUERADE
Затем попробуйте выполнить эхо-запрос с машины в частной локальной сети, на производственной, все должно работать.
Итак, насколько я понимаю, у вас следующая ситуация
subnet1 ---> eth0 -Linux PC- eth1 <----subnet 2
Вы пытаетесь использовать этот Linux-ПК посередине в качестве маршрутизатора между двумя подсетями?
В этом случае сделайте 2 вещи:
1) Отключите iptables (просто для проверки. Вы можете включить их позже и определить свои правила)
2) Включите переадресацию IP на ПК с Linux. Добавьте это в свой /etc/sysctl.conf
ipv4.ip_forward = 1
и беги
sysctl -p
Теперь в подсети 1 на хостах, которым нужен доступ к подсети 2, вам нужно будет настроить статические маршруты.
Предположим следующие подсети (на основе вашего вопроса)
подсеть 1 192.168.108.0/24 eth0 .13
подсеть 2 192.168.103.0/24 eth1 .1
В этом случае на хостах в подсети 1 вам нужно будет запустить это
route add -net 192.168.103.0/24 gw 192.168.108.13
И на хостах в подсети 2 вам нужно будет запустить это
route add -net 192.168.108.0/24 gw 192.168.103.1
После этого пинг, инициированный с хостов в подсети 1, на хосты в подсети 2 должен работать. И наоборот.