<div dir="ltr">Not answering the question here but I just wanted to add that you will need to have `sysctl net.ipv4.ip_forward` enabled as well if not already.<div><br></div><div>Google something like "ip4 forward sysctl"<br></div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Wed, 11 Feb 2026 at 18:54, Alex H. via plug <<a href="mailto:plug@plug.org.au">plug@plug.org.au</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="msg1378638284877991796"><div lang="EN-AU" style="overflow-wrap: break-word;"><div class="m_1378638284877991796WordSection1"><p class="MsoNormal"><span lang="EN-US">Hi all,<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US">Just having some fun with iptables. I am trying to route traffic from AWS(10.0.0.1) to my local server (10.0.0.2) using wireguard. <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US">I have setup a connection on vpn0 on both servers, but I am struggling a little with iptables.<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US">While I am experimenting I setup the following iptables rules using this script on the AWS VPN server. <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">I plan to include some of these inside the wireguard configuration once I have it all working.<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US">root@vpn:~# cat routeTraffic.sh<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">#!/bin/bash<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -F<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -X<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -t nat -F<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -t nat -X<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -t mangle -F<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -t mangle -X<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -P INPUT DROP<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -P OUTPUT DROP<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -P FORWARD ACCEPT<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -A INPUT -i ens5 -p tcp -m tcp --dport 22 -j ACCEPT<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -A INPUT -i vpn0 -p tcp -m tcp --dport 22 -j ACCEPT<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -A INPUT -i ens5 -p tcp -m tcp --dport 25 -j ACCEPT<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -A INPUT -i ens5 -p tcp -m tcp --dport 53 -j ACCEPT<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -A INPUT -i ens5 -p udp -m udp --dport 53 -j ACCEPT<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -A INPUT -i ens5 -p tcp -m tcp --dport 80 -j ACCEPT<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -A INPUT -i ens5 -p tcp -m tcp --dport 443 -j ACCEPT<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -A INPUT -i ens5 -p udp -m udp --dport 55107 -j ACCEPT<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -A INPUT -i vpn0 -p udp -m udp --dport 55107 -j ACCEPT<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -A INPUT -i ens5 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -A OUTPUT -j ACCEPT<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US"># 1. Redirect the incoming packet to the tunnel destination<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -t nat -A PREROUTING -p tcp --dport 53 -j DNAT --to-destination <a href="http://10.0.0.2:53" target="_blank">10.0.0.2:53</a><u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to-destination <a href="http://10.0.0.2:53" target="_blank">10.0.0.2:53</a><u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination <a href="http://10.0.0.2:80" target="_blank">10.0.0.2:80</a><u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination <a href="http://10.0.0.2:443" target="_blank">10.0.0.2:443</a><u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US"># 2. Allow the traffic through via the FORWARD chain<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -A FORWARD -p tcp -d 10.0.0.2 --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -A FORWARD -p udp -d 10.0.0.2 --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -A FORWARD -p tcp -d 10.0.0.2 --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -A FORWARD -p tcp -d 10.0.0.2 --dport 443 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -A FORWARD -j LOG<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US"># 3. Apply Masquerading to ensure return traffic goes back through the server<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">iptables -t nat -A POSTROUTING -o vpn0 -j MASQUERADE<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US"> Initially I had “iptables -P FORWARD DROP” with the hope of adding a white-list of allowed rules. However, this didn’t work. I then added the LOG statement which produces the following:<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US">Feb 11 10:46:19 <a href="http://vpn.host.com" target="_blank">vpn.host.com</a> kernel: IN=vpn0 OUT=ens5 MAC= SRC=10.0.0.2 DST=176.X.X.X LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=0 DF PROTO=TCP SPT=80 DPT=55784 WINDOW=64296 RES=0x00 ACK SYN URGP=0<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">Feb 11 10:46:19 <a href="http://vpn.host.com" target="_blank">vpn.host.com</a> kernel: IN=vpn0 OUT=ens5 MAC= SRC=10.0.0.2 DST=176.X.X.X LEN=52 TOS=0x00 PREC=0x00 TTL=63 ID=42901 DF PROTO=TCP SPT=80 DPT=55784 WINDOW=502 RES=0x00 ACK URGP=0<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">Feb 11 10:46:19 <a href="http://vpn.host.com" target="_blank">vpn.host.com</a> kernel: IN=vpn0 OUT=ens5 MAC= SRC=10.0.0.2 DST=176.X.X.X LEN=2788 TOS=0x00 PREC=0x00 TTL=63 ID=42902 DF PROTO=TCP SPT=80 DPT=55784 WINDOW=502 RES=0x00 ACK PSH URGP=0<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">Feb 11 10:46:19 <a href="http://vpn.host.com" target="_blank">vpn.host.com</a> kernel: IN=vpn0 OUT=ens5 MAC= SRC=10.0.0.2 DST=176.X.X.X LEN=2788 TOS=0x00 PREC=0x00 TTL=63 ID=42904 DF PROTO=TCP SPT=80 DPT=55784 WINDOW=502 RES=0x00 ACK PSH URGP=0<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">Feb 11 10:46:38 <a href="http://vpn.host.com" target="_blank">vpn.host.com</a> kernel: IN=vpn0 OUT=ens5 MAC= SRC=10.0.0.2 DST=176.X.Y.Y LEN=52 TOS=0x00 PREC=0x00 TTL=63 ID=0 DF PROTO=TCP SPT=443 DPT=59476 WINDOW=64860 RES=0x00 ACK SYN URGP=0<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US">Any suggestions on what FORWARD rule I need to add for this to work with FORWARD DROP ? It looks like these are the response packets which come from VPN0 and are going back to the internet on ENS5. I though the “NEW,ESTABLISHED,RELATED” statement would handle these as they are part of the response in return an accepted request.<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US">Any thought or suggestions would be most helpful.<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">Kind regards<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">Alex<u></u><u></u></span></p></div></div>_______________________________________________<br>
PLUG discussion list: <a href="mailto:plug@plug.org.au" target="_blank">plug@plug.org.au</a><br>
<a href="https://lists.plug.org.au/mailman/listinfo/plug" rel="noreferrer" target="_blank">https://lists.plug.org.au/mailman/listinfo/plug</a><br>
Committee e-mail: <a href="mailto:committee@plug.org.au" target="_blank">committee@plug.org.au</a><br>
PLUG Membership: <a href="http://www.plug.org.au/membership" rel="noreferrer" target="_blank">http://www.plug.org.au/membership</a><br>
</div></blockquote></div>