OpenVPN and NAT

在公司用 OpenSuSE 架設了一個 OpenVPN Server
做好之後,發現從家裡除了 VPN Server 之外
其他與 VPN Server 同一網段的機器都連不上
後來發現,原來還需要設定 NAT!
首先編輯 NAT 設定擋

$ vi /root/openvpn_nat.sh
#! /bin/bash

# 清除所有規則
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -Z

# 定義防火牆政策
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT

# 讓 OpenVPN 能進去 LAN
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE

測試OK,其他的機器都可以連上了!
接下來更改設定擋,以後不需要在手動啟動了

$ vi /etc/init.d/boot.local
# NAT for OpenVPN
/root/openvpn_nat.sh

重新開機後,測試OK!
搞定,收工!

Upgrade OpenSuSE 12.1 to 12.2

最近這幾次升級 OpenSuSE 時都遇到一些問題
不過還好都有順利解決
這次仍然使用 command line 的 方式

$ zypper modifyrepo --all --disable
$ zypper addrepo --name "openSUSE-12.2-OSS" http://download.opensuse.org/distribution/12.2/repo/oss/ repo-12.2-oss
$ zypper addrepo --name "openSUSE-12.2-Non-Oss" http://download.opensuse.org/distribution/12.2/repo/non-oss/ repo-12.2-non-oss
$ zypper addrepo --refresh --name "openSUSE-12.2 Update-Oss" http://download.opensuse.org/update/12.2/ repo-12.2-update
$ zypper addrepo --refresh --name "openSUSE-12.2-Update-Non-Oss" http://download.opensuse.org/update/12.2-non-oss/ repo-12.2-non-oss-update
$ zypper dup --download "in-advance"

經過漫長下載與安裝後,重新開機…. 但是
居然 GRUB 開機失敗!
錯誤訊息:

....
Kernel (hd0,0)/grub2/core.img root=/dev/system/root resume=/dev/system/swap splash=silent quiet showopts vga=0x31a
Error 15: File not found
Press any key to continue...

似乎是從 GRUB 到 GRUB2 升級失敗?
後來發現 /grub2/core.img 這路徑不對,應該是 /grub2/i386-pc/core.img 才對

先進到 GRUB 將啟動參數路徑修改正確 press “e”

Kernel (hd0,0)/grub2/i386-pc/core.img root=/dev/system/root resume=/dev/system/swap splash=silent quiet showopts vga=0x31a

and than press “b” to boot:
結果,似乎只將 GRUB2 啟動,OpenSuSE 沒動靜??
只好 press “c” 進到命令列,手動啟動 OpenSuSE

> linux /boot/vmlinuz-...[press TAB] ro root=/dev/system/root
> initrd /boot/initrd-...[press TAB]
> boot

好耶,OpenSuSE 12.1 順利啟動!
立刻進到 YaST 看看 bootloader 的設定
發先仍是 GRUB
將他改成 GRUB2 ,儲存,重新開機後 OK 了!

Oh no! Something has gone wrong.

今天發現 OpenSuSE 12.1 有一些更新,其中包含 Nvidia Driver 的更新
做完更新,重新開機後,發現無法 login 進 GNOME 了
會出現 : “Oh no! Something has gone wrong.” 並要求 logout 的訊息
做了很多嘗試後發現:

1. 重新安裝 GNOME 沒用
2. NIS Account 才會有這問題
3. Local Account and root 不會有這問題

後來查 ~/.xsession-errors 發現

NVIDIA: could not open the device file /dev/nvidiactl (Permission denied).

檢查 Nvidia Driver 的屬性發現

crw-rw---- 1 root video 195,   0  2月  1 15:42 /dev/nvidia0
crw-rw---- 1 root video 195, 255  2月  1 15:42 /dev/nvidiactl

嗯,只有 root 以及 video group 的 account 才能使用 Nvidia Driver
難怪 NIS account 無法使用
既然如此,就用最簡單的方法:改變 driver 的屬性

% chmod 0666 /dev/nvidia*

結果:沒用!Nvidia Driver 的屬性 又自動變回來了,真是奇怪!

換另外一招,手動編輯 /etc/group ,將NIS Account 都加進 video group 裡

% vi /etc/group 
...
video:x:33:xxx,...,NIS_Users...
...

結果:OK! yes!
搞定,收工….