I’m struggling to get a PPPoE internet connection working on my (virtualized) VyOS router. I can get the router to have functioning Internet, but the LAN clients never have better than partial internet (some websites work, others don’t). I think it has to do with MTU/MRU/MSS settings, but not sure.
My provider (source) provides these settings:
- PPPoE via VLAN 6 (802.1q).
- PPPoE authentication PAP with username and password (e.g. internet / internet).
- Maximum packet size (MTU) 1500 bytes (rfc4638)
- Obtain IPv4 address + DNS servers via PPPoE
- Obtain IPv6 address range + DNS servers (IPv6) via DHCPv6-PD request (in PPPoE). Use one address for the router from this range.
which I implemented as follows (based on here, here, here):
set interfaces pppoe pppoe0 description 'KPN WAN'
set interfaces pppoe pppoe0 authentication username 'internet'
set interfaces pppoe pppoe0 authentication password 'internet'
set interfaces pppoe pppoe0 source-interface 'eth1.6'
# Ensure we get DNS from ISP, i.e. no-peer-dns must be unset
delete interfaces pppoe pppoe0 no-peer-dns
After fiddling with MTU/MSS settings a bit, these settings give only partial internet (e.g. google.com works, duckduckgo.com does not, unpredictable which website works, ping always):
set interfaces ethernet eth1 mtu '1512'
set interfaces ethernet eth1 vif 6 mtu '1508'
set interfaces pppoe pppoe0 mtu '1500'
set interfaces ethernet eth1 vif 6 ip adjust-mss '1460'
Lowering MTU fixes internet on the router only, I can wget
any website, but clients connected to LAN still have partial internet as the above situation:
set interfaces ethernet eth1 mtu '1412'
set interfaces ethernet eth1 vif 6 mtu '1408'
set interfaces pppoe pppoe0 mtu '1400'
set interfaces ethernet eth1 vif 6 ip adjust-mss '1360'
With the pppoe MTU 1400 settings (which works on my router), I capture the following on my LAN client when visiting google.com, which sets the frame size to 1400:
Duckduckgo doesn’t respond (=packets get lost?)
Rest of config looks like:
set firewall all-ping 'enable'
set firewall broadcast-ping 'disable'
set firewall ip-src-route 'disable'
set firewall ipv6-receive-redirects 'disable'
set firewall ipv6-src-route 'disable'
set firewall log-martians 'enable'
set firewall name FW_2LOCAL default-action 'drop'
set firewall name FW_2LOCAL rule 200 action 'accept'
set firewall name FW_2LOCAL rule 200 description 'accept established/related'
set firewall name FW_2LOCAL rule 200 log 'disable'
set firewall name FW_2LOCAL rule 200 state established 'enable'
set firewall name FW_2LOCAL rule 200 state related 'enable'
set firewall name FW_2LOCAL rule 210 action 'accept'
set firewall name FW_2LOCAL rule 210 description 'accept dhcp'
set firewall name FW_2LOCAL rule 210 destination port '67-68'
set firewall name FW_2LOCAL rule 210 log 'disable'
set firewall name FW_2LOCAL rule 210 protocol 'udp'
set firewall name FW_2LOCAL rule 220 action 'accept'
set firewall name FW_2LOCAL rule 220 description 'accept dns'
set firewall name FW_2LOCAL rule 220 destination port '53'
set firewall name FW_2LOCAL rule 220 log 'disable'
set firewall name FW_2LOCAL rule 220 protocol 'udp'
set firewall name FW_2LOCAL rule 230 action 'accept'
set firewall name FW_2LOCAL rule 230 description 'accept ssh'
set firewall name FW_2LOCAL rule 230 destination port '22'
set firewall name FW_2LOCAL rule 230 log 'disable'
set firewall name FW_2LOCAL rule 230 protocol 'tcp'
set firewall name FW_ACCEPT default-action 'accept'
set firewall name FW_ACCEPT rule 200 action 'drop'
set firewall name FW_ACCEPT rule 200 description 'drop invalid'
set firewall name FW_ACCEPT rule 200 state invalid 'enable'
set firewall name FW_DROP default-action 'drop'
set firewall name FW_GUEST2INFRA default-action 'drop'
set firewall name FW_GUEST2INFRA rule 200 action 'accept'
set firewall name FW_GUEST2INFRA rule 200 description 'accept established/related'
set firewall name FW_GUEST2INFRA rule 200 log 'disable'
set firewall name FW_GUEST2INFRA rule 200 state established 'enable'
set firewall name FW_GUEST2INFRA rule 200 state related 'enable'
set firewall name FW_GUEST2TRUST default-action 'drop'
set firewall name FW_GUEST2TRUST rule 200 action 'accept'
set firewall name FW_GUEST2TRUST rule 200 description 'accept established/related'
set firewall name FW_GUEST2TRUST rule 200 log 'disable'
set firewall name FW_GUEST2TRUST rule 200 state established 'enable'
set firewall name FW_GUEST2TRUST rule 200 state related 'enable'
set firewall name FW_IOT2INFRA default-action 'drop'
set firewall name FW_IOT2INFRA rule 200 action 'accept'
set firewall name FW_IOT2INFRA rule 200 description 'accept established/related'
set firewall name FW_IOT2INFRA rule 200 log 'disable'
set firewall name FW_IOT2INFRA rule 200 state established 'enable'
set firewall name FW_IOT2INFRA rule 200 state related 'enable'
set firewall name FW_IOT2WAN default-action 'drop'
set firewall name FW_IOT2WAN rule 200 action 'accept'
set firewall name FW_IOT2WAN rule 200 description 'accept established/related'
set firewall name FW_IOT2WAN rule 200 log 'disable'
set firewall name FW_IOT2WAN rule 200 state established 'enable'
set firewall name FW_IOT2WAN rule 200 state related 'enable'
set firewall name FW_TRUST2INFRA default-action 'drop'
set firewall name FW_TRUST2INFRA rule 200 action 'accept'
set firewall name FW_TRUST2INFRA rule 200 description 'accept established/related'
set firewall name FW_TRUST2INFRA rule 200 log 'disable'
set firewall name FW_TRUST2INFRA rule 200 state established 'enable'
set firewall name FW_TRUST2INFRA rule 200 state related 'enable'
set firewall name FW_WAN2ALL default-action 'drop'
set firewall name FW_WAN2ALL rule 200 action 'accept'
set firewall name FW_WAN2ALL rule 200 description 'accept established/related'
set firewall name FW_WAN2ALL rule 200 state established 'enable'
set firewall name FW_WAN2ALL rule 200 state related 'enable'
set firewall name FW_WAN2INFRA default-action 'drop'
set firewall name FW_WAN2INFRA rule 200 action 'accept'
set firewall name FW_WAN2INFRA rule 200 description 'accept established/related'
set firewall name FW_WAN2INFRA rule 200 state established 'enable'
set firewall name FW_WAN2INFRA rule 200 state related 'enable'
set firewall name FW_WAN2LOCAL default-action 'drop'
set firewall name FW_WAN2LOCAL enable-default-log
set firewall name FW_WAN2LOCAL rule 200 action 'accept'
set firewall name FW_WAN2LOCAL rule 200 description 'accept established/related'
set firewall name FW_WAN2LOCAL rule 200 log 'enable'
set firewall name FW_WAN2LOCAL rule 200 state established 'enable'
set firewall name FW_WAN2LOCAL rule 200 state related 'enable'
set firewall name FW_WAN2LOCAL rule 210 action 'accept'
set firewall name FW_WAN2LOCAL rule 210 description 'wireguard'
set firewall name FW_WAN2LOCAL rule 210 destination port '51820'
set firewall name FW_WAN2LOCAL rule 210 log 'enable'
set firewall name FW_WAN2LOCAL rule 210 protocol 'udp'
set firewall name FW_WAN2LOCAL rule 210 state new 'enable'
set firewall receive-redirects 'disable'
set firewall send-redirects 'enable'
set firewall source-validation 'disable'
set firewall syn-cookies 'enable'
set firewall zone GUEST default-action 'drop'
set firewall zone GUEST from INFRA firewall name 'FW_ACCEPT'
set firewall zone GUEST from IOT firewall name 'FW_DROP'
set firewall zone GUEST from LOCAL firewall name 'FW_ACCEPT'
set firewall zone GUEST from TRUSTED firewall name 'FW_ACCEPT'
set firewall zone GUEST from WAN firewall name 'FW_WAN2ALL'
set firewall zone GUEST interface 'br100.30'
set firewall zone INFRA default-action 'drop'
set firewall zone INFRA from GUEST firewall name 'FW_GUEST2INFRA'
set firewall zone INFRA from IOT firewall name 'FW_IOT2INFRA'
set firewall zone INFRA from LOCAL firewall name 'FW_ACCEPT'
set firewall zone INFRA from TRUSTED firewall name 'FW_TRUST2INFRA'
set firewall zone INFRA from WAN firewall name 'FW_WAN2INFRA'
set firewall zone INFRA interface 'br100.10'
set firewall zone IOT default-action 'drop'
set firewall zone IOT from GUEST firewall name 'FW_DROP'
set firewall zone IOT from INFRA firewall name 'FW_ACCEPT'
set firewall zone IOT from LOCAL firewall name 'FW_ACCEPT'
set firewall zone IOT from TRUSTED firewall name 'FW_ACCEPT'
set firewall zone IOT from WAN firewall name 'FW_WAN2ALL'
set firewall zone IOT interface 'br100.40'
set firewall zone LOCAL default-action 'drop'
set firewall zone LOCAL from GUEST firewall name 'FW_2LOCAL'
set firewall zone LOCAL from INFRA firewall name 'FW_ACCEPT'
set firewall zone LOCAL from IOT firewall name 'FW_2LOCAL'
set firewall zone LOCAL from TRUSTED firewall name 'FW_2LOCAL'
set firewall zone LOCAL from WAN firewall name 'FW_WAN2LOCAL'
set firewall zone LOCAL local-zone
set firewall zone TRUSTED default-action 'drop'
set firewall zone TRUSTED from GUEST firewall name 'FW_GUEST2TRUST'
set firewall zone TRUSTED from INFRA firewall name 'FW_ACCEPT'
set firewall zone TRUSTED from IOT firewall name 'FW_IOT2INFRA'
set firewall zone TRUSTED from LOCAL firewall name 'FW_ACCEPT'
set firewall zone TRUSTED from WAN firewall name 'FW_WAN2ALL'
set firewall zone TRUSTED interface 'br100.20'
set firewall zone TRUSTED interface 'wg0'
set firewall zone WAN default-action 'drop'
set firewall zone WAN from GUEST firewall name 'FW_ACCEPT'
set firewall zone WAN from INFRA firewall name 'FW_ACCEPT'
set firewall zone WAN from IOT firewall name 'FW_IOT2WAN'
set firewall zone WAN from LOCAL firewall name 'FW_ACCEPT'
set firewall zone WAN from TRUSTED firewall name 'FW_ACCEPT'
set firewall zone WAN interface 'pppoe0'
set interfaces bridge br100 enable-vlan
set interfaces bridge br100 member interface eth0 allowed-vlan '10'
set interfaces bridge br100 member interface eth0 allowed-vlan '20'
set interfaces bridge br100 member interface eth0 allowed-vlan '30'
set interfaces bridge br100 member interface eth0 allowed-vlan '40'
set interfaces bridge br100 stp
set interfaces bridge br100 vif 10 address '172.17.10.1/24'
set interfaces bridge br100 vif 10 description 'VLAN10-Mgmt'
set interfaces bridge br100 vif 20 address '172.17.20.1/24'
set interfaces bridge br100 vif 20 description 'VLAN20-Trusted'
set interfaces bridge br100 vif 30 address '172.17.30.1/24'
set interfaces bridge br100 vif 30 description 'VLAN30-Guest'
set interfaces bridge br100 vif 40 address '172.17.40.1/24'
set interfaces bridge br100 vif 40 description 'VLAN40-IoT'
set interfaces ethernet eth0 description 'LAN'
set interfaces ethernet eth1 mtu '1512'
set interfaces ethernet eth1 vif 6 description 'KPN WAN'
set interfaces ethernet eth1 vif 6 ip adjust-mss '1460'
set interfaces ethernet eth1 vif 6 mtu '1508'
set interfaces loopback lo
set interfaces pppoe pppoe0 authentication password 'internet'
set interfaces pppoe pppoe0 authentication username 'internet'
set interfaces pppoe pppoe0 description 'KPN WAN'
set interfaces pppoe pppoe0 mtu '1500'
set interfaces pppoe pppoe0 source-interface 'eth1.6'
set interfaces wireguard wg0 address '172.17.50.1/24'
set nat source rule 5001 description 'Exclude roadwarrior VPN'
set nat source rule 5001 destination address '172.17.50.0/24'
set nat source rule 5001 exclude
set nat source rule 5001 outbound-interface 'pppoe0'
set nat source rule 5001 protocol 'all'
set nat source rule 5001 translation address 'masquerade'
set nat source rule 5010 description 'Masquerade for WAN'
set nat source rule 5010 outbound-interface 'pppoe0'
set nat source rule 5010 protocol 'all'
set nat source rule 5010 source address '172.17.0.0/16'
set nat source rule 5010 translation address 'masquerade'
set protocols igmp-proxy
set service broadcast-relay
set service dhcp-server shared-network-name vlan10 authoritative
set service dhcp-server shared-network-name vlan10 subnet 172.17.10.0/24 default-router '172.17.10.1'
set service dhcp-server shared-network-name vlan10 subnet 172.17.10.0/24 name-server '172.17.10.1'
set service dhcp-server shared-network-name vlan10 subnet 172.17.10.0/24 range vlan10range start '172.17.10.100'
set service dhcp-server shared-network-name vlan10 subnet 172.17.10.0/24 range vlan10range stop '172.17.10.254'
set service dhcp-server shared-network-name vlan20 authoritative
set service dhcp-server shared-network-name vlan20 subnet 172.17.20.0/24 default-router '172.17.20.1'
set service dhcp-server shared-network-name vlan20 subnet 172.17.20.0/24 name-server '172.17.20.1'
set service dhcp-server shared-network-name vlan20 subnet 172.17.20.0/24 range vlan20range start '172.17.20.100'
set service dhcp-server shared-network-name vlan20 subnet 172.17.20.0/24 range vlan20range stop '172.17.20.254'
set service dhcp-server shared-network-name vlan30 authoritative
set service dhcp-server shared-network-name vlan30 subnet 172.17.30.0/24 default-router '172.17.30.1'
set service dhcp-server shared-network-name vlan30 subnet 172.17.30.0/24 name-server '172.17.30.1'
set service dhcp-server shared-network-name vlan30 subnet 172.17.30.0/24 range vlan30range start '172.17.30.100'
set service dhcp-server shared-network-name vlan30 subnet 172.17.30.0/24 range vlan30range stop '172.17.30.254'
set service dhcp-server shared-network-name vlan40 authoritative
set service dhcp-server shared-network-name vlan40 subnet 172.17.40.0/24 default-router '172.17.40.1'
set service dhcp-server shared-network-name vlan40 subnet 172.17.40.0/24 name-server '172.17.40.1'
set service dhcp-server shared-network-name vlan40 subnet 172.17.40.0/24 range vlan40range start '172.17.40.100'
set service dhcp-server shared-network-name vlan40 subnet 172.17.40.0/24 range vlan40range stop '172.17.40.254'
set service dns forwarding allow-from '172.17.0.0/16'
set service dns forwarding cache-size '100004'
set service dns forwarding dhcp 'pppoe0'
set service dns forwarding listen-address '172.17.10.1'
set service dns forwarding listen-address '172.17.20.1'
set service dns forwarding listen-address '172.17.30.1'
set service dns forwarding listen-address '172.17.40.1'
set service dns forwarding listen-address '172.17.50.1'
set service mdns repeater interface 'br100.20'
set service mdns repeater interface 'br100.30'
set service mdns repeater interface 'br100.10'
set system config-management commit-revisions '100'
set system conntrack modules ftp
set system conntrack modules h323
set system conntrack modules nfs
set system conntrack modules pptp
set system conntrack modules sip
set system conntrack modules sqlnet
set system conntrack modules tftp
set system console device ttyS0 speed '115200'
set system domain-name 'lan.vanwerkhoven.org'
set system host-name 'vyos'
set system name-server '172.17.10.1'
set system syslog global facility all level 'info'
set system syslog global facility local7 level 'debug'
VyOS version:
vyos@vyos:~$ show version
Version: VyOS 1.4-rolling-202307120317
Release train: current
Built by: [email protected]
Built on: Wed 12 Jul 2023 03:17 UTC
Build UUID: 481a5c2e-f2d1-4098-880b-c6bb959aaa36
Build commit ID: 5a81df95612424
I’ve rebooted both the router and client after updating the settings.
Any ideas why my LAN clients don’t have internet? What MTU/MSS/MRU settings do I need? E.g. are VLAN tags part of MTU or not? I see different approaches. Thanks in advance