2021年05月01日

IPV6サービス 開通 その2

https://qiita.com/kakinaguru_zo/items/2764dd8e83e54a6605f2
https://qiita.com/nishio-dens/items/4bb28574b7d43fd2b3bf
を参考に、iptablesを設定するスクリプトを作成。

systemdに登録して、起動時にキックするように設定。

setup_iptable.sh

#!/bin/bash
#set -x
# Refer : https://qiita.com/kakinaguru_zo/items/2764dd8e83e54a6605f2
BR='スクショのoption peeraddrのアドレスをそのまま書く'
CE='スクショのCEを書く'
IP4='スクショのIPv4アドレスを書く'
PSID='スクショのPSIDを書く'
WAN_DEVICE='`OCUに接続されたネットワークのインターフェース名`
LAN_DEVICE='ローカル・ネットワークのインターフェース名`
LOCAL_SOURCE='fd00::/64' # ローカル・ネットワークのインターフェースのGlobal scope IPv6アドレス
TUNDEV='ip6tnl1' # 新たに作り出すインターフェース名をは好きなように決める
IP4_LOCAL='192.168.X.YY' # ローカル・ネットワークのインターフェースのIPv4アドレス
BK_NUM=63
IP6_MARK='1000'

set_tunnel(){
ip -6 addr add $CE dev $WAN_DEVICE
ip -6 tunnel add $TUNDEV mode ip4ip6 remote $BR local $CE dev $WAN_DEVICE encaplimit none
ip link set dev $TUNDEV mtu 1460
ip link set dev $TUNDEV up

ip -4 route delete default
ip -4 route add default dev $TUNDEV
}

set_iptables_ip4_output(){
iptables -t nat -F

for rule in $( seq 1 ${BK_NUM} ) ; do
mark=$(( $rule + 16 ))
pn=$(( $rule - 1))
portl=$(( $rule * 1024 + $PSID * 16 ))
portr=$(( $portl + 15 ))
iptables -t nat -A PREROUTING -m statistic --mode nth --every $BK_NUM --packet $pn -j MARK --set-mark $mark
iptables -t nat -A OUTPUT -m statistic --mode nth --every $BK_NUM --packet $pn -j MARK --set-mark $mark
iptables -t nat -A POSTROUTING -p icmp -o $TUNDEV -m mark --mark $mark -j SNAT --to $IP4:$portl-$portr
iptables -t nat -A POSTROUTING -p tcp -o $TUNDEV -m mark --mark $mark -j SNAT --to $IP4:$portl-$portr
iptables -t nat -A POSTROUTING -p udp -o $TUNDEV -m mark --mark $mark -j SNAT --to $IP4:$portl-$portr
done

iptables -t mangle -o $TUNDEV --insert FORWARD 1 -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:65495 -j TCPMSS --clamp-mss-to-pmtu

}


set_iptables_ip6_output(){
ip6tables -F

# すべての通信を素通りだと怖いので MARKをつけてLAN内のものからのみ許可する
ip6tables -t nat -A PREROUTING -i $LAN_DEVICE -j MARK --set-mark $IP6_MARK
ip6tables -t filter -A FORWARD -p tcp -m mark --mark $IP6_MARK -j ACCEPT
ip6tables -t filter -A FORWARD -p udp -m mark --mark $IP6_MARK -j ACCEPT
ip6tables -t filter -A FORWARD -m mark --mark $IP6_MARK -j ACCEPT

# SSHはローカルネットワークからのみ許可
ip6tables -A INPUT -p tcp -s $LOCAL_SOURCE --dport 22 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 22 -j DROP

# fd00::/64 宛の通信は全部WANに流す
ip6tables -t nat -A POSTROUTING -s $LOCAL_SOURCE -o $WAN_DEVICE -j MASQUERADE
}

set_iptables_input(){
iptables -t nat -I PREROUTING -i $TUNDEV -p tcp --dport 1504 -j DNAT --to-destination ${IP4_LOCAL}:22
}

set_tunnel
set_iptables_ip4_output
set_iptables_ip6_output

#set_iptables_input

posted by kuma SF-Z at 00:00| Comment(0) | ソフトウェア 修理/改修
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: