Переадресация портов iptables только для определенного диапазона IP
Я использую контейнеры LXC. Каждый из моих контейнеров имеет IP-адрес в 10.0.3.0/24. Я хочу, чтобы пакеты, поступающие на мой хост через определенный порт, были перенаправлены в контейнер, поэтому я использую это правило:
iptables -t nat -A PREROUTING -p tcp --dport 3000 -j DNAT --to-destination 10.0.3.4:3000
Это позволяет делать (вне пакета)# -> ВЕДУЩИЙ: 3000 -> КОНТЕЙНЕР: 3000
Работает отлично. Однако, когда я нахожусь в контейнере (не тот, который использовался в этом предыдущем правиле), и я хочу получить доступ к другому хосту (скажем, HOST2) на порту 3000, мой пакет перенаправляется в мой контейнер. Оно делает:
(внутри пакета контейнера)# -> HOST2:3000 -> HOST:3000 -> КОНТЕЙНЕР: 3000
вместо (внутри пакета контейнера)# -> HOST2:3000 -> HOST:3000 -> HOST2: 3000
Я пытался изменить свое правило выше, чтобы
iptables -t nat -A PREROUTING -s 10.0.3.0/24 -p tcp --dport 3000 -j DNAT --to-destination 10.0.3.4:3000
чтобы сказать: если пакет приходит из контейнера, не применяйте правило, однако это не работает. Любая помощь будет отличной, С уважением
Вот мои правила iptables:
Chain PREROUTING (policy ACCEPT 154 packets, 29925 bytes)
pkts bytes target prot opt in out source destination
4 240 DNAT tcp -- * * 10.0.3.0/24 0.0.0.0/0 tcp dpt:3000 to:10.0.3.5:3000
3 180 DNAT tcp -- * * 10.0.3.0/24 0.0.0.0/0 tcp dpt:3001 to:10.0.3.6:3001
Chain INPUT (policy ACCEPT 126 packets, 28400 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 25 packets, 1900 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 29 packets, 2140 bytes)
pkts bytes target prot opt in out source destination
28 1525 MASQUERADE all -- * * 10.0.3.0/24 !10.0.3.0/24
Под "не работает" я имею в виду, что когда я сверну 3000 любых хостов из контейнера, я перенаправлюсь в свой контейнер: 3000
1 ответ
-s flags выбирает только тот трафик, который соответствует указанному хосту или сети. Если вы хотите сопоставить весь трафик, кроме этого, используйте
! -s 10.0.3.0/24
и не забудьте избежать этого ! из оболочки с кавычками или обратной косой чертой.