<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hello,<div><br></div><div>I have attempted to limit the VPN speed to 10Mbit per user.  But when I do a DSL speed test with two devices simultaneously, it seems that the total traffic is limited to 10Mbit/s instead rather than each device having 10Mbit/s on their own.</div><div><br></div><div><div style="background-color:rgb(30,30,30);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;line-height:18px;white-space:pre"><div style="line-height:18px"><font color="#d4d4d4">ETH0ORSIMILAR=</font><font color="#ce9178"><span style="caret-color: rgb(206, 145, 120);">"eth0"</span></font></div><div style="color:rgb(212,212,212);line-height:18px"><div style="line-height:18px">SERVER_LIMIT=<span style="color:rgb(206,145,120)">"10mbit"</span></div></div></div></div><div><br></div><div><div style="line-height:18px"><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)">tc qdisc del dev <span style="color:rgb(156,220,254)">$ETH0ORSIMILAR</span> root</div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)">tc qdisc add dev <span style="color:rgb(156,220,254)">$ETH0ORSIMILAR</span> root handle 1: htb</div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)">iptables -I FORWARD -s <a href="http://10.10.10.0/24">10.10.10.0/24</a> -j MARK --set-mark 51</div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)">iptables -I FORWARD -d <a href="http://10.10.10.0/24">10.10.10.0/24</a> -j MARK --set-mark 51</div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)">tc class add dev <span style="color:rgb(156,220,254)">$ETH0ORSIMILAR</span> parent 1:1 classid 1:51 htb rate <span style="color:rgb(156,220,254)">$SERVER_LIMIT</span> ceil <span style="color:rgb(156,220,254)">$SERVER_LIMIT</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)">tc qdisc add dev <span style="color:rgb(156,220,254)">$ETH0ORSIMILAR</span> parent 1:51 sfq perturb 10</div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)">tc filter add dev <span style="color:rgb(156,220,254)">$ETH0ORSIMILAR</span> protocol ip parent 1: prio 1 handle 51 fw flowid 1:51</div><br></div></div><div style="line-height:18px">I had followed this tutorial to achieve this: <a href="https://linuxscriptshub.com/bandwidth-control-on-ikev2-with-tc-and-iptables/">https://linuxscriptshub.com/bandwidth-control-on-ikev2-with-tc-and-iptables/</a><br></div><div style="line-height:18px"><br></div><div style="line-height:18px">I'm essentially marking <a href="http://10.10.10.0/24">10.10.10.0/24</a> vpn ip pool with number 51. After the marking, based on the single private IP address with iptables, I'd do the bandwidth limiting based on the marking id 51.</div><div style="line-height:18px"><br></div><div style="line-height:18px">Is this correct how I have done it? </div><div style="line-height:18px"><br></div><div style="line-height:18px">further iptables settings:</div><div style="line-height:18px"><div style="color:rgb(212,212,212);background-color:rgb(30,30,30);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;line-height:18px;white-space:pre">VPNIPPOOL=<span style="color:rgb(206,145,120)">"<a href="http://10.10.10.0/24">10.10.10.0/24</a>"</span></div><div style="color:rgb(212,212,212);background-color:rgb(30,30,30);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;line-height:18px;white-space:pre"><span style="color:rgb(206,145,120)"><br></span></div><div style="color:rgb(212,212,212);background-color:rgb(30,30,30);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;line-height:18px;white-space:pre"><div style="line-height:18px"><div><span style="color:rgb(106,153,85)"># accept anything on the loopback interface</span></div><div>iptables -A INPUT -i lo -j ACCEPT</div><br><div><span style="color:rgb(106,153,85)"># drop invalid packets</span></div><div>iptables -A INPUT -m state --state INVALID -j DROP</div><br><div><span style="color:rgb(106,153,85)"># rate-limit repeated new requests from same IP to any ports</span></div><div>iptables -I INPUT -i <span style="color:rgb(156,220,254)">$ETH0ORSIMILAR</span> -m state --state NEW -m recent --set</div><div>iptables -I INPUT -i <span style="color:rgb(156,220,254)">$ETH0ORSIMILAR</span> -m state --state NEW -m recent --update --seconds 60 --hitcount 12 -j DROP</div><div><br></div></div></div></div><div style="line-height:18px"><div style="color:rgb(212,212,212);background-color:rgb(30,30,30);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;line-height:18px;white-space:pre"><div><span style="color:rgb(106,153,85)"># accept IPSec/NAT-T for VPN (ESP not needed with forceencaps, as ESP goes inside UDP)</span></div><div>iptables -A INPUT -p udp --dport 500 -j ACCEPT</div><div>iptables -A INPUT -p udp --dport 4500 -j ACCEPT</div><br><div><span style="color:rgb(106,153,85)"># forward VPN traffic anywhere</span></div><div>iptables -A FORWARD --match policy --pol ipsec --dir <span style="color:rgb(197,134,192)">in</span> --proto esp -s <span style="color:rgb(156,220,254)">$VPNIPPOOL</span> -j ACCEPT</div><div>iptables -A FORWARD --match policy --pol ipsec --dir out --proto esp -d <span style="color:rgb(156,220,254)">$VPNIPPOOL</span> -j ACCEPT</div><br><div><span style="color:rgb(106,153,85)"># reduce MTU/MSS values for dumb VPN clients</span></div><div>iptables -t mangle -A FORWARD --match policy --pol ipsec --dir <span style="color:rgb(197,134,192)">in</span> -s <span style="color:rgb(156,220,254)">$VPNIPPOOL</span> -o <span style="color:rgb(156,220,254)">$ETH0ORSIMILAR</span> -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360</div><br><div><span style="color:rgb(106,153,85)"># masquerade VPN traffic over eth0 etc.</span></div><div>iptables -t nat -A POSTROUTING -s <span style="color:rgb(156,220,254)">$VPNIPPOOL</span> -o <span style="color:rgb(156,220,254)">$ETH0ORSIMILAR</span> -m policy --pol ipsec --dir out -j ACCEPT <span style="color:rgb(106,153,85)"># exempt IPsec traffic from masquerading</span></div><div>iptables -t nat -A POSTROUTING -s <span style="color:rgb(156,220,254)">$VPNIPPOOL</span> -o <span style="color:rgb(156,220,254)">$ETH0ORSIMILAR</span> -j MASQUERADE</div></div></div><div style="line-height:18px"><br></div><div style="line-height:18px">ipsec config:</div><div style="line-height:18px"><div style="line-height:18px"><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)">config setup</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)"> strictcrlpolicy=yes</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)"> uniqueids=never</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)">conn roadwarrior</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)"> auto=add</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)"> compress=no</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)"> type=tunnel</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)"> keyexchange=ikev2</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)"> fragmentation=yes</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)"> forceencaps=yes</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)"> ike=aes256-sha256-ecp521-ecp256-modp4096-modp2048!</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)"> esp=aes256-sha256-sha1-ecp521-ecp256-modp4096-modp2048, aes256-sha256-sha1!</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)"> dpdaction=clear</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)"> dpddelay=180s</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)"> rekey=no</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)"> left=%any</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)"> leftid=@</span><span style="color:rgb(156,220,254)">${VPNHOST}</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)"> leftcert=cert.pem</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)"> leftsendcert=always</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)"> leftsubnet=<a href="http://0.0.0.0/0">0.0.0.0/0</a></span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)"> right=%any</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)"> rightid=%any</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)"> rightauth=eap-radius</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)"> eap_identity=%any</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)"> rightdns=208.67.222.222,208.67.220.220</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)"> rightsourceip=</span><span style="color:rgb(156,220,254)">${VPNIPPOOL}</span></div><div style="color:rgb(212,212,212);font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;white-space:pre;background-color:rgb(30,30,30)"><span style="color:rgb(206,145,120)"> rightsendcert=never</span></div><br>Many Thanks,<br>Houman</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>