Я пытаюсь настроить брандмауэр. Он имеет сетевые интерфейсы, eth0 (lan) и eth1 (wan).
allow-hotplug eth1
auto eth1
iface eth1 inet static
address 192.168.2.2
gateway 192.168.2.1
netmask 255.255.255.0
allow-hotplug eth0
auto eth0
iface eth0 inet static
address 192.168.16.6
netmask 255.255.255.0
network 192.168.16.0
broadcast 192.168.0.255
За eth1 стоит роутер, который дает мне динамический ip.
У меня такая же машина, есть веб-прокси. Фактически, компьютер в локальной сети может получить доступ к сети только через прокси. Теперь мне нужны машины в локальной сети для доступа к серверам SMTP и POP3 через Интернет. Так что мне нужен NAT, но только для портов 25 и 110. Я не хочу настраивать другие порты.
Можете ли вы помочь мне шаг за шагом настроить iptables (я действительно нуб в iptables)?
С уважением
Приведенный ниже код выполнит свою работу. С Iptables достаточно легко работать - вам просто нужно четко указать ему, что делать с трафиком, который приходит или идет в определенные места на определенных портах. Хотя вы запрашивали только порты 25 и 110, я также включил опции для безопасного SMTP и безопасного POP3.
То, что я рекомендую ниже, учитывает любые правила брандмауэра, которые у вас есть, и ставит запрошенные вами правила выше в порядке обработки, чем что-либо еще. Iptables обрабатывает правила в том порядке, в котором они соответствуют им, поэтому на случай, если у вас уже есть другие правила в брандмауэре, которые могут блокировать SMTP или POP3, я использовал команду вставки и указал, что правила должны быть помещены в верхнюю часть списка. Если у вас нет других правил брандмауэра, вы можете заменить «-I» на «-A» и опустить номера строк после таблиц «FORWARD» и «POSTROUTING».
Я рекомендую по возможности реализовать отслеживание соединений, и первое правило iptables, приведенное ниже, включает это. Если вы используете действительно старое ядро, у вас могут возникнуть проблемы с этими командами, но если они работают для вас, тогда отлично. Если они этого не делают, отбросьте первую строку и оставьте часть «-m tcp» во всех остальных строках.
#Enable IP Forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
#Turn on connection tracking
iptables -I FORWARD 1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
#Allow SMTP traffic out to the internet. This includes regular and authenticated SMTP
iptables -I FORWARD 2 -i eth1 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -I FORWARD 2 -i eth1 -p tcp -m tcp --dport 465 -j ACCEPT
iptables -I FORWARD 3 -i eth1 -p tcp -m tcp --dport 587 -j ACCEPT
#Allow POP3 traffic out to the internet. This includes regular and SSL secured POP3
iptables -I FORWARD 4 -i eth1 -p tcp -m tcp --dport 110 -j ACCEPT
iptables -I FORWARD 5 -i eth1 -p tcp -m tcp --dport 995 -j ACCEPT
#NAT the traffic leaving your router for the allowed forwarded ports above
iptables -t nat -I POSTROUTING 1 -o eth0 -p tcp --dport 25 -j MASQUERADE
iptables -t nat -I POSTROUTING 2 -o eth0 -p tcp --dport 465 -j MASQUERADE
iptables -t nat -I POSTROUTING 3 -o eth0 -p tcp --dport 587 -j MASQUERADE
iptables -t nat -I POSTROUTING 4 -o eth0 -p tcp --dport 110 -j MASQUERADE
iptables -t nat -I POSTROUTING 5 -o eth0 -p tcp --dport 995 -j MASQUERADE
#Optionally, block any other forwarded traffic
iptables -I FORWARD 6 -i eth1 -j REJECT
Легкий лимонный отжим:
iptables -t nat -A ПОСТРОУТИРОВАНИЕ -p TCP --dport 25 -j МАСКЕРАД
iptables -t nat -A POSTROUTING -p TCP --dport 110 -j MASQUERADE
:)
Перво-наперво:
allow-hotplug eth0
auto eth0
iface eth0 inet static
address 192.168.16.6
netmask 255.255.255.0
network 192.168.16.0
broadcast 192.168.0.255
Неправильно (или опечатка;)). broadcast
должно быть 192.168.16.255
.
Предполагая, что каждый компьютер имеет в качестве шлюза по умолчанию этот Linux-сервер (192.168.16.6
) это просто вопрос настройки переадресации ip:
# Enable ip forward:
echo 1 > /proc/sys/net/ipv4/ip_forward
# The same cam be achieved by:
# sysctl -w net.ipv4.ip_forward=1
# Forwarding traffic between interfaces:
iptables -A FORWARD -i eth0 -o eth1 --src 192.168.16.0/24 -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 --src 192.168.16.0/24 -p tcp --dport 110 -j ACCEPT
# This rule prevents other traffic to be dropped
iptables -A FORWARD -i eth0 -o eth1 --src 192.168.16.0/24 -j DROP
# Masquerade traffic to the outside world:
# If the public ip is a dynamic one use MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 --src 192.168.16.0/24 -j MASQUERADE
# If the public ip is a static one, use SNAT
iptables -t nat -A POSTROUTING -o eth1 --src 192.168.16.0/24 -j SNAT --to-source <pub_ip>
Когда появится общедоступное соединение, если оно создает ссылку ppp, вам придется заменить eth1
с, скажем, ppp0
.
ПРЕДУПРЕЖДЕНИЕ: это ни в коем случае не сильный брандмауэр, это просто минимальный набор правил, позволяющих делать то, что вы хотите.