Настройка интернет шлюза на основе iptables
Первоначально что необходимо сделать это добавить строку
net.ipv4.ip_forward=1
в файл /etc/sysctl.conf и перезагрузить операционную систему.
Очистим все правила iptables командой
iptables -F
сохраним настройки iptables командой
service iptables save
предположем что на материнской плате имеется два сетевых адаптера, один смотрит в интернет, а другой смотрит в локальную сеть
настройки eth0(в моём случаи данный адаптер смотрит в интернет) выглядят вот так
настройки eth1(которые смотрят в локальную сеть) выглядят вот так
Настроим значения по умолчанию цепочки INPUT OUTPUT FORWARD на действие DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
разрешим в этих цепочках прохождения пакетов и соеденений которые относятся к уже созданным соеденениям
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED- j ACCEPT
настроим исходящие соеденения для возможности пингования, установки обновлений и установки пакетов
iptables -I OUTPUT -p icmp -j ACCEPT
iptables -I OUTPUT -p tcp -m multiport --dport 53,80,21,443 -j ACCEPT
iptables -I OUTPUT -p udp --dport 53 -j ACCEPT
разрешим подключение к серверу по SSH с конкретного ip
iptables -I INPUT -p tcp --dport 22 -s XXX.XXX.XXX.XXX -j ACCEPT
XXX.XXX.XXX.XXX - ip адрес с которого необходимо разрешить доступ к серверу
Разрешим подсети 192.168.1.0/24 проходить в цепочки FORWARD
iptables -I FORWARD -m conntrack --ctstate NEW -i eth1 -s 192.168.1.0/24 -j ACCEPT
"пронатируем" соеденения из 192.168.1.0/24 на ip 192.168.0.103
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.0.103
если у вас динамический адрес(тоесть меняется при каждой новой сессии), тогда необходимо произвести действие MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
сохраним настройки iptables
service iptables save
Интернет шлюз готов.
В локальной сети в качестве шлюза неоходимо указывать адрес сетевого адаптера eth1(в данном примере это 192.168.1.1)