投げ銭

★当サイトへの投げ銭(PayPal)★

LINK


(無償)
logo
世界中で使われるISO標準オフィスソフト(MSオフィス互換)
The Document Foundation Wiki

人気の投稿(1ヶ月間)

Ad

Ad

投げ銭

★当サイトへの投げ銭(PayPal)★
ラベル Linux ネットワーク の投稿を表示しています。 すべての投稿を表示
ラベル Linux ネットワーク の投稿を表示しています。 すべての投稿を表示

2018年9月16日日曜日

【Linux CentOS 7】特定のパケットのみ別のルーティングテーブルを用いて転送する方法(ポリシールーティング)


IPパケットルーターとして動作しているLinuxマシンにおいて、
到達した特定のパケットのみを、異なるルーティングルールに基づいて、
別のデフォルトゲートウェイへ転送させる。(ポリシールーティング)

次のような処理で上記の動作は可能である。

1、特定のパケットをマークして識別可能にする。
2、マークされたパケットを指定したルーティングテーブルで処理する。



例えば、特定の送信元からのパケットのみ、指定したデフォルトゲートウェイを使うようにできる。

まず、最初、次の通常のデフォルトルートに従って、
192.168.100.0/24からのパケットが、192.168.0.1をゲートウェイとして、
192.168.200.0/24へ流れるようになっているものとする。

○通常のデフォルトルート設定
# ip route add default via 192.168.0.1 dev eth0

# ip route list
default via 192.168.0.1 dev eth0 proto static metric 100

そして、以下の設定を加えることによって、
さきのパケットのみ、別のデフォルトルートへ流れるようにする。


■新しいルーティングテーブルの編集

新しいテーブル101上にデフォルトルート設定

# ip route add default via 192.168.9.1 dev eth9 table 101

(ここで、同様にしてその他のネットワークへのルートを設定することもできる。)

登録したルートを確認

# ip route list table 101
default dev eth9 scope link


■マークされたパケットと作成したルーティングテーブルの関連付け

101(=0x65)でマークされたパケットが、作成済みルーティングテーブル101を使って、
ルーティング処理を行われるようにルール作成

# ip rule add fwmark 101 table 101

# ip rule list
0: from all lookup local
32765: from all fwmark 0x65 lookup 101
32766: from all lookup main
32767: from all lookup default

■作成したルーティングテーブルを用いて処理したいパケットの識別

ルーティング前の対象のパケットに対して、101をマークしている。
このマークはカーネル内で有効な情報である。

# iptables -t mangle -A PREROUTING -s 192.168.100.0/24 -d 192.168.200.0/24 -j MARK --set-mark 101

# iptables -t mangle -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination       
MARK       all  --  192.168.100.0/24     192.168.200.0/24   MARK set 0x65
Chain INPUT (policy ACCEPT)
target     prot opt source               destination       
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination       
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination       
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination


変更に伴って、FORWARDのフィルタも適切に変更しておくこと。

これで、他のパケットがデフォルトゲートウェイ 192.168.0.1 へ流れる一方で、
この対象パケットのみデフォルトゲートウェイ 192.168.9.1 へ流れるようになる。

以上

2016年11月17日木曜日

【Linux CentOS 7 64bit】WIFI接続の設定方法(コマンドラインで「nmcli」を使用する。)

2017年4月6日 補足追加


☆有線LAN接続の場合は、「【Linux CentOS 7 64bit】コマンドラインから有線LAN接続を開始する方法」を参照



CentOS 7(1511)64bitのminimalインストール(+ MATE)では、初期状態ではwifiを扱えなかった。

以下では、上記のCentOS 7 システムにおいてネットワークマネージャーをWifiに対応させる設定、
そして、Wifiアクセスポイントに接続する設定について記述している。



□設定前の状況を調べた。

ネットワーク接続情報を表示させた。私の環境では「wlp4s0」がWifiデバイスだった。
# nmcli d
デバイス  タイプ    状態      接続
enp5s0    ethernet  接続済み  enp5s0
lo        loopback  管理無し  --  
wlp4s0    wifi      管理無し  -- 

