Как установить связь между производственной сетью и изолированной сетью, используя машину Linux в качестве маршрутизатора?
Я создаю тестовую среду. В котором у меня есть производственная сеть, изолированная сеть и машина linux. В машине Linux с двумя сетевыми картами один сетевой адаптер подключен к рабочей сетевой среде, затем ему назначается IP-адрес, а другой является изолированной сетью.
PROD-------(eth0)[LINUXMACHINE](eth1)-----ISOALTED NETWORK
В приведенном выше представлении после настройки одного сетевого адаптера (eth0) я могу выполнить команду ping с компьютеров рабочей сети на Linux Machine. Затем я настраиваю eth1 на шлюз по умолчанию изолированной сети. После включения eth1 может отправлять эхо-запросы с Linux-компьютера на изолированную среду. Теперь я не могу пинговать с Prod на Linux-машину. Если я отключаю средство eth1, оно будет работать, иначе не получится.
Я новичок в сети. Я не знаю точно, где проблема и что я сделал не так. Я включил следующее
IP-пересылка, 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 nat -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
3 ответа
Поскольку оба интерфейса находятся в одной подсети, просто соедините их, используя команды ниже
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 подсетями?
В этом случае сделайте 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
После этого должен работать ping, инициированный с хостов в подсети 1 на хосты в подсети 2. И наоборот.