У меня есть настройка nat с тысячами подключенных к ней устройств. Шлюз имеет свой интернет, предоставляемый eth0, а устройства на стороне локальной сети подключаются к eth1 на шлюзе.
У меня есть следующие настройки с iptables:
/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
eth1 настроен следующим образом:
ip: 192.168.0.1
subnet: 255.255.0.0
Клиентам назначаются ips от 192.168.0.2 до 192.168.255.254.
В /etc/sysctl.conf у меня есть следующая настройка для ip_conntrack_tcp_timeout_installed
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=1200
Из-за количества клиентских устройств, которые подключаются к этому шлюзу, я не могу использовать пятидневный тайм-аут по умолчанию.
Кажется, это работает хорошо, и мы протестировали настройку с более чем 10000 клиентских устройств.
Однако проблема, которую я вижу, заключается в том, что установленный TCP тайм-аут 1200 применяется только к устройствам в диапазоне IP-адресов от 192.168.0.2 до 192.168.0.255. Все устройства с IP-адресами в диапазоне от 192.168.1.x до 192.168.255.x по-прежнему используют 5-дневный тайм-аут по умолчанию.
Это оставляет слишком много «УСТАНОВЛЕННЫХ» соединений в таблице /proc/net/ip_conntrack, и в конечном итоге она заполняется, хотя время их ожидания должно истекать в течение 20 минут, они показывают, что время ожидания истекает через 5 дней.
Очевидно, я где-то пропустил настройку или что-то настроил неправильно.
Какие-либо предложения?
Спасибо