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 [2021/04/08 18:58] – [Extras] merge from docs:guide-user:network:routing vgaetera | docs:guide-user:network:protocol.dhcp [2023/10/04 01:41] – [Providing ISP DNS with DHCP] update vgaetera | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== DHCP configuration ====== | ====== DHCP configuration ====== | ||
| See: | See: | ||
| - | [[docs: | + | [[docs: |
| - | [[docs: | + | [[docs: |
| ===== Troubleshooting ===== | ===== Troubleshooting ===== | ||
| 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: | ||
| </ | </ | ||
| - | ==== Default | + | ==== 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 101: | Line 107: | ||
| ip route delete " | ip route delete " | ||
| ip route add " | ip route add " | ||
| + | EOF | ||
| + | </ | ||
| + | |||
| + | ==== 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 WAN/LAN subnet conflicts ==== | ||
| + | Automatically resolve WAN/LAN subnet conflicts. | ||
| + | Change LAN subnet if it overlaps with WAN. | ||
| + | |||
| + | <code bash> | ||
| + | cat << " | ||
| + | WAN_ADDR=" | ||
| + | LAN_IF=" | ||
| + | LAN_ADDR=" | ||
| + | case ${WAN_ADDR} in | ||
| + | (192.168.*) NEW_ADDR=" | ||
| + | (*) NEW_ADDR=" | ||
| + | esac | ||
| + | case ${NEW_ADDR} in | ||
| + | (${LAN_ADDR}) exit 0 ;; | ||
| + | esac | ||
| + | uci set network.${LAN_IF}.ipaddr=" | ||
| + | uci commit network | ||
| + | ifup ${LAN_IF} | ||
| EOF | EOF | ||
| </ | </ | ||