mirror of
https://github.com/unraid/webgui.git
synced 2026-04-26 04:11:12 -05:00
Merge pull request #2052 from bergware/master
Networking: fix DNS entries get removed when configuring interface other then et0
This commit is contained in:
@@ -85,7 +85,7 @@ $service = exec('pgrep --ns $$ libvirt') ? _('VM manager') : '';
|
||||
$service .= exec('pgrep --ns $$ docker') ? ($service ? ' '._('and').' ' : '')._('Docker service') : '';
|
||||
|
||||
// eth0 port status
|
||||
$no_eth0 = exec("ip -br link show eth0 | grep -om1 ' DOWN '");
|
||||
$no_eth0 = exec("ip -br link show eth0 | awk '{print \$2;exit}'")=='DOWN';
|
||||
|
||||
// get VLAN interfaces
|
||||
$vlan_eth0 = $sort_eth0 = [];
|
||||
|
||||
@@ -28,7 +28,7 @@ if (strpos($locked,'bond')===0 || strpos($locked,'br')===0) {
|
||||
[$master_ethX,$root] = my_explode(' ',$locked);
|
||||
$reason = _('member of')." $master_ethX ("._('see interface')." $root)";
|
||||
$class = 'green-text';
|
||||
} elseif (exec("ip -br link show ethX | grep -om1 ' DOWN '")) {
|
||||
} elseif (exec("ip -br link show ethX | awk '{print \$2;exit}'")=='DOWN') {
|
||||
$reason = _("shutdown")." ("._("inactive").")";
|
||||
$class = 'blue-text';
|
||||
$cmd = 'Up';
|
||||
|
||||
+35
-9
@@ -79,6 +79,7 @@
|
||||
|
||||
# Adapted by Bergware for use in Unraid OS - February 2025
|
||||
# - added metric value to interface IP assignment
|
||||
# - fixed DNS entries get removed when configuring interface other then eth0
|
||||
|
||||
###########
|
||||
# LOGGING #
|
||||
@@ -478,6 +479,30 @@ if_up(){
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
# only execute dns assignment for main interface
|
||||
if [[ -n $RENEW || ${1//[^0-9]} == 0 ]]; then
|
||||
# default resolv.conf file
|
||||
RESOLV=/etc/resolv.conf
|
||||
echo -n >$RESOLV
|
||||
echo -n >$RESOLV.head
|
||||
echo -n >$RESOLV.tail
|
||||
if [[ $DHCP_KEEPRESOLV == yes ]]; then
|
||||
echo "# Generated by rc.inet1" >>$RESOLV
|
||||
[[ -n $DNS_SERVER1 ]] && echo "nameserver $(unzero $DNS_SERVER1) # eth0:v4" >>$RESOLV
|
||||
[[ -n $DNS_SERVER2 ]] && echo "nameserver $(unzero $DNS_SERVER2) # eth0:v4" >>$RESOLV
|
||||
[[ -n $DNS_SERVER3 ]] && echo "nameserver $(unzero $DNS_SERVER3) # eth0:v4" >>$RESOLV
|
||||
[[ -n $DNS_SERVER4 ]] && echo "nameserver $(unzero $DNS_SERVER4) # eth0:v4" >>$RESOLV
|
||||
[[ $DHCP6_KEEPRESOLV == no ]] && cp -f $RESOLV $RESOLV.head
|
||||
fi
|
||||
if [[ $DHCP6_KEEPRESOLV == yes ]]; then
|
||||
[[ $DHCP_KEEPRESOLV == no ]] && echo "# Generated by rc.inet1" >>$RESOLV
|
||||
[[ -n $DNS6_SERVER1 ]] && echo "nameserver $(unzero6 $DNS6_SERVER1) # eth0:v6" >>$RESOLV
|
||||
[[ -n $DNS6_SERVER2 ]] && echo "nameserver $(unzero6 $DNS6_SERVER2) # eth0:v6" >>$RESOLV
|
||||
[[ -n $DNS6_SERVER3 ]] && echo "nameserver $(unzero6 $DNS6_SERVER3) # eth0:v6" >>$RESOLV
|
||||
[[ -n $DNS6_SERVER4 ]] && echo "nameserver $(unzero6 $DNS6_SERVER4) # eth0:v6" >>$RESOLV
|
||||
[[ $DHCP_KEEPRESOLV == no ]] && cp -f $RESOLV $RESOLV.tail
|
||||
fi
|
||||
fi
|
||||
# loop thru main and VLAN interfaces
|
||||
for ((j=0;j<${VLANS[$i]:-1};j++)); do
|
||||
[[ $j -eq 0 ]] && IFACE=$1 || IFACE=$1.${VLANID[$i,$j]}
|
||||
@@ -499,24 +524,24 @@ if_up(){
|
||||
run ip link set $IFACE up
|
||||
fi
|
||||
# set interface address
|
||||
[[ $i -eq 0 && $j -eq 0 ]] && MAIN=1 || MAIN=
|
||||
DNS=${IFACE//[^0-9]}
|
||||
if [[ $IP == ipv4 ]]; then
|
||||
[[ $j -eq 0 ]] && DHCP=${USE_DHCP[$i]} || DHCP=${USE_DHCP[$i,$j]}
|
||||
[[ $j -eq 0 ]] && DHCP_METRIC=${METRIC[$i]} || DHCP_METRIC=${METRIC[$i,$j]}
|
||||
[[ -n $MAIN ]] && DHCP_KEEP_RESOLV=$DHCP_KEEPRESOLV || DHCP_KEEP_RESOLV=yes
|
||||
[[ $DNS == 0 ]] && DHCP_KEEP_RESOLV=$DHCP_KEEPRESOLV || DHCP_KEEP_RESOLV=yes
|
||||
ipaddr_up
|
||||
elif [[ $IP == ipv6 ]]; then
|
||||
[[ $j -eq 0 ]] && DHCP=${USE_DHCP6[$i]} || DHCP=${USE_DHCP6[$i,$j]}
|
||||
[[ $j -eq 0 ]] && DHCP_METRIC=${METRIC6[$i]} || DHCP_METRIC=${METRIC6[$i,$j]}
|
||||
[[ -n $MAIN ]] && DHCP_KEEP_RESOLV=$DHCP6_KEEPRESOLV || DHCP_KEEP_RESOLV=yes
|
||||
[[ $DNS == 0 ]] && DHCP_KEEP_RESOLV=$DHCP6_KEEPRESOLV || DHCP_KEEP_RESOLV=yes
|
||||
ipaddr_up
|
||||
else
|
||||
[[ $j -eq 0 ]] && DHCP=${USE_DHCP[$i]} || DHCP=${USE_DHCP[$i,$j]}
|
||||
[[ $j -eq 0 ]] && DHCP6=${USE_DHCP6[$i]} || DHCP6=${USE_DHCP6[$i,$j]}
|
||||
[[ $j -eq 0 ]] && DHCP_METRIC=${METRIC[$i]} || DHCP_METRIC=${METRIC[$i,$j]}
|
||||
[[ $j -eq 0 ]] && DHCP6_METRIC=${METRIC6[$i]} || DHCP6_METRIC=${METRIC6[$i,$j]}
|
||||
[[ -n $MAIN ]] && DHCP_KEEP_RESOLV=$DHCP_KEEPRESOLV || DHCP_KEEP_RESOLV=yes
|
||||
[[ -n $MAIN ]] && DHCP6_KEEP_RESOLV=$DHCP6_KEEPRESOLV || DHCP6_KEEP_RESOLV=yes
|
||||
[[ $DNS == 0 ]] && DHCP_KEEP_RESOLV=$DHCP_KEEPRESOLV || DHCP_KEEP_RESOLV=yes
|
||||
[[ $DNS == 0 ]] && DHCP6_KEEP_RESOLV=$DHCP6_KEEPRESOLV || DHCP6_KEEP_RESOLV=yes
|
||||
[[ -n $DHCP_METRIC ]] && METRIC_VALUE=$DHCP_METRIC || METRIC_VALUE=0
|
||||
[[ -n $DHCP6_METRIC ]] && METRIC6_VALUE=$DHCP6_METRIC || METRIC6_VALUE=0
|
||||
IP=ipv4
|
||||
@@ -547,20 +572,21 @@ if_down(){
|
||||
# macvtap interface name
|
||||
VHOST=vhost${IFACE//[^0-9.]}
|
||||
if [[ -e $SYSTEM/$IFACE ]]; then
|
||||
DNS=${IFACE//[^0-9]}
|
||||
# take down interface
|
||||
if [[ $IP == ipv4 ]]; then
|
||||
[[ $j -eq 0 ]] && DHCP=${USE_DHCP[$i]} || DHCP=${USE_DHCP[$i,$j]}
|
||||
[[ $j -eq 0 ]] && DHCP_KEEP_RESOLV=$DHCP_KEEPRESOLV || DHCP_KEEP_RESOLV=yes
|
||||
[[ $DNS == 0 ]] && DHCP_KEEP_RESOLV=$DHCP_KEEPRESOLV || DHCP_KEEP_RESOLV=yes
|
||||
ipaddr_down
|
||||
elif [[ $IP == ipv6 ]]; then
|
||||
[[ $j -eq 0 ]] && DHCP=${USE_DHCP6[$i]} || DHCP=${USE_DHCP6[$i,$j]}
|
||||
[[ $j -eq 0 ]] && DHCP_KEEP_RESOLV=$DHCP6_KEEPRESOLV || DHCP_KEEP_RESOLV=yes
|
||||
[[ $DNS == 0 ]] && DHCP_KEEP_RESOLV=$DHCP6_KEEPRESOLV || DHCP_KEEP_RESOLV=yes
|
||||
ipaddr_down
|
||||
else
|
||||
[[ $j -eq 0 ]] && DHCP=${USE_DHCP[$i]} || DHCP=${USE_DHCP[$i,$j]}
|
||||
[[ $j -eq 0 ]] && DHCP6=${USE_DHCP6[$i]} || DHCP6=${USE_DHCP6[$i,$j]}
|
||||
[[ -n $MAIN ]] && DHCP_KEEP_RESOLV=$DHCP_KEEPRESOLV || DHCP_KEEP_RESOLV=yes
|
||||
[[ -n $MAIN ]] && DHCP6_KEEP_RESOLV=$DHCP6_KEEPRESOLV || DHCP6_KEEP_RESOLV=yes
|
||||
[[ $DNS == 0 ]] && DHCP_KEEP_RESOLV=$DHCP_KEEPRESOLV || DHCP_KEEP_RESOLV=yes
|
||||
[[ $DNS == 0 ]] && DHCP6_KEEP_RESOLV=$DHCP6_KEEPRESOLV || DHCP6_KEEP_RESOLV=yes
|
||||
IP=ipv4
|
||||
ipaddr_down
|
||||
IP=ipv6
|
||||
|
||||
+5
-25
@@ -10,11 +10,14 @@
|
||||
# IFNAME[interface] to the interface's name. If IFNAME[interface] is unset
|
||||
# or empty, it is assumed you're configuring eth<interface>.
|
||||
#
|
||||
# LimeTech - modified for Unraid OS
|
||||
# Bergware - modified for Unraid OS, February 2025
|
||||
|
||||
# Adapted by Bergware for use in Unraid OS - December 2023
|
||||
# - added functions to remove leading zeros in IPv4 and IPv6 addresses
|
||||
|
||||
# LimeTech - modified for Unraid OS
|
||||
# Bergware - modified for Unraid OS, December 2023
|
||||
# Adapted by Bergware for use in Unraid OS - February 2025
|
||||
# - fixed DNS entries get removed when configuring interface other then eth0
|
||||
|
||||
# change this to "yes" for debugging output to stdout.
|
||||
# Unfortunately, /sbin/hotplug seems to disable stdout so you'll only see debugging output when rc.inet1 is called directly.
|
||||
@@ -70,29 +73,6 @@ else
|
||||
DHCP6_KEEPRESOLV=yes
|
||||
fi
|
||||
|
||||
# default resolv.conf file
|
||||
RESOLV=/etc/resolv.conf
|
||||
echo -n >$RESOLV
|
||||
echo -n >$RESOLV.head
|
||||
echo -n >$RESOLV.tail
|
||||
|
||||
if [[ $DHCP_KEEPRESOLV == yes ]]; then
|
||||
echo "# Generated by rc.inet1" >>$RESOLV
|
||||
[[ -n $DNS_SERVER1 ]] && echo "nameserver $(unzero $DNS_SERVER1) # eth0:v4" >>$RESOLV
|
||||
[[ -n $DNS_SERVER2 ]] && echo "nameserver $(unzero $DNS_SERVER2) # eth0:v4" >>$RESOLV
|
||||
[[ -n $DNS_SERVER3 ]] && echo "nameserver $(unzero $DNS_SERVER3) # eth0:v4" >>$RESOLV
|
||||
[[ -n $DNS_SERVER4 ]] && echo "nameserver $(unzero $DNS_SERVER4) # eth0:v4" >>$RESOLV
|
||||
[[ $DHCP6_KEEPRESOLV == no ]] && cp -f $RESOLV $RESOLV.head
|
||||
fi
|
||||
if [[ $DHCP6_KEEPRESOLV == yes ]]; then
|
||||
[[ $DHCP_KEEPRESOLV == no ]] && echo "# Generated by rc.inet1" >>$RESOLV
|
||||
[[ -n $DNS6_SERVER1 ]] && echo "nameserver $(unzero6 $DNS6_SERVER1) # eth0:v6" >>$RESOLV
|
||||
[[ -n $DNS6_SERVER2 ]] && echo "nameserver $(unzero6 $DNS6_SERVER2) # eth0:v6" >>$RESOLV
|
||||
[[ -n $DNS6_SERVER3 ]] && echo "nameserver $(unzero6 $DNS6_SERVER3) # eth0:v6" >>$RESOLV
|
||||
[[ -n $DNS6_SERVER4 ]] && echo "nameserver $(unzero6 $DNS6_SERVER4) # eth0:v6" >>$RESOLV
|
||||
[[ $DHCP_KEEPRESOLV == no ]] && cp -f $RESOLV $RESOLV.tail
|
||||
fi
|
||||
|
||||
make_cfg(){
|
||||
[[ -s $CFG ]] && return
|
||||
for VAR in "$@"; do
|
||||
|
||||
Reference in New Issue
Block a user