First: I know it's not good to use USB NICs and yes, currently I'm still using it.
Just want to share some more experiences.
So I searched on Google and found this post https://forum.pfsense.org/index.php?topic=13014.msg70145#msg70145 https://forum.pfsense.org/index.php?topic=13014.msg70145#msg70145
As GruensFroeschli said:
1: Well it depends on your setup.
If your client can handle oversized frames you should not have to change the MTU.
If the driver of your em-NIC's cannot handle oversized frames, you would have to change the MTU on the other side of the link, so no oversized frames arrive at your end.
2: The problem is, that VLAN-tags add 4bytes to every frame.
–> frames can become bigger than the allowed maximum.
Most drivers can handle this, but some have problems.
And some more about vlan and MTU: http://www.microhowto.info/tutorials/802.1q.html http://www.microhowto.info/tutorials/802.1q.html http://wiki.mikrotik.com/wiki/Manual:Interface/VLAN
So following this logic, I thought I will need to increase MTU size then.
I tried these steps, now VLANs with 1500 MTU works.
1. Enable Jumbo Packet for that LAN USB NIC on physical host not in virtual machine Windows in my case, and set maximum size to 4KB (I guess 2KB or 9KB etc. will work as well, see above links for WHY) (Most Intel NIC supports 9KB, but 4KB is enough for solving this problem though, will be a problem if you need to transfer big files between VLANs where all Intel NICs on PCs support 9KB but the LAN NIC on pfSense only support 4KB maximum, but that is not in this scope though.)
2. Set the actual LAN MTU to 4000 (Or anything greater than 1518) in pfSense.
(All VLANs are virtual interfaces created on LAN interface in pfSense) So only 1 physical cable for LAN and all VLANs
3. Then set MTU for all VLAN interfaces in pfsense to 1500.
Now all VLANs working with 1500 MTU, For Internet, captive portal web page and web page hosted inside the LAN or VLANs.
(Previously, Internet works, but can't get on captive portal page which hosted on pfSense, and can't get on web page which hosted in in LAN hosts.)
;)