下記コマンドでは、wifiは「有効」にはなっている。
# nmcli radio wifi
有効
設定前のネットワークマネージャーの状態を表示させた。
# systemctl status NetworkManager.service
NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
   Active: active (running) since 水 2016-11-16 21:22:27 JST; 1h 30min ago
 Main PID: 668 (NetworkManager)
   CGroup: /system.slice/NetworkManager.service
           ├─ 668 /usr/sbin/NetworkManager --no-daemon
           └─3891 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-enp5s0.pid -lf /var/lib/NetworkManager/dhclient-56655424-ed3c-xxxx-yyyy-...
11月 16 21:52:19 localhost.localdomain dhclient[3891]: DHCPACK from 192.168.1.1 (xid=0x35bfe30f)
11月 16 21:52:19 localhost.localdomain NetworkManager[668]: <info>    address 192.168.1.4
11月 16 21:52:19 localhost.localdomain NetworkManager[668]: <info>    plen 24 (255.255.255.0)
11月 16 21:52:19 localhost.localdomain NetworkManager[668]: <info>    gateway 192.168.1.1
11月 16 21:52:19 localhost.localdomain NetworkManager[668]: <info>    server identifier 192.168.1.1
11月 16 21:52:19 localhost.localdomain NetworkManager[668]: <info>    lease time 259200
11月 16 21:52:19 localhost.localdomain NetworkManager[668]: <info>    nameserver '192.168.1.129'
11月 16 21:52:19 localhost.localdomain NetworkManager[668]: <info>  (enp5s0): DHCPv4 state changed unknown -> bound
11月 16 21:52:19 localhost.localdomain dhclient[3891]: bound to 192.168.1.4 -- renewal in 118396 seconds.
11月 16 21:52:19 localhost.localdomain NetworkManager[668]: <info>  Policy set 'enp5s0' (enp5s0) as default for IPv4 routing and DNS.


■ネットワークマネージャーがwifiを扱えるように設定する。


○wifi用プラグインパッケージの情報を表示させた。

下記コマンドで確認してみてパッケージ(NetworkManager-wifi)がインストールされていない場合、
有線ネットワークなど別の経路でインターネットに接続する必要がある。
(インストール済みの場合は、下記リポジトリーで「installed」と示される。)

# yum info NetworkManager-wifi
名前                : NetworkManager-wifi
アーキテクチャー    : x86_64
エポック            : 1
バージョン          : 1.0.6
リリース            : 31.el7_2
容量                : 160 k
リポジトリー        : updates/7/x86_64
要約                : Wifi plugin for NetworkManager
URL                 : http://www.gnome.org/projects/NetworkManager/
ライセンス          : GPLv2+
説明                : This package contains NetworkManager support for Wifi and OLPC devices.

☆wifi用プラグインパッケージのインストールを行った。
# yum install NetworkManager-wifi
総ダウンロード容量: 160 k
インストール容量: 115 k
Is this ok [y/d/N]: y
インストール:
  NetworkManager-wifi.x86_64 1:1.0.6-31.el7_2                                                                
完了しました!

☆NetworkManagerサービスを再起動した。
# systemctl restart NetworkManager.service


これによって、デスクトップ環境のLAN接続アイコンから表示されるウィンドウに、
wifiに関する情報が表示されるようになった。

また、次のコマンドで周辺のwifi情報(SSID、モード、チャネル、電波強度、セキュリティー)を取得できた。

