Этот вопрос связан с ответом и комментарием вЧто такое переадресация IP-адресов ядра?
от @LawrenceC
пост1:
Таким образом, в приведенном выше примере, если у вас есть подключение к Интернету на сетевой карте 2, вы устанавливаете сетевую карту 2 в качестве маршрута по умолчанию, и тогда любой трафик, поступающий с сетевой карты 1, который не предназначен для чего-либо в сети 192.168.2.0/24, будет проходить через сетевую карту 2.
а также пост2:
Для этого интерфейсу, выходящему в Интернет (NIC 1 из приведенных выше) необходимо правило MASQUERADE в POSTROUTING iptables в цепочке. Смотрите revsys.com/writings/quicktips/nat.html
Вhttp://www.revsys.com/writings/quicktips/nat.htmlтам написано:
Затем вам нужно будет настроить iptables для пересылки пакетов из вашей внутренней сети на /dev/eth1 во внешнюю сеть на /dev/eth0.
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE /sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
Почему я бы использовал FORWARD
(согласнопост2) если пересылка уже сделана только путем установки ip_forward
(согласнопост1):
echo 1 > /proc/sys/net/ipv4/ip_forward
решение1
Настройка ip_forward
разрешает пересылку пакетовв общем. Некоторые дистрибутивы Linux могут запрещать пересылку пакетов iptables
по соображениям безопасности, например, если ip_forward
установлено по ошибке.
/sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
устанавливает правило, разрешающее пакеты, eth0
которые eth1
являются ответами или аналогичными пакетами, связанными с уже установленным соединением.
/sbin/iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
устанавливает явное правило, разрешающее пакеты из eth1
в eth0
.
Это позволяет клиентам eth1
получать доступ к серверам, расположенным за ними, eth0
независимо от iptables
конфигурации по умолчанию.