カテゴリー : Network

CentOS 6 で Reverse Path Filtering (rp_filter) を無効にする方法

CentOS 6 で Reverse Path Filtering (rp_filter) を無効にする方法は以下の通り。

/etc/sysctl.conf を修正

net.ipv4.conf.default.rp_filter = 0

これが有効( = 1 )になっていると、Linuxルーターを複数台使ってルーティングさせる場合
経由するLinuxルーターのルーティングテーブルとは逆方向だとみなされるパケットが破棄されてしまう。

例えば、経由するLinuxルーターが保持しないネットワークを送信元としたパケットが
デフォルトルート側から転送されてきた場合に、パケットが破棄されてしまう。

環境:
CentOS 6.3 (x86_64)

CentOS の ルーティングテーブルから 169.254.0.0 を削除する方法

CentOS の ルーティングテーブルから 169.254.0.0 を削除する方法は以下の通り。

1. /etc/sysconfig/network に以下の一行を追加

NOZEROCONF=yes

2. ネットワークの再起動

# /etc/init.d/network restart

(設定前)

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.100.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
0.0.0.0         192.168.100.1   0.0.0.0         UG    0      0        0 eth0

(設定後)

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.100.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         192.168.100.1   0.0.0.0         UG    0      0        0 eth0

pppoe-serverでLAN型払い出しサービスを模擬するスクリプト

pppoe-serverでLAN型払い出しサービスを模擬するスクリプト

1. /etc/ppp/route.list を作成

# REMOTE_IP  PREFIX
172.17.1.254 24
172.17.2.254 24
172.17.3.254 24

2. /etc/ppp/ip-up.local を作成

#!/bin/sh

PPP_IF=$1
REMOTE_ADDR=$5
ROUTE_LIST=/etc/ppp/route.list
LOG_FILE=/var/log/pppoe_route.log
LANG=C
CUR_MONTH=$( date +%b )
CUR_DATE=$( date +%d )
CUR_TIME=$( date +%H:%M:%S )
NOW="${CUR_MONTH} ${CUR_DATE} ${CUR_TIME}"

if [ ! -f "${ROUTE_LIST}" ];then
   echo "${NOW} No such file: ${ROUTE_LIST}" >> ${LOG_FILE}
   exit 0
fi

while read list
do
   echo ${list} | grep ^[1-9] > /dev/null
   if [ $? -eq 0 ];then
      GET_ADDR=$( echo ${list} | awk '{ print $1 }' )
      if [ "${REMOTE_ADDR}" = "${GET_ADDR}" ];then
         PREFIX=$( echo ${list} | awk '{ print $2 }' )
         if [ "${PREFIX}" -lt 32 ];then
            NETWORK=$( ipcalc ${GET_ADDR}/${PREFIX} -n | awk -F'=' '{ print $2}' )
            echo "${NOW} ADD ${NETWORK}/${PREFIX} gw ${PPP_IF}" >> ${LOG_FILE}
            route add -net ${NETWORK}/${PREFIX} dev ${PPP_IF} > /dev/null
         fi
      fi
   fi
done<${ROUTE_LIST}

3. /etc/ppp/ip-down.local を作成

#!/bin/sh

PPP_IF=$1
REMOTE_ADDR=$5
ROUTE_LIST=/etc/ppp/route.list
LOG_FILE=/var/log/pppoe_route.log
LANG=C
CUR_MONTH=$( date +%b )
CUR_DATE=$( date +%d )
CUR_TIME=$( date +%H:%M:%S )
NOW="${CUR_MONTH} ${CUR_DATE} ${CUR_TIME}"

if [ ! -f "${ROUTE_LIST}" ];then
   echo "${NOW} No such file: ${ROUTE_LIST}" >> ${LOG_FILE}
   exit 0
fi

while read list
do
   echo ${list} | grep ^[1-9] > /dev/null
   if [ $? -eq 0 ];then
      GET_ADDR=$( echo ${list} | awk '{ print $1 }' )
      if [ "${REMOTE_ADDR}" = "${GET_ADDR}" ];then
         PREFIX=$( echo ${list} | awk '{ print $2 }' )
         if [ "${PREFIX}" -lt 32 ];then
            NETWORK=$( ipcalc ${GET_ADDR}/${PREFIX} -n | awk -F'=' '{ print $2}' )
            echo "${NOW} DELETE ${NETWORK}/${PREFIX} gw ${PPP_IF}" >> ${LOG_FILE}
            route del -net ${NETWORK}/${PREFIX} dev ${PPP_IF} > /dev/null
         fi
      fi
   fi
done<${ROUTE_LIST}

4. ip-up.local と ip-down.local に実行権を与える

# chmod +x /etc/ppp/ip-up.local
# chmod +x /etc/ppp/ip-down.local