# nmcli dev wifi list
*  SSID               モード    CHAN  レート     信号  バー  セキュリティ
   <xxxxxxxxx>      インフラ  6     54 Mbit/s  84    ▂▄▆█  WPA2      
   <xxxxxxxxx>      インフラ  5     54 Mbit/s  39    ▂▄__  WPA1 WPA2  
   <xxxxxxxxx>      インフラ  1     54 Mbit/s  35    ▂▄__  WPA1 WPA2  
   <xxxxxxxxx>      インフラ  11    54 Mbit/s  37    ▂▄__  WPA2      
   <xxxxxxxxx>      インフラ  7     54 Mbit/s  37    ▂▄__  WEP        
   <xxxxxxxxx>      インフラ  11    54 Mbit/s  39    ▂▄__  WPA1 WPA2  
   <xxxxxxxxx>      インフラ  1     54 Mbit/s  37    ▂▄__  WPA1      
   <xxxxxxxxx>      インフラ  5     54 Mbit/s  35    ▂▄__  WPA2      
   <xxxxxxxxx>      インフラ  7     54 Mbit/s  34    ▂▄__  WEP        
   <xxxxxxxxx>      インフラ  6     54 Mbit/s  35    ▂▄__  --        
   <xxxxxxxxx>      インフラ  7     54 Mbit/s  35    ▂▄__  WPA1 WPA2  
   <xxxxxxxxx>      インフラ  1     54 Mbit/s  35    ▂▄__  WPA2      
   <xxxxxxxxx>      インフラ  11    54 Mbit/s  35    ▂▄__  WPA2      
   <xxxxxxxxx>      インフラ  6     54 Mbit/s  35    ▂▄__  WPA1 WPA2

下記のように、ネットワークマネージャーがwifiインターフェイス「wlp40s」を扱っていることがわかる。

# systemctl status NetworkManager.service
NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
   Active: active (running) since 水 2016-11-16 22:53:33 JST; 3min 35s ago
 Main PID: 5683 (NetworkManager)
   CGroup: /system.slice/NetworkManager.service
           ├─5683 /usr/sbin/NetworkManager --no-daemon
           └─5696 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-enp5s0.pid -lf /var/lib/NetworkManager/dhclient-56655424-ed3c-xxxx-yyyy-...
11月 16 22:53:34 localhost.localdomain NetworkManager[5683]: <info>  startup complete
11月 16 22:53:34 localhost.localdomain NetworkManager[5683]: <info>  (enp5s0): device state change: ip-config -> ip-check (reason 'none') [70 80 0]
11月 16 22:53:34 localhost.localdomain dhclient[5696]: bound to 192.168.1.4 -- renewal in 111153 seconds.
11月 16 22:53:34 localhost.localdomain NetworkManager[5683]: <info>  (enp5s0): device state change: ip-check -> secondaries (reason 'none') [80 90 0]
11月 16 22:53:34 localhost.localdomain NetworkManager[5683]: <info>  (enp5s0): device state change: secondaries -> activated (reason 'none') [90 100 0]
11月 16 22:53:34 localhost.localdomain NetworkManager[5683]: <info>  NetworkManager state is now CONNECTED_GLOBAL
11月 16 22:53:34 localhost.localdomain NetworkManager[5683]: <info>  NetworkManager state is now CONNECTED_SITE
11月 16 22:53:34 localhost.localdomain NetworkManager[5683]: <info>  NetworkManager state is now CONNECTED_GLOBAL
11月 16 22:53:34 localhost.localdomain NetworkManager[5683]: <info>  (enp5s0): Activation: successful, device activated.
11月 16 22:53:34 localhost.localdomain NetworkManager[5683]: <info>  (wlp4s0): supplicant interface state: ready -> inactive



■Wifiアクセスポイントに接続するための設定を行った。

☆nmcliを使って接続情報を作成した。

(ポイント)
con-name に指定するのは、接続名なので任意の名前である。後の設定でよく参照する。
ifname に指定するのは、デバイス名で、最初の手順「nmcli d」で調べた名前である。
ここでは両者で同じ名称を用いている。

# nmcli con add con-name wlp4s0 ifname wlp4s0 type wifi ssid xxxxxxxxxx
接続 'wlp4s0' (<UUID略>) が正常に追加されました。

○作成された接続情報を確認した。
# cat /etc/sysconfig/network-scripts/ifcfg-wlp4s0 
ESSID="xxxxxxxxxx"
MODE=Managed
TYPE=Wireless
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=wlp4s0
UUID=<UUID略>
DEVICE=wlp4s0
ONBOOT=yes

○接続テスト1(必要な情報が不足しているので、失敗した。)
# nmcli con up wlp4s0
エラー: 接続のアクティベートに失敗しました。

