Skip to content

Commit

Permalink
selftests: netfilter: extend flowtable test script with dnat rule
Browse files Browse the repository at this point in the history
NAT test currently covers snat (masquerade) only.

Also add a dnat rule and then check that a connecting to the
to-be-dnated address will work.

Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  • Loading branch information
Florian Westphal authored and Pablo Neira Ayuso committed Dec 20, 2019
1 parent c9b3b82 commit d05d5db
Showing 1 changed file with 34 additions and 5 deletions.
39 changes: 34 additions & 5 deletions tools/testing/selftests/netfilter/nft_flowtable.sh
Original file line number Diff line number Diff line change
Expand Up @@ -226,17 +226,19 @@ check_transfer()
return 0
}

test_tcp_forwarding()
test_tcp_forwarding_ip()
{
local nsa=$1
local nsb=$2
local dstip=$3
local dstport=$4
local lret=0

ip netns exec $nsb nc -w 5 -l -p 12345 < "$ns2in" > "$ns2out" &
lpid=$!

sleep 1
ip netns exec $nsa nc -w 4 10.0.2.99 12345 < "$ns1in" > "$ns1out" &
ip netns exec $nsa nc -w 4 "$dstip" "$dstport" < "$ns1in" > "$ns1out" &
cpid=$!

sleep 3
Expand All @@ -258,6 +260,28 @@ test_tcp_forwarding()
return $lret
}

test_tcp_forwarding()
{
test_tcp_forwarding_ip "$1" "$2" 10.0.2.99 12345

return $?
}

test_tcp_forwarding_nat()
{
local lret

test_tcp_forwarding_ip "$1" "$2" 10.0.2.99 12345
lret=$?

if [ $lret -eq 0 ] ; then
test_tcp_forwarding_ip "$1" "$2" 10.6.6.6 1666
lret=$?
fi

return $lret
}

make_file "$ns1in" "ns1"
make_file "$ns2in" "ns2"

Expand All @@ -283,14 +307,19 @@ ip -net ns2 route add 192.168.10.1 via 10.0.2.1
# Same, but with NAT enabled.
ip netns exec nsr1 nft -f - <<EOF
table ip nat {
chain prerouting {
type nat hook prerouting priority 0; policy accept;
meta iif "veth0" ip daddr 10.6.6.6 tcp dport 1666 counter dnat ip to 10.0.2.99:12345
}
chain postrouting {
type nat hook postrouting priority 0; policy accept;
meta oifname "veth1" masquerade
meta oifname "veth1" counter masquerade
}
}
EOF

test_tcp_forwarding ns1 ns2
test_tcp_forwarding_nat ns1 ns2

if [ $? -eq 0 ] ;then
echo "PASS: flow offloaded for ns1/ns2 with NAT"
Expand All @@ -313,7 +342,7 @@ fi
ip netns exec ns1 sysctl net.ipv4.ip_no_pmtu_disc=0 > /dev/null
ip netns exec ns2 sysctl net.ipv4.ip_no_pmtu_disc=0 > /dev/null

test_tcp_forwarding ns1 ns2
test_tcp_forwarding_nat ns1 ns2
if [ $? -eq 0 ] ;then
echo "PASS: flow offloaded for ns1/ns2 with NAT and pmtu discovery"
else
Expand Down

0 comments on commit d05d5db

Please sign in to comment.