端末型払い出しのルーティングテーブル

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.16.1.0      0.0.0.0         255.255.255.0   U     0      0        0 ppp0

LAN型払い出しのルーティングテーブル

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.17.1.0      0.0.0.0         255.255.255.0   U     0      0        0 ppp0
172.17.1.254    0.0.0.0         255.255.255.255 UH    0      0        0 ppp0

CentOS 6 に pppoe-server をインストールする方法

CentOS 6 に pppoe-server をインストールする方法は以下の通り。

1. ファイアウォールの無効化

# chkconfig iptables off
# chkconfig ip6tables off

2. /etc/selinux/config の編集(SELinuxの無効化)

SELINUX=disabled

3. /etc/sysctl.conf の編集(ルーティングの有効化)

net.ipv4.ip_forward = 1

4. 再起動

# sync;sync;sync
# reboot

5. パッケージのインストール

# yum -y install ppp rp-pppoe

6. /etc/ppp/pppoe-server-options の編集

require-pap
require-chap
#login
lcp-echo-interval 10
lcp-echo-failure 2

7. /etc/ppp/chap-secrets の編集(chap認証の設定)

papを使う場合は/etc/ppp/pap-secretsを編集する

# Secrets for authentication using CHAP
# client  server  secret  IP addresses
pc1       *       pass1   172.16.1.254
pc2       *       pass2   172.16.2.254
pc3       *       pass3   172.16.3.254
lan1      *       pass1   172.17.1.254
lan2      *       pass2   172.17.2.254
lan3      *       pass3   172.17.3.254

8. /etc/init.d/pppoe-server の編集(起動スクリプトの修正)

pppoe-server起動時に、ローカル側のIPアドレスを指定
(例)eth0で起動し、IPアドレスを172.16.0.1に指定する場合

. /etc/rc.d/init.d/functions
RETVAL=0
prog=pppoe-server
options='-I eth0 -L 172.16.0.1'

pppoe-server起動時に、eth0の設定を消去

start() {
        check
        echo -n $"Starting $prog: "
        /sbin/ifconfig eth0 0.0.0.0 up
        daemon /sbin/$prog ${options}
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
        return $RETVAL
}

pppoe-server停止時に、eth0の設定を復元

stop() {
       check
        echo -n $"Stopping $prog: "
        killproc /sbin/$prog
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog && /sbin/ifup eth0
        return $RETVAL
}

9. pppoe-serverの起動

# /etc/init.d/pppoe-server start

10. pppoe-serverの停止

# /etc/init.d/pppoe-server stop

11. pppoe-serverの状態確認

# /etc/init.d/pppoe-server status

PPPoEクライアントにユーザーIDとパスワードを設定すれば、接続できる。
(例) ユーザーID: pc1 パスワード: pass1

環境:
CentOS 6.3 (x86_64)
ppp-2.4.5-5.el6.x86_64
rp-pppoe-3.10-8.el6.x86_64

### 参考 ###

起動スクリプトを使用しないでpppoe-serverを起動

# ifconfig eth0 0.0.0.0 up
# pppoe-server -I eth0 -L 172.16.0.1

起動スクリプトを使用しないでpppoe-serverを停止

# kill -15 `pidof pppoe-server`
# ifup eth0

起動スクリプトを使用しないでpppoe-serverのPIDを確認

# pidof pppoe-server

CentOS 6 で IPv6 を無効化する方法 その2

前回のCentOS 6 で IPv6 を無効化する方法では、ネットワークの再起動で以下のメッセージが表示される。

# service network restart
インターフェース eth0 を終了中:                            [  OK  ]
ループバックインターフェースを終了中                       [  OK  ]
FATAL: Module off not found.
ループバックインターフェイスを呼び込み中                   [  OK  ]
インターフェース eth0 を活性化中:                          [  OK  ]
FATAL: Module off not found.

次の方法のどちらかの設定であれば、上記メッセージが表示されない。
いずれも /etc/modprobe.d/ipv6_disable.conf を作成して記述する。

install ipv6 /bin/true
install ipv6 /sbin/modprobe -n -i ipv6

環境:
CentOS 6.2 (x86_64)

IPv6 を無効化した環境で Postfix が warning メッセージを出力する

IPv6を無効化した環境の postfix で以下のwarning メッセージが発生した。

# newaliases
newaliases: warning: inet_protocols: IPv6 support is disabled: Address family not supported by protocol
newaliases: warning: inet_protocols: configuring for IPv4 support only
postalias: warning: inet_protocols: IPv6 support is disabled: Address family not supported by protocol
postalias: warning: inet_protocols: configuring for IPv4 support only

/etc/postfix/main.cf を修正すると表示されなくなった。

#inet_protocols = all
inet_protocols = ipv4

環境:
CentOS 6.2 (x86_64)
postfix-2.6.6-2.2.el6_1