☆接続情報に、セキュリティーモードを追加した。
# nmcli con modify wlp4s0 wifi-sec.key-mgmt wpa-psk

○接続テスト2(必要な情報が不足しているので、失敗した。)
# nmcli con up wlp4s0
ワイヤレスネットワーク 'xxxxxxxxxx' へのアクセスにはパスワードまたは暗号キーが必要です。
Warning: password for '802-11-wireless-security.psk' not given in 'passwd-file' and nmcli cannot ask without '--ask' option.
エラー: 接続のアクティベートに失敗しました。

☆接続情報に、パスワードを追加した。
# nmcli con modify wlp4s0 wifi-sec.psk WIFIpassword

☆接続(成功)
# nmcli con up wlp4s0
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/4)

これで、システムの再起動後でも、上記で設定したwifi接続が自動的に行われた。
(ただし、ONBOOT=yesになっている必要がある。)


○切断するには接続名を与えて次のコマンドを使う。
# nmcli con down wlp4s0
Connection 'wlp4s0' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
<完了>



□さらに見てみる。

○接続情報を確認した。(WIFIパスワードはここには保存されていなかった。)
# cat /etc/sysconfig/network-scripts/ifcfg-wlp4s0 
ESSID="xxxxxxxxxx"
MODE=Managed
TYPE=Wireless
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=wlp4s0
UUID=<UUID略>
DEVICE=wlp4s0
ONBOOT=yes
KEY_MGMT=WPA-PSK
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

○wpa_supplicantというサービスが動作していた。
# systemctl status wpa_supplicant.service
wpa_supplicant.service - WPA Supplicant daemon
   Loaded: loaded (/usr/lib/systemd/system/wpa_supplicant.service; disabled; vendor preset: disabled)
   Active: active (running) since 水 2016-11-16 23:53:30 JST; 50min ago
 Main PID: 699 (wpa_supplicant)
   CGroup: /system.slice/wpa_supplicant.service
           └─699 /usr/sbin/wpa_supplicant -u -f /var/log/wpa_supplicant.log -c /etc/wpa_supplicant/wpa_supplicant.conf -u -f /var/log/wpa_supplicant.log -P /var/run/...
11月 16 23:53:30 localhost.localdomain systemd[1]: Starting WPA Supplicant daemon...
11月 16 23:53:30 localhost.localdomain systemd[1]: Started WPA Supplicant daemon.

○テスト(wpa_supplicantサービスを停止してみた。)
# systemctl stop wpa_supplicant.service

すると、Wifi接続が切断されたが、しかしすぐに自動的に再接続された。

このとき、wpa_supplicantというサービスも自動的に再開された。
# systemctl status wpa_supplicant.service
wpa_supplicant.service - WPA Supplicant daemon
   Loaded: loaded (/usr/lib/systemd/system/wpa_supplicant.service; disabled; vendor preset: disabled)
   Active: active (running) since 木 2016-11-17 00:44:31 JST; 5s ago
 Main PID: 4217 (wpa_supplicant)
   CGroup: /system.slice/wpa_supplicant.service
           └─4217 /usr/sbin/wpa_supplicant -u -f /var/log/wpa_supplicant.log -c /etc/wpa_supplicant/wpa_supplicant.conf -u -f /var/log/wpa_supplicant.log -P /var/run...
11月 17 00:44:31 localhost.localdomain systemd[1]: Starting WPA Supplicant daemon...
11月 17 00:44:31 localhost.localdomain systemd[1]: Started WPA Supplicant daemon.

この情報から、ログファイルが、/var/log/wpa_supplicant.log であることがわかった。





<参考>
・2.3. USING THE NETWORKMANAGER COMMAND LINE TOOL, NMCLI
< https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/sec-Using_the_NetworkManager_Command_Line_Tool_nmcli.html > 2016年11月16日

・Re: CentOS 7 and NetworkManager-gnome package
< https://mail.gnome.org/archives/networkmanager-list/2015-October/msg00022.html > 2016年11月16日

