Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision Next revisionBoth sides next revision | ||
| docs:guide-user:network:protocol.dhcp [2023/01/22 07:52] – [Default IPv6 route] unify terms vgaetera | docs:guide-user:network:protocol.dhcp [2023/10/04 01:41] – [Providing ISP DNS with DHCP] update vgaetera | ||
|---|---|---|---|
| Line 32: | Line 32: | ||
| <code bash> | <code bash> | ||
| # Logging DHCP client | # Logging DHCP client | ||
| - | cat << " | + | cat << " |
| logger -t ${0##*/} ${@} $(env) | logger -t ${0##*/} ${@} $(env) | ||
| EOF | EOF | ||
| # Logging DHCPv6 client | # Logging DHCPv6 client | ||
| - | cat << " | + | cat << " |
| logger -t ${0##*/} ${@} $(env) | logger -t ${0##*/} ${@} $(env) | ||
| EOF | EOF | ||
| Line 59: | Line 59: | ||
| ===== Extras ===== | ===== Extras ===== | ||
| - | ==== Default | + | ==== Updating default |
| + | Update default route. | ||
| <code bash> | <code bash> | ||
| - | cat << " | + | cat << " |
| DHCPC_EVENT=" | DHCPC_EVENT=" | ||
| DHCPC_IF=" | DHCPC_IF=" | ||
| Line 74: | Line 76: | ||
| </ | </ | ||
| - | ==== IPv6 default route ==== | + | ==== Updating |
| + | Update IPv6 default route. | ||
| <code bash> | <code bash> | ||
| - | cat << " | + | cat << " |
| DHCPC_EVENT=" | DHCPC_EVENT=" | ||
| DHCPC_IF=" | DHCPC_IF=" | ||
| Line 89: | Line 93: | ||
| </ | </ | ||
| - | ==== DHCP client | + | ==== Updating |
| + | Update DHCP server route. | ||
| <code bash> | <code bash> | ||
| - | cat << " | + | cat << " |
| DHCPC_EVENT=" | DHCPC_EVENT=" | ||
| DHCPC_IF=" | DHCPC_IF=" | ||
| Line 104: | Line 110: | ||
| </ | </ | ||
| - | ==== Resolve | + | ==== Providing ISP DNS with DHCP ==== |
| + | Announce ISP DNS servers with DHCP. | ||
| + | |||
| + | <code bash> | ||
| + | cat << " | ||
| + | DHCP_POOL=" | ||
| + | DHCPC_EVENT=" | ||
| + | DNS_SERV=" | ||
| + | case ${DHCPC_EVENT} in | ||
| + | (bound|renew) ;; | ||
| + | (*) exit 0 ;; | ||
| + | esac | ||
| + | for DHCP_POOL in ${DHCP_POOL} | ||
| + | do DHCP_OPT=" | ||
| + | for DHCP_OPT in ${DHCP_OPT} | ||
| + | do case ${DHCP_OPT%%, | ||
| + | (6|option: | ||
| + | uci del_list dhcp.${DHCP_POOL}.dhcp_option=" | ||
| + | esac | ||
| + | done | ||
| + | uci add_list dhcp.${DHCP_POOL}.dhcp_option=" | ||
| + | done | ||
| + | uci commit dhcp | ||
| + | / | ||
| + | EOF | ||
| + | </ | ||
| + | |||
| + | Reconnect your clients to apply changes. | ||
| + | |||
| + | ==== Providing IPv6 ISP DNS with DHCPv6 ==== | ||
| + | Announce IPv6 ISP DNS servers with DHCPv6. | ||
| + | |||
| + | <code bash> | ||
| + | cat << " | ||
| + | DHCP_POOL=" | ||
| + | DHCPC_EVENT=" | ||
| + | DNS_SERV=" | ||
| + | case ${DHCPC_EVENT} in | ||
| + | (bound|informed|updated|rebound|ra-updated) ;; | ||
| + | (*) exit 0 ;; | ||
| + | esac | ||
| + | for DHCP_POOL in ${DHCP_POOL} | ||
| + | do uci -q delete dhcp.${DHCP_POOL}.dns | ||
| + | for DNS_SERV in ${DNS_SERV} | ||
| + | do uci add_list dhcp.${DHCP_POOL}.dns=" | ||
| + | done | ||
| + | done | ||
| + | uci commit dhcp | ||
| + | / | ||
| + | EOF | ||
| + | </ | ||
| + | |||
| + | Reconnect your clients to apply changes. | ||
| + | |||
| + | ==== Getting specific WAN IP address ==== | ||
| + | Assuming your ISP provides a dynamic IP address with DHCP. | ||
| + | Reconnect until you get the one matching a specific regexp. | ||
| + | Delay for 10 seconds between reconnects. | ||
| + | |||
| + | <code bash> | ||
| + | cat << " | ||
| + | WAN_ADDR=" | ||
| + | case ${WAN_ADDR} in | ||
| + | (192.168.*) exit 0 ;; | ||
| + | esac | ||
| + | sleep 10 | ||
| + | ifup ${INTERFACE} | ||
| + | EOF | ||
| + | </ | ||
| + | |||
| + | ==== Resolving | ||
| + | Automatically resolve WAN/LAN subnet conflicts. | ||
| + | Change LAN subnet if it overlaps with WAN. | ||
| <code bash> | <code bash> | ||
| - | cat << " | + | cat << " |
| - | LAN_IP=" | + | WAN_ADDR=" |
| - | case "${ip}" | + | LAN_IF=" |
| - | (192.168.*.*) NEW_IP=" | + | LAN_ADDR=" |
| - | (*) NEW_IP=" | + | case ${WAN_ADDR} in |
| + | (192.168.*) | ||
| + | (*) NEW_ADDR=" | ||
| esac | esac | ||
| - | case ${NEW_IP} in | + | case ${NEW_ADDR} in |
| - | (${LAN_IP}) exit 0 ;; | + | (${LAN_ADDR}) exit 0 ;; |
| esac | esac | ||
| - | uci set network.lan.ipaddr=" | + | uci set network.${LAN_IF}.ipaddr=" |
| uci commit network | uci commit network | ||
| - | ifup lan | + | ifup ${LAN_IF} |
| EOF | EOF | ||
| </ | </ | ||