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

iptables нат просто порт 25?

Я пытаюсь настроить брандмауэр. Он имеет сетевые интерфейсы, 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.

ПРЕДУПРЕЖДЕНИЕ: это ни в коем случае не сильный брандмауэр, это просто минимальный набор правил, позволяющих делать то, что вы хотите.