・NetworkManager / Wireless On Latest CentOS7 Installs
< http://centosfaq.org/centos/networkmanager-wireless-on-latest-centos7-installs/ > 2016年11月16日

・CentOS7 で nmcli を使ったWiFi接続できた
< https://papairoiro.blogspot.jp/2015/08/centos7-nmcli-wifi-nuc5ppyh.html > 2016年11月14日

・CentOS7でステルスSSIDへ接続する方法
< http://qiita.com/vuyuky/items/64e8fdd11e3f7ceaa49c > 2016年11月14日

2016年11月15日火曜日

【Linux CentOS 7 64bit】有線LAN接続をコマンドラインから開始する方法

☆WIFI接続を使用する方法は「【Linux CentOS 7 64bit】WIFI接続の設定方法(コマンドラインで「nmcli」を使用する。)」を参照



■有線LAN接続を有効にしてDHCPでIPアドレスを取得した。

有線LANケーブルをPCのLANポートに繋げた後、次の操作を行った。

○接続状態を確認した。
# nmcli d
デバイス  タイプ    状態      接続
enp5s0    ethernet  切断済み  --
lo        loopback  管理無し  --
wlp4s0    wifi      管理無し  --
LANポートは上記のenp5s0というデバイス名で識別されているが、まだ接続されていない。


enp5s0をイーサネットで接続するための基本形を作成した。

○基本型の作成を行った。
設定するデバイス(ifname)は enp5s0 である。
接続名称(con-name)は enp5s0 にした。(任意の名称)

nmcli con add type ethernet con-name enp5s0 ifname enp5s0

○システム起動時に自動的に接続するように設定した。
(複数NICで運用している場合、この設定を忘れがちになるので注意。そのとき、他の有効なNICからパケットが飛ぶことになり、うまく通信できない問題が発生し難儀する。)

nmcli con mod enp5s0 connection.autoconnect yes


◯接続の設定を行った。(DHCPでIPv4アドレスを自動取得)(固定アドレスはこちらを参照
# nmcli con mod enp5s0 ipv4.method auto

○接続を開始した。
# nmcli con down enp5s0
# nmcli con up enp5s0
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/1)
(注意)このようにして接続を開始できるのは、最初から既に、
「/etc/sysconfig/network-scripts/ifcfg-enp5s0」として設定ファイルが存在しているからである。

デバイス名「enp5s0」と接続情報「enp5s0」は同じものではない。
例えば、デバイス名「enp5s0」に対してそれを利用する任意の名前の接続情報を作成することも可能である。
この作成も「nmcli」コマンドの別のオプションで行う。
次のページを参照してください。
http://akira-arets.blogspot.com/2018/04/linux-centos7-networksetting-nmcli.html
(■eth0をイーサネットで接続するための基本形を作成した。)


○DHCPで取得されたIPアドレスを確認した。
# ip a
<略>
○接続状態を確認した。
# nmcli d
デバイス  タイプ    状態      接続
enp5s0    ethernet  接続済み  enp5s0 
lo        loopback  管理無し  --  
wlp4s0    wifi      管理無し  --     

以上の手順では、システムが再起動時にも接続は自動的に開始されない。
次の方法で、ネットワークサービスの起動時に接続を自動的に開始するように設定する必要がある



■システムの起動に際して自動的にLAN接続が開始されるようにした。

下記のように、ONBOOT設定がnoになっていることがわかる。
これではネットワークサービス起動時にこのLAN接続は自動起動しない。

# cat /etc/sysconfig/network-scripts/ifcfg-enp5s0
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=enp5s0
UUID=<略>
DEVICE=enp5s0
ONBOOT=no

○ネットワークサービス開始時に自動起動するようにした。

# nmcli con mod enp5s0 connection.autoconnect yes

下記のように、ONBOOT項目がyesに書き変わった。

# cat /etc/sysconfig/network-scripts/ifcfg-enp5s0
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=enp5s0
UUID=<略>
DEVICE=enp5s0
ONBOOT=yes
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes


新品価格
¥1,254から
(2018/4/24 04:51時点)

投げ銭

★当サイトへの投げ銭(PayPal)★

Ad

Ad