Назад | Перейти на главную страницу

Попытка использовать исходную маршрутизацию на двух разных интерфейсах

Я определил следующие правила:

-A POSTROUTING -j SNAT --to-source [publicip]
-A POSTROUTING -j SNAT -d 192.168.0.0/24 --to-source 192.168.0.6

По сути, я хочу, чтобы через 192.168.0.6 проходила только частная сеть. Однако работает только одна сеть. С этим конфигом работает только общедоступная сеть. Есть ли способ добиться того, чего я хочу?

Правила iptables необходимо настраивать в порядке: от более конкретных правил до менее конкретных.

Правильный порядок должен быть таким:

-A POSTROUTING -j SNAT -d 192.168.0.0/24 --to-source 192.168.0.6
-A POSTROUTING -j SNAT --to-source [publicip]

В Статья в Википедии об iptables достаточно хорошо объясняет как это, так и поток пакетов через цепочки и таблицы.

Пакет продолжает перемещаться по цепочке до тех пор, пока: 1. правило не сопоставит пакет и не определит окончательную судьбу пакета, например, путем вызова одного из ACCEPT или DROP, или модуля, возвращающего такую ​​окончательную судьбу [...]

Решил эту проблему. Очевидно, порядок имеет значение. Сначала появляется установка частной сети, чтобы решить проблему. Я также добавил 0.0.0.0/0, почти уверен, что это значение по умолчанию, поэтому я не думаю, что это что-то изменило, но я не тестирую, чтобы узнать.

-A POSTROUTING -j SNAT -d 192.168.0.0/24 --to-source 192.168.0.6
-A POSTROUTING -j SNAT -d 0.0.0.0/0 --to-source [publicip]