CentOS 6 に dynamips-0.2.8RC2 をインストールする方法

CentOS 6 (x86_64) に dynamips-0.2.8RC2 をインストールする方法は以下の通り。

dynamips-0.2.8RC2-1.i386.rpm のインストール確認時に
libpcapがインストールされているにも関わらず、以下のエラーが発生した。

# rpm -i --test dynamips-0.2.8RC2-1.i386.rpm
エラー: 依存性の欠如:
 libpcap.so.0.9 は dynamips-0.2.8RC2-1.i386 に必要とされています

i386 の場合は、dynamips-0.2.8RC2-1.src.rpm から直接作成

# yum -y install libpcap-devel elfutils-libelf-devel-static
# rpmbuild --rebuild dynamips-0.2.8RC2-1.src.rpm

x86_64 の場合は、Makefile を修正する必要あり

# yum -y install libpcap-devel elfutils-libelf-devel-static
# rpm -i dynamips-0.2.8RC2-1.src.rpm
# cd rpmbuild/SOURCES/
# tar zxvf dynamips-0.2.8-RC2.tar.gz
# mv dynamips-0.2.8-RC2.tar.gz dynamips-0.2.8-RC2.tar.gz.org
# vi dynamips-0.2.8-RC2/Makefile

(Makefile修正前)

DYNAMIPS_ARCH?=x86
CFLAGS+=-I/usr/include -I. $(PTHREAD_CFLAGS)
 LIBS=-L/usr/lib -L. -ldl /usr/lib/libelf.a $(PTHREAD_LIBS)
 DESTDIR=/usr

( Makefile修正後)

DYNAMIPS_ARCH?=amd64
CFLAGS+=-I/usr/include -I. $(PTHREAD_CFLAGS)
 LIBS=-L/usr/lib64 -L. -ldl /usr/lib64/libelf.a $(PTHREAD_LIBS)
 DESTDIR=/usr

Makefileを修正したらパッケージ作成

# tar zcvf dynamips-0.2.8-RC2.tar.gz dynamips-0.2.8-RC2/*
# rpmbuild -ba ../SPECS/dynamips.spec

環境:
CentOS 6.2 (i386)
CentOS 6.2 (x86_64)

CentOS 5 で ipv6 を無効にする方法

CentOS 5で ipv6 を無効にする方法は以下の通り。

/etc/modprobe.conf に以下の一行を追加。

install ipv6 /sbin/modprobe -n -i ipv6

参考:

以下の方法ではうまくいかなかった。

/etc/sysconfig/network

NETWORKING_IPV6=no

/etc/sysconfig/network-scripts/ifcfg-eth0

IPV6INIT=no
IPV6_AUTOCONF=no

/etc/modprobe.conf

alias ipv6 off
alias net-pf-10 off

環境:
CentOS 5.7 (x86)

BGP フルルート数を確認する方法

BGPフルルート数を確認する方法は以下の通り。

1. route-server.ip.att.netへtelnet

telnet route-server.ip.att.net

以下のメッセージが表示される

*** route-server.ip.att.net now uses AAA for logins.  Login with
 username "rviews".

2. rviewsユーザでログイン

Username: rviews
route-server>

3. コマンドを実行

route-server>show ip bgp summary

BGP router identifier 12.0.1.28, local AS number 65000
BGP table version is 29870640, main routing table version 29870640
343253 network entries using 41533613 bytes of memory
6301734 path entries using 327690168 bytes of memory
423529/58708 BGP path/bestpath attribute entries using 59294060 bytes of memory
83830 BGP AS-PATH entries using 2198940 bytes of memory
145 BGP community entries using 3480 bytes of memory
0 BGP route-map cache entries using 0 bytes of memory
0 BGP filter-list cache entries using 0 bytes of memory
BGP using 430720261 total bytes of memory
Dampening enabled. 1612 history paths, 1361 dampened paths
BGP activity 3371872/3028619 prefixes, 86814098/80512364 paths, scan interval 60 secs

4. ログアウト

route-server>exit

Cisco ASA5505 から Windows 上の共有フォルダをマウントする方法

Cisco ASA 5505からWindows上の共有フォルダをマウントする方法は以下の通り。

mount <マウントポイント> type cifs
 server <ファイルサーバIPアドレス>
 share <共有名>
 domain <ドメイン名>
 username <ユーザ名>
 password <パスワード>
 status enable

ディレクトリ内の確認

dir <マウントポイント>:

ディレクトリに保存

copy running-config <マウントポイント>:/
TOP

INFORMATION

当サイトは備忘録であり、その内容を保証するものではありません。 当サイトまたはリンク先によるいかなるトラブルや損害に関しても、一切の責任を負いかねます。 当サイトの内容を無断で転用したり、転載する等の行為はおやめください。