Кажется, нужно было установить опцию next-server. Я предположил, что поскольку я запускал свой PXE-сервер с файлами initrd.img и vmlinuz на том же сервере, что и DHCP, этот сервер не имеет next-server. Но в моем случае DHCP требовался ip.
Да, конечно!
iptables
правила применяются по порядку. Таким образом, вы можете начать с очень ограничительной политики для своей цепочки, а затем разрешить трафик на определенных портах.
Вы можете сначала установить политики CHAIN по умолчанию, такие как :(, по умолчанию они установлены как ACCEPT)
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
Таким образом, вы настраиваете каждую ЦЕПЬ так, чтобы она отклоняла что-либо. Затем вы можете разрешить трафик только по одному порту или только по какому-то сегменту сети, как хотите:
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
INPUT
— это имя ЦЕПИ, для которой вы добавляете правило, -i
— для указания того, к какому интерфейсу применяется правило(eth0
в примере)-p
— для указания протокола(tcp
)в данном случае, с --dport
вы указываете, на каком порту вы разрешаете трафик, -m state
дает указание брандмауэру смотреть на состояние соединения, это для того, чтобы вы могли использовать --state NEW,ESTABLISHED
, которые являются двумя состояниями, в которых разрешено соединение, наконец, -j ACCEPT
сообщает брандмауэру, что соединения, соответствующие ранее описанному правилу, будут приняты.
Поскольку ваш последний вопрос касается диапазонов IP-адресов и/или портов, способ сделать это с помощью правила--dport 80:10010
(применяется к портам от 80 до 10010 ), а для диапазона IP-адресов вы можете использовать -m iprange --src-range 192.168.1.100-192.168.1.200
, поэтому правило будет применяться к любому трафику, приходящему с любого ip в диапазоне 192.168.1.100 -192.168.1.200
Полный рабочий пример:
iptables -A INPUT -i eth0 -p tcp --dport 80:10010 -m iprange --src-range 192.168.1.100-192.168.1.200 -m state --state NEW,ESTABLISHED -j ACCEPT