58 lines
1.9 KiB
Bash
Executable File
58 lines
1.9 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
if [ "$IFACE" == "clat" ]; then
|
|
echo "clat does not need to configurate again"
|
|
exit 0
|
|
fi
|
|
|
|
# NAT64 - by interface
|
|
nat64_prefix=$(dig +short ipv4only.arpa AAAA | sed 's/c000:a[ab]//' | head -1)
|
|
if [ $? -ne 0 ]; then
|
|
echo "${color_error}dns failed: no request to ipv4only.arpa possible${color_log}"
|
|
exit 1
|
|
fi
|
|
if [ "$nat64_prefix" == "" ]; then
|
|
echo "${color_error}nat64 prefix/subnet unkown${color_log}"
|
|
exit 1
|
|
fi
|
|
echo "setup clat with prefix: $nat64_prefix/64"
|
|
|
|
# namespace setup
|
|
ip netns add clatns
|
|
ip link add name clat type veth peer name to_world
|
|
ip link set up dev clat
|
|
ip link set up dev to_world netns clatns
|
|
|
|
# namespace network
|
|
clat_ll=$(ip -6 address show scope link dev clat | grep -Po 'inet6 \K[0-9a-f:]+')
|
|
internal_ll=$(ip netns exec clatns ip -6 address show scope link dev to_world | grep -Po 'inet6 \K[0-9a-f:]+')
|
|
|
|
v6_address_clat="$(ip r g ${nat64_prefix}0 | grep -Po 'src \K[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:')$(echo $internal_ll | grep -Po 'fe80::\K[0-9a-f:]+')"
|
|
|
|
echo "ipv6 address clat: $v6_address_clat/64"
|
|
ip netns exec clatns ip -6 address add $v6_address_clat/64 dev to_world
|
|
ip netns exec clatns ip -6 route add default via $clat_ll dev to_world
|
|
ip netns exec clatns ip -4 address add 192.0.0.1/30 dev to_world
|
|
|
|
# jool setup
|
|
if ! ip netns exec clatns modprobe jool_siit; then
|
|
echo "${color_error}module jool_siit not found${color_log}"
|
|
ip netns del clatns
|
|
exit 1
|
|
fi
|
|
ip netns exec clatns jool_siit instance add --netfilter --pool6 $nat64_prefix/64
|
|
ip netns exec clatns jool_siit eamt add 192.0.0.2 $v6_address_clat
|
|
|
|
# route ipv6
|
|
echo 1 > /proc/sys/net/ipv6/conf/$IFACE/proxy_ndp
|
|
sysctl -w net.ipv6.conf.all.forwarding=1
|
|
#echo 1 tee /proc/sys/net/ipv6/conf/*/forwarding
|
|
ip -6 neigh add proxy $v6_address_clat dev $IFACE
|
|
ip -6 route add $v6_address_clat/128 via $internal_ll dev clat
|
|
|
|
# route ipv4
|
|
ip -4 address add 192.0.0.2/30 dev clat
|
|
ip -4 route add default via 192.0.0.1 dev clat
|
|
|
|
echo "completed"
|