diff --git a/conf/main_ipv4.conf.sample b/conf/main_ipv4.conf.sample index 2e6aa1f..3ca173c 100644 --- a/conf/main_ipv4.conf.sample +++ b/conf/main_ipv4.conf.sample @@ -693,8 +693,8 @@ ipmi_server_ips="" # - TCP 623: Virtual Media for Remote Console # - TCP 3520: "This is TCP Port 3520 which is also needed in addition to TCP port 5900 to be able to use iKVM." # - -ipmi_udp_port=623 -ipmi_tcp_ports="623 3520" +ipmi_udp_ports="623 5900" +ipmi_tcp_ports="80 443 623 3520" # ============= diff --git a/conf/main_ipv6.conf.sample b/conf/main_ipv6.conf.sample index ced81bc..8eb857e 100644 --- a/conf/main_ipv6.conf.sample +++ b/conf/main_ipv6.conf.sample @@ -678,8 +678,8 @@ ipmi_server_ips="" # - TCP 623: Virtual Media for Remote Console # - TCP 3520: "This is TCP Port 3520 which is also needed in addition to TCP port 5900 to be able to use iKVM." # - -ipmi_udp_port=623 -ipmi_tcp_ports="623 3520" +ipmi_udp_ports="623 5900" +ipmi_tcp_ports="80 443 623 3520" # ============= diff --git a/conf/post_decalrations.conf b/conf/post_decalrations.conf index f6f55d8..e24f0df 100644 --- a/conf/post_decalrations.conf +++ b/conf/post_decalrations.conf @@ -384,6 +384,11 @@ done # - IPMI # --- +declare -a ipmi_udp_port_arr +for _port in $ipmi_udp_ports ; do + ipmi_udp_port_arr+=("$_port") +done + declare -a ipmi_tcp_port_arr for _port in $ipmi_tcp_ports ; do ipmi_tcp_port_arr+=("$_port") diff --git a/ip6t-firewall-gateway b/ip6t-firewall-gateway index 1032700..e4bd82b 100755 --- a/ip6t-firewall-gateway +++ b/ip6t-firewall-gateway @@ -2667,14 +2667,18 @@ echononl "\t\tIPMI Tools (e.g. IPMIView) only out" if $allow_ipmi_request_out && ! $permit_local_net_to_inet ; then for _dev in ${ext_if_arr[@]} ; do - $ip6t -A OUTPUT -o $_dev -p udp --dport $ipmi_udp_port -m conntrack --ctstate NEW -j ACCEPT + for _port in ${ipmi_udp_port_arr[@]} ; do + $ip6t -A OUTPUT -o $_dev -p udp --dport $_port -m conntrack --ctstate NEW -j ACCEPT + done for _port in ${ipmi_tcp_port_arr[@]} ; do $ip6t -A OUTPUT -o $_dev -p tcp --dport $_port -m conntrack --ctstate NEW -j ACCEPT done if $kernel_forward_between_interfaces ; then - $ip6t -A FORWARD -o $_dev -p udp --dport $ipmi_udp_port -m conntrack --ctstate NEW -j ACCEPT + for _port in ${ipmi_udp_port_arr[@]} ; do + $ip6t -A FORWARD -o $_dev -p udp --dport $_port -m conntrack --ctstate NEW -j ACCEPT + done for _port in ${ipmi_tcp_port_arr[@]} ; do $ip6t -A FORWARD -o $_dev -p tcp --dport $_port -m conntrack --ctstate NEW -j ACCEPT done @@ -2696,13 +2700,17 @@ echononl "\t\tIPMI Tools (e.g. IPMIView) local Networks" if [[ ${#ipmi_server_ip_arr[@]} -gt 0 ]]; then for _ip in ${ipmi_server_ip_arr[@]} ; do - $ip6t -A OUTPUT -p udp -d $_ip --dport $ipmi_udp_port -m conntrack --ctstate NEW -j ACCEPT + for _port in ${ipmi_udp_port_arr[@]} ; do + $ip6t -A OUTPUT -p udp -d $_ip --dport $_port -m conntrack --ctstate NEW -j ACCEPT + done for _port in ${ipmi_tcp_port_arr[@]} ; do $ip6t -A OUTPUT -p tcp -d $_ip --dport $_port -m conntrack --ctstate NEW -j ACCEPT done if $kernel_forward_between_interfaces && ! $permit_between_local_networks ; then - $ip6t -A FORWARD -p udp -d $_ip --dport $ipmi_udp_port -m conntrack --ctstate NEW -j ACCEPT + for _port in ${ipmi_udp_port_arr[@]} ; do + $ip6t -A FORWARD -p udp -d $_ip --dport $_port -m conntrack --ctstate NEW -j ACCEPT + done for _port in ${ipmi_tcp_port_arr[@]} ; do $ip6t -A FORWARD -p tcp -d $_ip --dport $_port -m conntrack --ctstate NEW -j ACCEPT done @@ -2710,11 +2718,13 @@ if [[ ${#ipmi_server_ip_arr[@]} -gt 0 ]]; then # - Rule is needed if (local) interface aliases in use (like eth0:1) # - if $local_alias_interfaces ; then + for _port in ${ipmi_udp_port_arr[@]} ; do + $ip6t -A FORWARD -p udp -s $_ip --sport $_port -m conntrack --ctstate NEW -j ACCEPT + done for _port in ${ipmi_tcp_port_arr[@]} ; do $ip6t -A FORWARD -p tcp -d $_ip --dport $_port --tcp-flag ACK ACK -j ACCEPT $ip6t -A FORWARD -p tcp -s $_ip --sport $_port --tcp-flag ACK ACK -j ACCEPT done - $ip6t -A FORWARD -p udp -s $_ip --sport $ipmi_udp_port -m conntrack --ctstate NEW -j ACCEPT fi fi done diff --git a/ipt-firewall-gateway b/ipt-firewall-gateway index 9cf6416..37404fe 100755 --- a/ipt-firewall-gateway +++ b/ipt-firewall-gateway @@ -3088,14 +3088,18 @@ echononl "\t\tIPMI Tools (e.g. IPMIView) only out" if $allow_ipmi_request_out && ! $permit_local_net_to_inet ; then for _dev in ${ext_if_arr[@]} ; do - $ipt -A OUTPUT -o $_dev -p udp --dport $ipmi_udp_port -m conntrack --ctstate NEW -j ACCEPT + for _port in ${ipmi_udp_port_arr[@]} ; do + $ipt -A OUTPUT -o $_dev -p udp --dport $_port -m conntrack --ctstate NEW -j ACCEPT + done for _port in ${ipmi_tcp_port_arr[@]} ; do $ipt -A OUTPUT -o $_dev -p tcp --dport $_port -m conntrack --ctstate NEW -j ACCEPT done if $kernel_activate_forwarding ; then - $ipt -A FORWARD -o $_dev -p udp --dport $ipmi_udp_port -m conntrack --ctstate NEW -j ACCEPT + for _port in ${ipmi_udp_port_arr[@]} ; do + $ipt -A FORWARD -o $_dev -p udp --dport $_port -m conntrack --ctstate NEW -j ACCEPT + done for _port in ${ipmi_tcp_port_arr[@]} ; do $ipt -A FORWARD -o $_dev -p tcp --dport $_port -m conntrack --ctstate NEW -j ACCEPT done @@ -3117,13 +3121,17 @@ echononl "\t\tIPMI Tools (e.g. IPMIView) local Networks" if [[ ${#ipmi_server_ip_arr[@]} -gt 0 ]]; then for _ip in ${ipmi_server_ip_arr[@]} ; do - $ipt -A OUTPUT -p udp -d $_ip --dport $ipmi_udp_port -m conntrack --ctstate NEW -j ACCEPT + for _port in ${ipmi_udp_port_arr[@]} ; do + $ipt -A OUTPUT -p udp -d $_ip --dport $_port -m conntrack --ctstate NEW -j ACCEPT + done for _port in ${ipmi_tcp_port_arr[@]} ; do $ipt -A OUTPUT -p tcp -d $_ip --dport $_port -m conntrack --ctstate NEW -j ACCEPT done if $kernel_activate_forwarding && ! $permit_between_local_networks ; then - $ipt -A FORWARD -p udp -d $_ip --dport $ipmi_udp_port -m conntrack --ctstate NEW -j ACCEPT + for _port in ${ipmi_udp_port_arr[@]} ; do + $ipt -A FORWARD -p udp -d $_ip --dport $_port -m conntrack --ctstate NEW -j ACCEPT + done for _port in ${ipmi_tcp_port_arr[@]} ; do $ipt -A FORWARD -p tcp -d $_ip --dport $_port -m conntrack --ctstate NEW -j ACCEPT done @@ -3131,11 +3139,13 @@ if [[ ${#ipmi_server_ip_arr[@]} -gt 0 ]]; then # - Rule is needed if (local) interface aliases in use (like eth0:1) # - if $local_alias_interfaces ; then + for _port in ${ipmi_udp_port_arr[@]} ; do + $ipt -A FORWARD -p udp -s $_ip --sport $_port -m conntrack --ctstate NEW -j ACCEPT + done for _port in ${ipmi_tcp_port_arr[@]} ; do $ipt -A FORWARD -p tcp -d $_ip --dport $_port --tcp-flag ACK ACK -j ACCEPT $ipt -A FORWARD -p tcp -s $_ip --sport $_port --tcp-flag ACK ACK -j ACCEPT done - $ipt -A FORWARD -p udp -s $_ip --sport $ipmi_udp_port -m conntrack --ctstate NEW -j ACCEPT fi fi done